Mehrere Tabellen in einer zusammenfassen

Markus_Ebeling

Grünschnabel
Hallo!

Ich habe mehrere Tabellen. Diese Tabellen haben eigentlich immer den gleichen Aufbau.
Lediglich der Inhalt ist unterschiedlich.

Hier als Beispiel:

Autos – Tabelle

id name
1 Rennauto
2 Trecker
3 Bagger

Felgen – Tabelle

id name
1 Alufelge
2 Stahlfelge
3 Goldfelge

Fahrer - Tabelle
id name
1 Rennfahrer
2 Bauer
3 Bauarbeiter

Meine Frage ist nun: Kann ich nicht diese 3 Tabellen in einer zusammenfassen?

Zusammen - Tabelle
id work_id name
1 1 Rennauto
2 1 Trecker
3 1 Bagger
4 2 Alufelge
5 2 Stahlfelge
6 2 Goldfelge
7 3 Rennfahrer
8 3 Bauer
9 3 Bauarbeiter

Macht das, unter Umständen, Sinn?

Gruß und Danke für Eure Antworten
 
Hi,

ich würde dir davon abraten, diese zusammen zu fassen. Zum einen braucht deine Tabelle mehr Speicherplatz (zusäzlicher Index auf die work_id), zum anderen ist die Performance leicht schlechter. (Ein Select * zum Auslesen aller Datensätze brauchte vorher kein WHERE, jetzt aber ein WHERE auf die work_id)

Ich bin der Auffassung, dass in einer Tabelle nur "homogene" Datensätze drin sein sollten, sprich die sollten auch logisch alle für das selbe stehen.
Bei deinem leichten Beispiel mag das zwar jetzt nicht so grosse Auswirkungen haben, aber was wenn in die Fahrertabelle jetzt noch ein neues Feld rein muss? Dann musst du in deiner "Gesamttabelle" auch ein neues Feld einfügen, welches bei allen anderen Typen dann mit NULL gefüllt ist (unnötig, Speicherplatz). Wenn du nun auch noch in die Felgen Tabelle eine neue Spalte brauchst, dann hast du das selbe wieder. Und dann wirds kmpliziert (Wann muss es gefüllt werden? Ist das NULL jetzt hier Absicht?)

Auch mit Indices (Unique, Suchschlüssel) etc. hast du dann Probleme.

tl;dr: Lass es in verschiedenen Tabellen.

Grüsse,
BK
 
Zuletzt bearbeitet:
Hi

(Geschrieben, bevor ich Bratkartoffels Beitrag gesehen habe)

Macht das, unter Umständen, Sinn?
Hängt vom Anwendungsfall ab, aber meistens "Nein".

Geht es dir (nur) darum, dir die Erstellung von zwei weiteren Tabellen zu sparen?
Dadurch bekommst du auch
a) kompliziertere Abfragen (jedes Mal, nicht nur einmal wie beim Tabellen-erstellen)
b) Beziehungen zwischen Tabellen und/oder Constraints und/oder ..., mit den in durch die DB gegebenen Möglichkeiten, werden sinnlos. Ein Auto muss aus mindestens einem Bauteil bestehen und hat genau einen Besitzer? Wie drückt man das bei deiner Idee aus?
c) Falls jemand anders sich damit beschäftigen muss ist die Absicht dahinter schwerer durchschaubar.
(Und auch du selbst erinnerst dich zB. nächstes Jahr nicht mehr so gut daran. Wartbarkeit.)
...
 
Hallo!

Ich habe mehrere Tabellen. Diese Tabellen haben eigentlich immer den gleichen Aufbau.
Lediglich der Inhalt ist unterschiedlich.

Hier als Beispiel:

Autos – Tabelle

id name
1 Rennauto
2 Trecker
3 Bagger

Felgen – Tabelle

id name
1 Alufelge
2 Stahlfelge
3 Goldfelge

Fahrer - Tabelle
id name
1 Rennfahrer
2 Bauer
3 Bauarbeiter

Meine Frage ist nun: Kann ich nicht diese 3 Tabellen in einer zusammenfassen?

Zusammen - Tabelle
id work_id name
1 1 Rennauto
2 1 Trecker
3 1 Bagger
4 2 Alufelge
5 2 Stahlfelge
6 2 Goldfelge
7 3 Rennfahrer
8 3 Bauer
9 3 Bauarbeiter

Könnte man mit UNION ALL und einem Select Count Table 1/2 (Für die id der Tabelle 2+3) lösen.
Falls du ein Beispiel brauchst müsste ich mal schnell eins zusammenstupfen.


Macht das, unter Umständen, Sinn?

NaJa, dass kommt darauf an was du damit abbilden möchtest. das liegt in deinem Ermessen.
Ich habe schon ein paar Fälle, wo das Sinn macht.


Gruß und Danke für Eure Antworten

Viele Grüße
Uwe
 
Zurück