Tabellenverknüpfung in Datenbanken mit Python
Nehmen wir an, wir haben eine Tabelle mit Benutzernamen und Städten, in denen sie leben:
| id | name | city |
|---|---|---|
| 1 | user1 | city1 |
| 2 | user2 | city1 |
| 3 | user3 | city2 |
| 4 | user4 | city1 |
| 5 | user5 | city3 |
| 6 | user6 | city2 |
Der Nachteil dieser Tabelle ist, dass dieselbe Stadt mehrmals für verschiedene Benutzer wiederholt wird. Dies führt zu einigen Problemen.
Erstens führt die ständige Wiederholung dazu, dass die Datenbank viel mehr Speicherplatz belegt.
Zweitens ist es ziemlich umständlich, Operationen mit Städten durchzuführen. Wenn wir beispielsweise eine Liste aller Städte ausgeben wollen, ist das nicht so einfach möglich. Wir müssten alle Benutzer zusammen mit ihren Städten abrufen, dann Duplikate aus den erhaltenen Städten entfernen und erst dann erhalten wir diese Liste.
Stellen wir uns nun vor, die Datenbank
enthält 10000 Benutzer aus 10
Städten - für diese 10 Städte müssten
wir die gesamte Tabelle mit einer enormen
Anzahl von Zeilen abrufen - das würde eine
sehr langsame Operation mit sinnloser
Ressourcenverschwendung werden.
Lösung des Problems
Wir müssen unsere Tabelle in zwei Teile
aufteilen: In einem werden die Städte
gespeichert und im anderen die Benutzer.
Dabei wird in der Tabelle mit den Benutzern
die Spalte city_id vorhanden sein,
die auf die Stadt des Benutzers verweist.
Erstellen wir also zwei Tabellen. Tabelle mit den Städten:
| id | name |
|---|---|
| 1 | city1 |
| 2 | city2 |
| 3 | city3 |
Tabelle mit den Benutzern:
| id | name | city_id |
|---|---|---|
| 1 | user1 | 1 |
| 2 | user2 | 1 |
| 3 | user3 | 2 |
| 4 | user4 | 1 |
| 5 | user5 | 3 |
| 6 | user6 | 2 |
Praktische Aufgaben
Angenommen, Sie müssen Waren (Name, Preis, Menge) und Kategorien dieser Waren speichern. Beschreiben Sie die Speicherstruktur.
Angenommen, Sie müssen Flüsse und Meere speichern, in die diese Flüsse münden. Beschreiben Sie die Speicherstruktur.
Angenommen, Sie müssen Städte und Länder speichern, in denen sie sich befinden. Beschreiben Sie die Speicherstruktur.