Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente Prochaine révision Les deux révisions suivantes | ||
intro_histoire_numerique:modele_logique [2020/10/31 11:05] Francesco Beretta [Le modèle logique ou relationnel] |
intro_histoire_numerique:modele_logique [2020/10/31 11:27] Francesco Beretta [Le modèle logique ou relationnel] |
||
---|---|---|---|
Ligne 26: | Ligne 26: | ||
* cet identifiant s'appelle clé primaire, //primary key// | * cet identifiant s'appelle clé primaire, //primary key// | ||
* par convention nous choisissons de nommer cet identifiant avec le nom de la table, précédé de 'pk_', par ex. //pk_person// pour la table ou relation //person//. | * par convention nous choisissons de nommer cet identifiant avec le nom de la table, précédé de 'pk_', par ex. //pk_person// pour la table ou relation //person//. | ||
+ | * les relations de '1 à n' sont exprimées par un report de la clé primaire de la table/classe du côté '1' vers la table/classe du côté 'n' | ||
+ | * la clé primaire (//primary key//) de la table du côté '1' de vient une clé étrangère (//foreign key//) dans la table du côté 'n' | ||
+ | * par convention, les clés primaires sont préfixées par 'fk_' | ||
+ | * les relations de 'n à n' sont exprimées par la création d'une nouvelle table ou relation. | ||
+ | * cette table établit le lien entre les deux classes et exprime leur relation de 'n à n' | ||
+ | * les clés primaires (//primary key//) de chaque table sont reportées et deviennent des clés étrangères (//foreign key//) dans la table relation | ||
+ | * la table relation a le nom de la relation – celui-ci doit donc être unique dans le modèle conceptuel | ||
+ | * pour des raisons pratiques nous ajoutons une clé primaire spécifique pour la table relation sous la forme 'pk_' + nom de la table, par ex. //pk_specializes_tag// pour la table //specializes_tag//. | ||
+ | |||
+ | \\ | ||
+ | |||
+ | Si on applique ces réglès au modèle conceptuel de l'exemple, on obient ces relations (les clés primaires sont en italique, les clés étrangères sont soulignées): | ||
+ | \\ | ||
+ | |||
+ | person(//pk_person//, name, definition, death_date) | ||
+ | \\ | ||
+ | appellation(//pk_appellation//, __pk_person__, name) | ||
+ | \\ | ||
+ | tag(//pk_tag//, name, definition) | ||
+ | \\ | ||
+ | tags(//pk_tags//, __fk_person__, __fk_tag__) | ||
+ | \\ | ||
+ | specializes_tag(//pk_specializes_tag//, __fk_specializes_tag__) | ||
+ | \\ | ||
+ | pursuit(//pk_pursuit//, __fk_person__, __fk_occupation__, begin_date, end_date) | ||
+ | \\ | ||
+ | occupation(//pk_occupation//, name, definition) | ||
+ | \\ | ||
+ | specializes_occupation(//pk_specializes_occupation//, __fk_parent_occupation__, __fk_child_occupation__) | ||
+ | \\ | ||
+ | |||
+ | \\ | ||
+ | |||
+ | \\ | ||
+ | |||
+ | \\ | ||
+ | |||
+ | \\ | ||
+ | |||
+ | \\ | ||
+ | |||
+ | |||
+ |