Datenbankdesign
Lis Sulmont
Curriculum Manager
Identifiziere sich wiederholende Datengruppen und erstelle dafür neue Tabellen.
Eine etwas formellere Definition:
Die Ziele der Normalisierung sind:
- Das Ausmaß der Redundanz in einem relationalen Schema beschreiben können
- Mach Mechanismen zum Umwandeln von Schemata bereit, um Redundanzen zu vermeiden.
Sortiert von am wenigsten bis am meisten normalisiert:
$$
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 |
| 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 |
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 |
| 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 |
Anfangsdaten
| Course_id (PK) | Instructor_id | Instructor | Tech |
|----------------|---------------|---------------|--------|
| 2001 | 560 | Nick Carchedi | Python |
| 2345 | 658 | Ginger Grant | SQL |
| 6584 | 999 | Chester Ismay | R |
| 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 |
Was riskieren wir, wenn wir nicht genug normalisieren?
1. Anomalie aktualisieren
2. Einfügungsanomalie
3. Löschungsanomalie
Dateninkonsistenz wegen doppelter Daten beim Aktualisieren
| 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 Student 520 zu ändern:
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 |
Ich kann keinen Schüler hinzufügen, der sich angemeldet hat, aber noch in keinen Kurs eingeschrieben ist.
Das Löschen von Datensätzen kann zu einem unbeabsichtigten 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 den Schüler „ 230 ” löschen, was passiert dann mit den Daten auf „ Cleaning Data in R ”?
Was riskieren wir, wenn wir nicht genug normalisieren?
1. Anomalie aktualisieren
2. Einfügungsanomalie
3. Löschungsanomalie
Je normalisierter die Datenbank ist, desto weniger anfällig ist sie für Datenanomalien.
Vergiss nicht die Nachteile der Normalisierung aus dem letzten Video.
Datenbankdesign