Conception des bases de données

5.10. Conception des bases de données#

Lors de la phase de conception, il est courant de représenter graphiquement les relations entre tables avec un grpahe Entité Relation. Voici le graphe entité relation correspondant à l’exemple traité dans ce cours.

../_images/9dc06b14c4a307cc835c2a8d16df49d3795fc7ff712921c99f9a7d7530e48e38.svg

On représente aussi souvent les tables de la façon suivantes.


mocodo_notebook/sandbox_mld.md
  • AUTEUR (IdAuteur, Nom, Prénom, Langue, Date de naissance)

  • CONCERNE (#IdLivre, #IdTheme, IdRelation)

  • ÉCRIT (#IdAuteur, #IdLivre)

  • LANGUE (IdLangue, Langue)

  • LIVRE (IdLivre, Titre, IdAuteur, Année Parution)

  • PARLE (#IdAuteur, #IdLangue)

  • THEME (IdTheme, Theme)

Dans cette représentation, les clés primaires sont soulignées.

On peut aussi représenter le diagramme sql.

Mocodo Err.2 - The file "mocodo_notebook/sandbox.mld.mcd" doesn't exist.

Cette représentation permet aussi de retrouver le schéma sql proposé dans la page précédente.

.open "LIVRES";

CREATE TABLE "AUTEUR" (
  "idauteur" int,
  "nom" text,
  "prénom" text,
  "langue" int,
  "date_de_naissance" date,
  PRIMARY KEY ("idauteur")
);

CREATE TABLE "ÉCRIT" (
  "idauteur" int,
  "idlivre" int,
  PRIMARY KEY ("idauteur", "idlivre"),
  FOREIGN KEY ("idauteur") REFERENCES "AUTEUR" ("idauteur"),
  FOREIGN KEY ("idlivre") REFERENCES "LIVRE" ("idlivre")
);

CREATE TABLE "LIVRE" (
  "idlivre" int,
  "titre" text,
  "idauteur" int,
  "année_parution" int,
  PRIMARY KEY ("idlivre")
);

CREATE TABLE "LANGUE" (
  "idlangue" int,
  "langue" text,
  PRIMARY KEY ("idlangue")
);

CREATE TABLE "PARLE" (
  "idauteur" int,
  "idlangue" int,
  PRIMARY KEY ("idauteur", "idlangue"),
  FOREIGN KEY ("idauteur") REFERENCES "AUTEUR" ("idauteur"),
  FOREIGN KEY ("idlangue") REFERENCES "LANGUE" ("idlangue")
);

CREATE TABLE "THEME" (
  "idtheme" int,
  "theme" text,
  PRIMARY KEY ("idtheme")
);

CREATE TABLE "CONCERNE" (
  "idlivre" int,
  "idtheme" int,
  "idrelation" int,
  PRIMARY KEY ("idlivre", "idtheme"),
  FOREIGN KEY ("idlivre") REFERENCES "LIVRE" ("idlivre"),
  FOREIGN KEY ("idtheme") REFERENCES "THEME" ("idtheme")
);