Formes normales

Conception de bases de données

Lis Sulmont

Curriculum Manager

Normalisation

Identifier les groupes de données qui se répètent et créer de nouveaux tableaux pour ceux-ci

Une définition plus formelle :

Les objectifs de la normalisation sont les suivants :

  • Être capable de caractériser le niveau de redondance dans un schéma relationnel
  • Fournir des mécanismes permettant de transformer les schémas afin d'éliminer les redondances
1 Conception de bases de données, 2e édition, par Adrienne Watt
Conception de bases de données

Formes normales (NF)

Classé du moins au plus normalisé :

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

$$

  • Quatrième forme normale (4NF)
  • Forme normale essentielle des tuples (ETNF)
  • Cinquième forme normale (5NF)
  • Forme normale clé de domaine (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 ne doit être dupliquée
  • 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

Sous forme 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 être conforme à 1NF AND
    • Si la clé primaire est une colonne
      • alors satisfait automatiquement la 2NF
    • S'il existe une clé primaire composite
      • alors 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

Sous forme 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

  • Conforme à 2NF
  • Aucune dépendance transitive : les colonnes non clés ne peuvent pas 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 dans les données

Quels sont les risques encourus si nous ne normalisons pas suffisamment ?

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 des données due à la redondance lors de la 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 l'adresse e-mail de l’étudiant n°520 :

  • Il est nécessaire de mettre à jour plusieurs enregistrements, sinon il y aura des incohérences
  • Les utilisateurs qui effectuent des mises à jour doivent être informés de la redondance
Conception de bases de données

Anomalie d'insertion

Impossible d'ajouter un enregistrement en raison d'attributs manquants

| 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'ajouter un étudiant qui s'est inscrit, mais qui n'est inscrit à aucun cours

Conception de bases de données

Anomalie de suppression

La suppression d'enregistrements peut entraîner 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 n°230, que se passe-t-il avec les données sur Cleaning Data in R ?

Conception de bases de données

Anomalies dans les données

Quels sont les risques encourus si nous ne normalisons pas suffisamment ?

1. Anomalie de mise à jour

2. Anomalie d'insertion

3. Anomalie de suppression

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

Veuillez ne pas oublier les inconvénients de la normalisation mentionnés 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...