Tabellenverknüpfung in Datenbanken
Nehmen wir an, wir haben eine Tabelle mit Benutzernamen und den 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 benötigt.
Zweitens ist es ziemlich umständlich, Operationen mit Städten durchzuführen. Zum Beispiel wollen wir eine Liste aller Städte ausgeben. So einfach ist das nicht 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, dass die Datenbank 10000
Benutzer aus 10 Städten enthält - für diese 10
Städte müssten wir die gesamte Tabelle
mit einer enormen Anzahl von Zeilen abrufen -
das wäre eine sehr langsame Operation mit
sinnloser Ressourcenverschwendung.
Lösung des Problems
Wir müssen unsere Tabelle in zwei Teile aufteilen: In einer
werden die Städte gespeichert, und in der zweiten - die Benutzer.
Dabei wird in der Tabelle mit den Benutzern eine Spalte
city_id vorhanden sein, die auf die Stadt
des Benutzers verweist.
Also, lassen Sie uns zwei Tabellen erstellen. 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 |
Angenommen, Sie müssen Produkte (Name, Preis, Menge) und Kategorien dieser Produkte speichern. Beschreiben Sie die Speicherstruktur.
Angenommen, Sie müssen Flüsse und die 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.