| Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente |
| sio:bloc2:conception:logique [2023/04/22 18:03] – [Textuelle normalisée] jcheron | sio:bloc2:conception:logique [2023/05/09 07:42] (Version actuelle) – [2NF] jcheron |
|---|
| |
| |
| ==== Clé primaire ==== | ==== Clé ==== |
| La clé primaire d'une relation définit le ou les attributs permettant d'identifier de façon unique un tuple unique de cette relation. | |
| |
| Cette clé doit logiquement disposer de certaines qualités pour jouer son rôle : | Soient une relation R(A1,A2,…,An) et K un sous-ensemble de A1,A2,… ,An. |
| * Ne pas être mutable (pour ne pas provoquer des opérations inutiles pour maintenir son référencement) | |
| * Ne pas être volumineuse (taille de stockage) | K est une clé de R si et seulement si : |
| | |
| | K⇒A1,A2,…,An |
| | |
| | il n'existe pas K’ inclus dans K tel que K’⇒A1,A2,…,An |
| |
| === Clé candidate === | === Clé candidate et clé primaire === |
| On qualifie de **clé candidate** tout attribut de la relation permettant d'identifier de façon unique un tuple. | On qualifie de **clé candidate** tout attribut de la relation permettant d'identifier de façon unique un tuple. |
| |
| Parmi les clé(s) candidate(s) éventuelles, seule l'une d'entre elles sera choisie comme clé primaire. | Parmi les clé(s) candidate(s) éventuelles, seule l'une d'entre elles sera choisie comme **clé primaire**. |
| |
| | Cette clé primaire doit logiquement disposer de certaines qualités pour jouer son rôle : |
| | * Ne pas être mutable (pour ne pas provoquer des opérations inutiles pour maintenir son référencement) |
| | * Ne pas être volumineuse (taille de stockage) |
| === Clé composite === | === Clé composite === |
| |
| Une clé primaire composite est composée de plusieurs attributs. Il n'y a jamais plusieurs clés primaires, mais éventuellement une clé primaire composite composée de plusieurs attributs. | Une clé primaire composite est composée de plusieurs attributs. Il n'y a jamais plusieurs clés primaires, mais éventuellement une clé primaire composite composée de plusieurs attributs. |
| | |
| | <wrap info>Les clés primaires issues des CIM sont par exemple composites.</wrap> |
| |
| ==== Clé étrangère ==== | ==== Clé étrangère ==== |
| |
| Une clé étrangère est une référence à une clé primaire d'une autre relation. | Une clé étrangère est une référence à une clé primaire d'une autre relation. |
| |
| |
| |
| ===== Du MCD au MLDR ===== | ===== Du MCD au MLDR ===== |
| Il est évidemment possible de renommer la clé étrangère faisant référence à une clé primaire : | Il est évidemment possible de renommer la clé étrangère faisant référence à une clé primaire : |
| * Pour mieux saisir son rôle | * Pour mieux saisir son rôle |
| * ou simplement pour éviter un conflit en cas de références identiques (2 CIFs entre 2 entités identiques) | * ou simplement pour éviter un conflit en cas de références identiques (2 CIFs entre les 2 mêmes entités) |
| </WRAP> | </WRAP> |
| |
| <html><div class="imageB"></html>{{:sio:bloc2:conception:pasted:20230422-173936.png}}<html></div></html> | <html><div class="imageB"></html>{{:sio:bloc2:conception:pasted:20230422-173936.png}}<html></div></html> |
| ==== Graphique ==== | ==== Graphique ==== |
| | <html><div class="imageB"></html>{{:sio:bloc2:conception:pasted:20230422-180657.png}}<html></div></html> |
| | |
| | === Avec la notation Crow's-Foot === |
| | <html><div class="imageB"></html>{{:sio:bloc2:conception:pasted:20230422-190906.png}}<html></div></html> |
| | |
| | ===== Mnémotechnique ===== |
| | |
| | <WRAP info> |
| | Souvenez-vous, les clés étrangères migrent : |
| | * Vers le 1 des CIFs |
| | * Vers la nouvelle relation de chaque CIM |
| | </WRAP> |
| | <html><div class="imageB"></html>{{:sio:bloc2:conception:pasted:20230422-185122.png?800|Sens de migration des clés étrangères}}<html></div></html> |
| | |
| | ===== Normalisation ===== |
| | Pour être valide, un MLDR doit respecter les 4 premières formes normales, afin d'éviter la redondance et les anomalies de mise à jour : |
| | |
| | ==== 1NF ==== |
| | <WRAP info round> |
| | Une relation respecte la __1ère forme normale__ si : |
| | * Elle posséde une clé |
| | * Tous ses attributs sont atomiques (pas d'attributs multi-valués) |
| | </WRAP> |
| | |
| | ==== 2NF ==== |
| | <WRAP info round> |
| | Une relation respecte la __2ème forme normale__ si : |
| | * Elle est en **1NF** |
| | * Tout attribut non clé ne dépend pas d'une partie de la clé |
| | |
| | <wrap important round>Cette forme normale ne concerne donc que les clés composites</wrap> |
| | </WRAP> |
| | |
| | ==== 3NF ==== |
| | <WRAP info round> |
| | Une relation respecte la __3ème forme normale__ si : |
| | * Elle est en **2NF** |
| | * Tout attribut non clé ne dépend pas fonctionnellement d'un autre attribut non clé. |
| | </WRAP> |
| | |
| | |
| | <button>[[sio:bloc2:conception:physique|>> Le niveau physique]]</button> |
| | |
| |
| |