# Tabellendesign



## rewireable (16. Nov 2012)

Hallo,

folgendes Szenario:
ich habe eine Tabelle "meine_tabelle" mit 3 Spalten:
Id, Text, Gruppe

es gibt vielen Zeilen in der Tabelle, allerdings nur 5 Unterschiedliche werte für gruppen. Weiter weiss ich, dass alle relevanten abfragen an die Tabelle immer nur innerhalb einer Gruppe stattfinden werden.

Deshalb liegt es eigentlich nahe, die Tabelle in 5 tabellen aufzuteilen:
Tabellen:
meine_tabelle_gruppe1
meine_tabelle_gruppe2
meine_tabelle_gruppe3
meine_tabelle_gruppe4
meine_tabelle_gruppe5

jede Tabelle besteht jetzt nur noch aus den Spalten Id und Text


Hier die erste Frage: macht das Sinn? Die zu optimierende Größe ist die Geschwindigkeit bei lesenden Zugriffen innerhalb einer Gruppe.


Und nun das abgeänderte Szenario, das meinem tatsächlichen Problem näher kommt:
es gibt nicht 5 Gruppen, sondern ca 50.000 (in Worten: fünfzigtausend).

Macht es da auch Sinn für jede Gruppe eine eigene Tabelle zu erstellen? Aus dem Bauch heraus fühl ich mich äußerst unwohl dabei, kann es aber nicht fundiert begründen. 

bin auf eure Anregungen gespannt, vielen Dank im voraus!

gruß Stefan


----------



## Camino (16. Nov 2012)

rewireable hat gesagt.:


> Und nun das abgeänderte Szenario, das meinem tatsächlichen Problem näher kommt:
> es gibt nicht 5 Gruppen, sondern ca 50.000 (in Worten: fünfzigtausend).
> 
> Macht es da auch Sinn für jede Gruppe eine eigene Tabelle zu erstellen? Aus dem Bauch heraus fühl ich mich äußerst unwohl dabei, kann es aber nicht fundiert begründen.



Du willst nicht wirklich 50.000 Tabellen in deiner Datenbank dafür anlegen?! Das wäre wirlich sinnlos. Und was machst du, wenn neue Gruppen dazukommen? Dann musst du ja immer wieder neue Tabellen anlegen...


----------



## nillehammer (16. Nov 2012)

Camino hat gesagt.:
			
		

> Du willst nicht wirklich 50.000 Tabellen in deiner Datenbank dafür anlegen?! Das wäre wirlich sinnlos. Und was machst du, wenn neue Gruppen dazukommen? Dann musst du ja immer wieder neue Tabellen anlegen...


Deswegen, zwei Tabellen: Eine Tabelle Gruppe und in meine_tabelle einen Fremdschlüssel darauf.


----------



## parabool (16. Nov 2012)

In deiner Tabelle nur eine Gruppe-id = Fremdschlüssel(index drauf)  dieser referenziert auf 2. Tabelle (z.B.Gruppen) .

In der 2. Tabelle  die Gruppen, (kann dann leicht eine hinzugefügt werden) 
Dort würden auch die Atributte hineinkommen die sich je Gruppe nicht ändern (Gruppenname z.B oder irgendwelche Metainfos dazu).


----------



## rewireable (16. Nov 2012)

Hallo

vielen Dank erstmal für eure Antworten.

Mein Bauch sagt auch dass das sinnlos ist. Aber halt nur mein Bauch. Der Vorschlag kam von einem 
Kollegen, und wenn ich ihm sag dass das sinnlos ist, brauch ich eben ein bisschen mehr als nur mein Bauchgefühl.


Mit den neuen Gruppen und neuen Tabellen sehe ich jetzt weniger ein Problem, da es nur eine Anwendung gibt die in diese DB schreiben wird, und diese dann bei bedarf auch neue Tabellen erzeugen könnte.

zur Lösung mit zwei Tabellen: so ungefähr könnte ich mir das auch vorstellen, das wäre schön verständliches Design. Mir gehts aber nicht (hauptsächlich) um verständlichkeit, sondern um geschwindigkeit. Und da ist mir nicht klar welche Lösung besser abscheiden könnte.

gruß Stefan


----------

