Hallo,
ich könnte jetzt hier ne halbe Bibel schreiben ...
Bitte nimm für gleichformatige Daten auch dieselbe physikalische Struktur! D.h. wenn eine Antwort (bzw. ein Beitrag) immer die gleichen Attribute hat (Ersteller, Datum, Bereich, Text) dann sollte sie bzw. er auch in der selben Tabelle gespeichert werden. Es gibt keinen vernünftigen Grund dies über mehrere Tabellen auszudehnen. Die Identifizierung, welcher Beitrag zu welchem anderen Beitrag gehört, kannst du über Fremdschlüsselbeziehungen auf dieselbe Tabelle gewährleisten. Zum Bleistift so:
CREATE TABLE Beitraege (
ID bigint NOT NULL IDENTITY(1,1) PRIMARY KEY
,Ersteller varchar(255) NOT NULL
,Text varchar(max) NOT NULL
,ErstellDatum datetime NOT NULL
,Forumskategorie varchar(255) NOT NULL
,IstErstbeitrag bit NOT NULL
,AntwortAufThema bigint NULL
,AntwortAufBeitrag bigint NULL
,CONSTRAINT FK_Parent FOREIGN KEY (AntwortAufBeitrag)
REFERENCES Beitraege (ID)
,CONSTRAINT FK_Them FOREIGN KEY (AntwortAufThema)
REFERENCES Beitraege (ID)
Das Beispiel ist in T-SQL (für MS SQL Server 2005) und muss für MySQL ggf geändert werden. Darüberhinaus ist es in mind. 2 Fällen nicht normalisiert (für den Zweck der Veranschaulichung ist dies jedoch Wurst²). Und es gibt mindestens noch 10 andere Implementierungsmöglichkeiten.
Übrigens, was unterscheidet bei dir ein "Thema" von einer "Antwort"? Wenn du genauer darüber nachdenkst: primär gar nichts, sekundär vielleicht ein paar Attribute / Flags (die dann für "Antworten" einen Default-Wert annehmen könnten oder NULL bleiben)
Und ausserdem, warum nimmst du nicht etwas, was es schon gibt? Vom Neuerfinden des Rades wirst du nicht reich (obgleich du das vielleicht gar nicht willst ;)). Für die Erweiterung des eigenen Horizontes ist es hingegen schon noch okay.
Grüsse,
Frank