Formes normales

Conception de bases de données

Lis Sulmont

Curriculum Manager

Normalisation

Repérer les groupes de données répétés et créer de nouvelles tables pour eux

Définition plus formelle :

Les objectifs de la normalisation sont :

  • Caractériser le niveau de redondance d'un schéma relationnel
  • Offrir des mécanismes pour transformer les schémas afin d'éliminer la redondance
1 Database Design, 2nd Edition, Adrienne Watt
Conception de bases de données

Formes normales (NF)

De la moins à la plus normalisée :

  • Première forme normale (1NF)
  • Deuxième forme normale (2NF)
  • Troisième forme normale (3NF)
  • Forme normale à clé élémentaire (EKNF)
  • Forme normale de Boyce-Codd (BCNF)

$$

  • Quatrième forme normale (4NF)
  • Forme normale essentielle de tuple (ETNF)
  • Cinquième forme normale (5NF)
  • Forme normale domaine-clé (DKNF)
  • Sixième forme normale (6NF)
1 https://en.wikipedia.org/wiki/Database_normalization
Conception de bases de données

Règles 1NF

  • Chaque enregistrement doit être unique : aucune ligne en double
  • Chaque cellule doit contenir une seule valeur

Données initiales

| Student_id | Student_Email   | Courses_Completed                                        | 
|------------|-----------------|----------------------------------------------------------|
| 235        | [email protected]   | Introduction to Python, Intermediate Python              |
| 455        | [email protected] | Cleaning Data in R                                       | 
| 767        | [email protected] | Machine Learning Toolbox, Deep Learning in Python        |
Conception de bases de données

En 1NF

| Student_id | Student_Email   | 
|------------|-----------------|
| 235        | [email protected]   | 
| 455        | [email protected] | 
| 767        | [email protected] | 
| Student_id | Completed                |
|------------|--------------------------|
| 235        | Introduction to Python   | 
| 235        | Intermediate Python      | 
| 455        | Cleaning Data in R       | 
| 767        | Machine Learning Toolbox | 
| 767        | Deep Learning in Python  | 
Conception de bases de données

2NF

  • Doit satisfaire 1NF ET
    • Si la clé primaire est une seule colonne
      • alors 2NF est satisfaite automatiquement
    • S'il y a une clé primaire composite
      • chaque colonne non clé doit dépendre de toutes les clés

Données initiales

| Student_id (PK) | Course_id (PK) | Instructor_id | Instructor    | Progress |
|-----------------|----------------|---------------|---------------|----------|
| 235             | 2001           | 560           | Nick Carchedi | .55      |
| 455             | 2345           | 658           | Ginger Grant  | .10      |
| 767             | 6584           | 999           | Chester Ismay | 1.00     |
Conception de bases de données

En 2NF

| Student_id (PK) | Course_id (PK) | Percent_Completed |
|-----------------|----------------|-------------------|
| 235             | 2001           | .55               |
| 455             | 2345           | .10               |
| 767             | 6584           | 1.00              |
| Course_id (PK) | Instructor_id | Instructor    |
|----------------|---------------|---------------|
| 2001           | 560           | Nick Carchedi |
| 2345           | 658           | Ginger Grant  |
| 6584           | 999           | Chester Ismay |
Conception de bases de données

3NF

  • Satisfait 2NF
  • Aucune dépendance transitive : les colonnes non clés ne peuvent dépendre d'autres colonnes non clés

Données initiales

| Course_id (PK) | Instructor_id | Instructor    | Tech   |
|----------------|---------------|---------------|--------|
| 2001           | 560           | Nick Carchedi | Python |
| 2345           | 658           | Ginger Grant  | SQL    |
| 6584           | 999           | Chester Ismay | R      |
Conception de bases de données

En 3NF

| Course_id (PK) | Instructor    | Tech   |
|----------------|---------------|--------|
| 2001           | Nick Carchedi | Python |
| 2345           | Ginger Grant  | SQL    |
| 6584           | Chester Ismay | R      |
| Instructor_id | Instructor    | 
|---------------|---------------|
| 560           | Nick Carchedi | 
| 658           | Ginger Grant  | 
| 999           | Chester Ismay |
Conception de bases de données

Anomalies de données

Que risque-t-on si la normalisation est insuffisante ?

1. Anomalie de mise à jour

2. Anomalie d'insertion

3. Anomalie de suppression

Conception de bases de données

Anomalie de mise à jour

Incohérence causée par la redondance lors d'une mise à jour

| Student_ID | Student_Email   | Enrolled_in             | Taught_by           |
|------------|-----------------|-------------------------|---------------------|
| 230        | [email protected]  | Cleaning Data in R      | Maggie Matsui       |
| 367        | [email protected] | Data Visualization in R | Ronald Pearson      |
| 520        | [email protected]   | Introduction to Python  | Hugo Bowne-Anderson |
| 520        | [email protected]   | Arima Models in R       | David Stoffer       |

Pour mettre à jour le courriel de l'étudiant 520 :

  • Il faut modifier plus d'un enregistrement, sinon il y aura incohérence
  • La personne qui met à jour doit connaître la redondance
Conception de bases de données

Anomalie d'insertion

Impossible d'ajouter un enregistrement faute d'attributs requis

| Student_ID | Student_Email   | Enrolled_in             | Taught_by           |
|------------|-----------------|-------------------------|---------------------|
| 230        | [email protected]  | Cleaning Data in R      | Maggie Matsui       |
| 367        | [email protected] | Data Visualization in R | Ronald Pearson      |
| 520        | [email protected]   | Introduction to Python  | Hugo Bowne-Anderson |
| 520        | [email protected]   | Arima Models in R       | David Stoffer       |

Impossible d'insérer un étudiant inscrit sur la plateforme mais à aucun cours

Conception de bases de données

Anomalie de suppression

La suppression d'un ou de plusieurs enregistrements entraîne une perte involontaire de données

| Student_ID | Student_Email   | Enrolled_in             | Taught_by           |
|------------|-----------------|-------------------------|---------------------|
| 230        | [email protected]  | Cleaning Data in R      | Maggie Matsui       |
| 367        | [email protected] | Data Visualization in R | Ronald Pearson      |
| 520        | [email protected]   | Introduction to Python  | Hugo Bowne-Anderson |
| 520        | [email protected]   | Arima Models in R       | David Stoffer       |

Si nous supprimons l'étudiant 230, que devient l'information sur Cleaning Data in R ?

Conception de bases de données

Anomalies de données

Que risque-t-on si la normalisation est insuffisante ?

1. Anomalie de mise à jour

2. Anomalie d'insertion

3. Anomalie de suppression

Plus la base est normalisée, moins elle est sujette aux anomalies de données.

N'oubliez pas les limites de la normalisation vues dans la dernière vidéo

Conception de bases de données

Passons à la pratique !

Conception de bases de données

Preparing Video For Download...