diff --git a/bdd.md b/bdd.md index 20e7d77..6e6a714 100644 --- a/bdd.md +++ b/bdd.md @@ -78,7 +78,8 @@ RDBMS ## Programme - [Base de données relationnelle](sgbdr) - - Le [langage SQL](sql) + - Les [formes normales](formes_normales) +- Le [langage SQL](sql) - Les [jointures](jointure) - Les [déclencheurs](trigger) - Les [vues](vues) diff --git a/erd.svg b/erd.svg new file mode 100644 index 0000000..63edd34 --- /dev/null +++ b/erd.svg @@ -0,0 +1,210 @@ + + + + + + + + + + + + DIRIGER + + 0,N + 0,1 + + + + + + + + + + + + REQUÉRIR + qté requise + + 1,N + 0,N + + + + + + + + + + + + COMPOSER + quantité + + 0,N + 0,N + + + + + + + + + DF + + 1,1 + + 0,N + + + + + + + + + + + + + FOURNIR + qté fournie + + 1,N + 1,N + 1,N + + + + + + + + + + + + EMPLOYER + + 1,1 + 1,N + + + + + + + + + + + + TRAVAILLER + + 0,N + 1,N + + + + + + + + + + + + + CONTRÔLER + + 0,N + 0,1 + + + + + + + + + + + AYANT-DROIT + nom ayant-droit + + lien + + + + + + + + + + + PIÈCE + réf. pièce + + libellé pièce + + + + + + + + + + + EMPLOYÉ + matricule + + nom employé + + + + + + + + + + + PROJET + num. projet + + nom projet + + + + + + + + + + + DÉPARTEMENT + num. département + + nom département + + + + + + + + + + + SOCIÉTÉ + num. société + + raison sociale + + diff --git a/formes_normales.md b/formes_normales.md new file mode 100644 index 0000000..da32b28 --- /dev/null +++ b/formes_normales.md @@ -0,0 +1,73 @@ +# Formes normales + +Les formes normales sont des règles ou des critères utilisés dans la conception de bases de données relationnelles pour organiser les données de manière à réduire la redondance et améliorer l'intégrité des données. Elles permettent de structurer une base de données de façon à minimiser les anomalies de mise à jour, d'insertion et de suppression. Il existe plusieurs formes normales, chacune apportant des améliorations spécifiques par rapport à la précédente. + +## 1NF Première forme normale + +La première forme normale impose les conditions suivantes : + +- **Atomicité** : Chaque colonne d'une table doit contenir des valeurs atomiques, c'est-à-dire indivisibles. Par exemple, une colonne ne doit pas contenir une liste de valeurs ou une valeur composite. +- **Absence de répétition** : Les enregistrements doivent être uniques, et chaque colonne doit contenir un seul type de données. + +|Immatriculation | Modèle | Caractéristiques +|----------------|---------|-------------- +| TT-802-AX | Nissan | 4 roues motrices, ABS, toit ouvrant, peinture verte, 65 l, 140 cv +| QS-123-DB | Peugeot | jantes aluminium, peinture bleu, 50 l, 110 cv + +| ID | Produit | Ingrédients +|----|---------------|-------------- +| 1 | Sun Secure | octocrylène, dioxyde de titane +| 2 | UV Screen | acide para-aminobenzoïque, taurate copolymer, ceteareth-20 + +## 2NF Deuxième forme normale + +La deuxième forme normale est basée sur la première (ANF) et ajoute la condition suivante : + +- **Dépendance fonctionnelle totale** : Tous les attributs non clés doivent dépendre **entièrement** de la clé primaire. En d'autres termes, il ne doit pas y avoir de dépendances partielles entre les colonnes. Si une colonne dépend seulement d'une partie de la clé primaire (dans le cas où celle-ci est composée), la table n'est pas en 2NF. + +| N° Commande | N° Produit | NomClient | AdresseClient | Quantité +|-------------|------------|-----------|--------------------|--------: +| 1 | 101 | Dupont | 10 rue du Marché | 2 +| 1 | 102 | Dupont | 10 rue du Marché | 1 +| 2 | 103 | Martin | 22 avenue de Paris | 5 +| 3 | 102 | Grosjean | 10 place Bleue | 3 + +La clé primaire de la table est composée de CommandeID et ProduitID + +NomClient et AdresseClient dépendent uniquement de CommandeID, ce qui signifie qu'ils ne dépendent pas entièrement de la clé primaire composée (CommandeID, ProduitID). Ils dépendent seulement de la partie CommandeID. + +## 3NF Troisième forme normale + +La troisième forme normale repose sur la deuxième (2NF) et ajoute la condition suivante : + +- **Absence de dépendance transitive** : Aucune colonne non clé ne doit dépendre d'une autre colonne non clé. Autrement dit, chaque colonne non clé doit dépendre directement de la clé primaire. + +|EmployéID | NomEmployé | Poste | Salaire | DépartementID |NomDépartement +|----------|------------|----------------|---------|---------------|--------------- +|1 | Dupont | Ingénieur | 60000 | 101 |Informatique +|2 | Martin | Chef de projet | 75000 | 102 |Gestion +|3 | Durand | Technicien | 45000 | 101 |Informatique + +Dans cette table, l'attribut NomDépartement dépend de DépartementID, qui lui-même dépend de EmployéID. Cette situation crée une dépendance transitive : EmployéID → DépartementID → NomDépartement. Par conséquent, la table ne respecte pas la 3NF, car NomDépartement dépend indirectement de la clé primaire EmployéID via une autre colonne non clé (DépartementID). + +## BCNF Forme normale de Boyce-Codd + +La forme normale de Boyce-Codd est une extension de la 3NF et traite certains cas particuliers où la 3NF ne suffit pas. Elle impose : + +- **Dépendance fonctionnelle stricte** : Pour chaque dépendance fonctionnelle, l'ensemble des attributs sur lequel une colonne dépend doit être une super-clé de la table. + +## 4NF Quatrième forme normale + +La quatrième forme normale traite des dépendances multivaluées : + +- **Aucune dépendance multivaluée** : Si un attribut dans une table dépend de la clé primaire, il ne doit pas y avoir de dépendance entre cet attribut et un autre ensemble d'attributs indépendant. + +## 5NF Cinquième forme normale + +La cinquième forme normale traite de la décomposition en respectant les jointures : + +- **Aucune dépendance de jointure** : Une table doit être décomposable en plus petites tables sans perte d'informations lors des jointures. + +## 6NF Sixième forme normale + +La sixième forme normale, rarement utilisée, est destinée aux bases de données temporelles et impose une décomposition encore plus fine pour gérer les variations dans le temps. diff --git a/sgbdr.md b/sgbdr.md index 37f312f..c0c940b 100644 --- a/sgbdr.md +++ b/sgbdr.md @@ -1,8 +1,6 @@ ---- -title: Système de gestion de bases de données relationnelles ---- +# Système de gestion de bases de données relationnelles -Les bases de données relationnelles sont un élément clé de la gestion de données dans de nombreuses applications informatiques. Elles fournissent une structure organisée pour stocker, gérer et récupérer des informations. +Les bases de données relationnelles sont un élément clé de la gestion de données dans de nombreuses applications informatiques. Elles fournissent une structure organisée pour stocker, gérer et récupérer des informations. ### Qu'est-ce qu'une base de données relationnelle ? @@ -69,287 +67,4 @@ Le schéma entité-relation est souvent considéré comme un modèle conceptuel, Une fois le schéma entité-relation créé, il peut servir de base pour la conception et la création de la base de données réelle à l'aide d'un système de gestion de base de données (SGBD) tel que MySQL, PostgreSQL, Oracle Database, etc. Le schéma entité-relation est un outil précieux pour communiquer avec les parties prenantes du projet, comprendre les besoins en matière de données et s'assurer que la base de données est conçue de manière appropriée pour prendre en charge les opérations et les requêtes requises. - - - - - - - - - - - - DIRIGER - - 0,N - 0,1 - - - - - - - - - - - - REQUÉRIR - qté requise - - 1,N - 0,N - - - - - - - - - - - - COMPOSER - quantité - - 0,N - 0,N - - - - - - - - - DF - - 1,1 - - 0,N - - - - - - - - - - - - - FOURNIR - qté fournie - - 1,N - 1,N - 1,N - - - - - - - - - - - - EMPLOYER - - 1,1 - 1,N - - - - - - - - - - - - TRAVAILLER - - 0,N - 1,N - - - - - - - - - - - - - CONTRÔLER - - 0,N - 0,1 - - - - - - - - - - - AYANT-DROIT - nom ayant-droit - - lien - - - - - - - - - - - PIÈCE - réf. pièce - - libellé pièce - - - - - - - - - - - EMPLOYÉ - matricule - - nom employé - - - - - - - - - - - PROJET - num. projet - - nom projet - - - - - - - - - - - DÉPARTEMENT - num. département - - nom département - - - - - - - - - - - SOCIÉTÉ - num. société - - raison sociale - - - -## Formes normales - -Les formes normales sont des règles ou des critères utilisés dans la conception de bases de données relationnelles pour organiser les données de manière à réduire la redondance et améliorer l'intégrité des données. Elles permettent de structurer une base de données de façon à minimiser les anomalies de mise à jour, d'insertion et de suppression. Il existe plusieurs formes normales, chacune apportant des améliorations spécifiques par rapport à la précédente. - -### 1NF Première forme normale - -La première forme normale impose les conditions suivantes : - -- **Atomicité** : Chaque colonne d'une table doit contenir des valeurs atomiques, c'est-à-dire indivisibles. Par exemple, une colonne ne doit pas contenir une liste de valeurs ou une valeur composite. -- **Absence de répétition** : Les enregistrements doivent être uniques, et chaque colonne doit contenir un seul type de données. - -|Immatriculation | Modèle | Caractéristiques -|----------------|---------|-------------- -| TT-802-AX | Nissan | 4 roues motrices, ABS, toit ouvrant, peinture verte, 65 l, 140 cv -| QS-123-DB | Peugeot | jantes aluminium, peinture bleu, 50 l, 110 cv - -| ID | Produit | Ingrédients -|----|---------------|-------------- -| 1 | Sun Secure | octocrylène, dioxyde de titane -| 2 | UV Screen | acide para-aminobenzoïque, taurate copolymer, ceteareth-20 - -#### 2NF Deuxième forme normale - -La deuxième forme normale est basée sur la première (ANF) et ajoute la condition suivante : - -- **Dépendance fonctionnelle totale** : Tous les attributs non clés doivent dépendre **entièrement** de la clé primaire. En d'autres termes, il ne doit pas y avoir de dépendances partielles entre les colonnes. Si une colonne dépend seulement d'une partie de la clé primaire (dans le cas où celle-ci est composée), la table n'est pas en 2NF. - -| N° Commande | N° Produit | NomClient | AdresseClient | Quantité -|-------------|------------|-----------|--------------------|--------: -| 1 | 101 | Dupont | 10 rue du Marché | 2 -| 1 | 102 | Dupont | 10 rue du Marché | 1 -| 2 | 103 | Martin | 22 avenue de Paris | 5 -| 3 | 102 | Grosjean | 10 place Bleue | 3 - -La clé primaire de la table est composée de CommandeID et ProduitID - -NomClient et AdresseClient dépendent uniquement de CommandeID, ce qui signifie qu'ils ne dépendent pas entièrement de la clé primaire composée (CommandeID, ProduitID). Ils dépendent seulement de la partie CommandeID. - -#### 3NF Troisième forme normale - -La troisième forme normale repose sur la deuxième (2NF) et ajoute la condition suivante : - -- **Absence de dépendance transitive** : Aucune colonne non clé ne doit dépendre d'une autre colonne non clé. Autrement dit, chaque colonne non clé doit dépendre directement de la clé primaire. - -|EmployéID | NomEmployé | Poste | Salaire | DépartementID |NomDépartement -|----------|------------|----------------|---------|---------------|--------------- -|1 | Dupont | Ingénieur | 60000 | 101 |Informatique -|2 | Martin | Chef de projet | 75000 | 102 |Gestion -|3 | Durand | Technicien | 45000 | 101 |Informatique - -Dans cette table, l'attribut NomDépartement dépend de DépartementID, qui lui-même dépend de EmployéID. Cette situation crée une dépendance transitive : EmployéID → DépartementID → NomDépartement. Par conséquent, la table ne respecte pas la 3NF, car NomDépartement dépend indirectement de la clé primaire EmployéID via une autre colonne non clé (DépartementID). - -#### BCNF Forme normale de Boyce-Codd - -La forme normale de Boyce-Codd est une extension de la 3NF et traite certains cas particuliers où la 3NF ne suffit pas. Elle impose : - -- **Dépendance fonctionnelle stricte** : Pour chaque dépendance fonctionnelle, l'ensemble des attributs sur lequel une colonne dépend doit être une super-clé de la table. - -#### 4NF Quatrième forme normale - -La quatrième forme normale traite des dépendances multivaluées : - -- **Aucune dépendance multivaluée** : Si un attribut dans une table dépend de la clé primaire, il ne doit pas y avoir de dépendance entre cet attribut et un autre ensemble d'attributs indépendant. - -#### 5NF Cinquième forme normale - -La cinquième forme normale traite de la décomposition en respectant les jointures : - -- **Aucune dépendance de jointure** : Une table doit être décomposable en plus petites tables sans perte d'informations lors des jointures. - -#### 6NF Sixième forme normale - -La sixième forme normale, rarement utilisée, est destinée aux bases de données temporelles et impose une décomposition encore plus fine pour gérer les variations dans le temps. +![ERD](erd.svg)