laowantong / mocodo

Modélisation Conceptuelle de Données. Nickel. Ni souris.
https://www.mocodo.net
MIT License
181 stars 51 forks source link

Utilisation des noms de relation comme nom de champs #109

Closed Guillaume-Petitcollin closed 7 months ago

Guillaume-Petitcollin commented 7 months ago

Lors de la génération du script SQL, lorsque 2 tables sont liées avec une clé étrangère, mocodo utilise le nom du champ cible comme nom de champ source. Il pourrait être opportun d'avoir la possibilité d'utiliser le nom de la relation comme nom de champ source.

Exemple (dans cet exemple le type de données est ignoré)

Mocodo :

VILLE: ID-ville, nom, lat, long
est_dans_pays, 11 VILLE, 0N PAYS
PAYS: ID-pays , code, nom

génère le SQL suivant :

CREATE TABLE PAYS (
  PRIMARY KEY (ID_pays),
  ID_pays VARCHAR(42) NOT NULL,
  code    VARCHAR(42),
  nom     VARCHAR(42)
);

CREATE TABLE VILLE (
  PRIMARY KEY (ID_ville),
  ID_ville VARCHAR(42) NOT NULL,
  nom      VARCHAR(42),
  lat      VARCHAR(42),
  long     VARCHAR(42),
  ID_pays  VARCHAR(42) NOT NULL
);

ALTER TABLE VILLE ADD FOREIGN KEY (ID_pays) REFERENCES pays (ID_pays);

Il faudrait pouvoir optionnellement générer ceci :

CREATE TABLE PAYS (
  PRIMARY KEY (ID_pays),
  ID_pays VARCHAR(42) NOT NULL,
  code    VARCHAR(42),
  nom     VARCHAR(42)
);

CREATE TABLE VILLE (
  PRIMARY KEY (ID_ville),
  ID_ville VARCHAR(42) NOT NULL,
  nom      VARCHAR(42),
  lat      VARCHAR(42),
  long     VARCHAR(42),
  est_dans_pays  VARCHAR(42) NOT NULL
);

ALTER TABLE VILLE ADD FOREIGN KEY (est_dans_pays) REFERENCES PAYS (ID_pays);
laowantong commented 7 months ago

Merci d'avoir pris le temps d'expliquer clairement le problème et la solution attendue.

Pour obtenir le résultat cherché, insérez [-est_dans_pays] entre 0N et PAYS. Voici le MCD corrigé.

Pour comprendre cette syntaxe et voir les autres possibilités relatives aux rôles, consultez la section Préciser le rôle d'une clé étrangère dans la documentation.

Guillaume-Petitcollin commented 7 months ago

Il suffisait donc de... lire la doc. Shame on me, désolé pour le dérangement, et merci pour la réponse.

laowantong commented 7 months ago

Pas de problème, heureux d'avoir répondu à votre besoin. La doc est touffue. Bonne découverte de Mocodo !