# Ist das Datenbanktechnisch so ok?



## internet (29. Mrz 2011)

Hallo, 
	ich habe eine Frage:
	ich möchte ein Portal machen mit News, Forum, Gruppen (wie bei StudiVZ, Facebook).
	Überall gibt es ja Kategorien, Kommentare etc.
	Soll ich für die News eine Tabelle machen News_Kategorie, News_Kommentar
	Ebenso für die Gruppen: Gruppe_Kategorie, Gruppe_Kategorie

	Ich denke die Tabelle Kategorie wird später nicht so viele Einträge haben, aber die Tabelle 
	Kommentar wird später Zig Tausend Einträge haben.
	Eine gemeinsame Tabelle "Kommentar" hätte ja auch noch die Referenzen auf News, Forum etc.
	Demnach würden die dann auch immer noch mitgeladen werden - wobei immer nur eines der Drei (News, Forum, Gruppe)
	benötigt wird.
	Oder wie seht ihr das?
	Problem wäre: Es wäre nicht redundant.

	Technologie:
		Hibernate, MySQL

		Vielen Dank für Lösungsvorschläge
	mfg


----------



## fastjack (29. Mrz 2011)

Gib doch den Kommentaren einen Typ (News, Forum Gruppe). Also Typtabelle und den Typen in der Kommentartabelle speichern. Gleichzeitig noch ein Feld namens Referenz oder so, das die Id des jeweiligen Datensatzes in der jeweiligen Tabelle enthält. Selektieren kannst Du dann bequem über den Typen.


----------



## internet (29. Mrz 2011)

Gute Idee. 
Vielen Dank


----------



## internet (5. Apr 2011)

wäre es (falsch) aus Performance- Gründen jeweils eine Tabelle "Kommentar" anzulegen?


----------



## eskimo328 (5. Apr 2011)

nicht direkt falsch, aber eher unschön.

Um die Performance zu verbessern, kann man den Typ des Kommentars (News, Forum, Gruppe) in den Index mit aufnhemen bzw. entsprechende Indizes erstellen. Damit kann die Geschwindigkeit bei SELECTs erheblich erhöht werden.


----------



## internet (11. Apr 2011)

hast du ein Beispiel dafür?


----------



## fastjack (11. Apr 2011)

Erstmal checkst Du nach der Tabellenerstellung ab, ob schon Indizes existieren:

MySQL :: MySQL 5.1 Referenzhandbuch :: 13.5.4.12 SHOW INDEX

Wenn die Spalten schon indiziert sind, brauchst Du auch keine Indizes mehr zu erzeugen, ansonsten:

MySQL :: MySQL 5.1 Referenzhandbuch :: 13.1.4 CREATE INDEX


----------

