Normalformen

Datenbankdesign

Lis Sulmont

Curriculum Manager

Normalisierung

Identifizieren sich wiederholender Datengruppen und Erstellen neuer Tabellen

Etwas formellere Definition:

Ziele der Normalisierung:

  • Umfang der Redundanz in einem relationalen Schema beschreiben können
  • Mechanismen zum Umwandeln von Schemata bereitstellen, um Redundanzen zu vermeiden
1 Database Design, 2nd Edition by Adrienne Watt
Datenbankdesign

Normalformen (NF)

Sortiert von niedrigster bis höchster Normalform:

  • Erste Normalform (1NF)
  • Zweite Normalform (2NF)
  • Dritte Normalform (3NF)
  • Elementary-Key-Normalform (EKNF)
  • Boyce-Codd-Normalform (BCNF)

$$

  • Vierte Normalform (4NF)
  • Essential Tuple Normal Form (ETNF)
  • Fünfte Normalform (5NF)
  • Domain-Key Normal Form (DKNF)
  • Sechste Normalform (6NF)
1 https://en.wikipedia.org/wiki/Database_normalization
Datenbankdesign

1NF-Regeln

  • Jeder Datensatz muss eindeutig sein – keine doppelten Zeilen.
  • Jede Zelle muss einen Wert haben.

Anfangsdaten

| 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        |
Datenbankdesign

In 1NF-Form

| 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  | 
Datenbankdesign

2NF

  • Muss 1NF erfüllen UND
    • Wenn Primärschlüssel aus einer Spalte besteht:
      • 2NF automatisch erfüllt
    • Wenn Primärschlüssel zusammengesetzt ist:
      • Jede Nicht-Schlüssel-Spalte muss von allen Schlüsseln abhängen

Anfangsdaten

| 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     |
Datenbankdesign

In 2NF-Form

| 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 |
Datenbankdesign

3NF

  • Erfüllt 2NF
  • Keine transitiven Abhängigkeiten: Nicht-Schlüsselspalten dürfen nicht von anderen Nicht-Schlüsselspalten abhängen

Anfangsdaten

| Course_id (PK) | Instructor_id | Instructor    | Tech   |
|----------------|---------------|---------------|--------|
| 2001           | 560           | Nick Carchedi | Python |
| 2345           | 658           | Ginger Grant  | SQL    |
| 6584           | 999           | Chester Ismay | R      |
Datenbankdesign

In 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 |
Datenbankdesign

Datenanomalien

Welches Risiko besteht, wenn wir nicht ausreichend normalisieren?

1. Änderungsanomalie

2. Einfügeanomalie

3. Löschanomalie

Datenbankdesign

Änderungsanomalie

Dateninkonsistenz durch Datenredundanz beim Ändern

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

Um die E-Mail-Adresse von ID 520 zu ändern:

  • Mehr als ein Datensatz muss geändert werden, sonst Inkonsistenzen
  • Beim Ändern müssen Redundanzen in Datensätzen bekannt sein
Datenbankdesign

Einfügeanomalie

Kann keinen Datensatz hinzufügen, weil Attribute fehlen

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

Registrierte Personen, die noch keinen Kurs begonnen haben, können nicht hinzugefügt werden.

Datenbankdesign

Löschanomalie

Löschen von Datensätzen kann zu unbeabsichtigtem Datenverlust führen

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

Wenn wir ID 230 löschen, was passiert mit Daten zu Cleaning Data in R?

Datenbankdesign

Datenanomalien

Welches Risiko besteht, wenn wir nicht ausreichend normalisieren?

1. Änderungsanomalie

2. Einfügeanomalie

3. Löschanomalie

Je normalisierter die Datenbank ist, desto weniger anfällig ist sie für Datenanomalien.

Bedenke die Nachteile der Normalisierung aus dem letzten Video!

Datenbankdesign

Lass uns üben!

Datenbankdesign

Preparing Video For Download...