Ich würde das tun, indem Sie eine Querverweistabelle machen.
Beispiel:
Tabelle: Beiträge
Columns: pstkey | userid | postMessage | etc...
pstkey ist der Schlüssel für den Posten Körper. Benutzer-ID ist die Person, die den Beitrag erstellt hat. postMessage ist der eigentliche Posteintrag.
Tabelle: Kommentare
Columns: comkey | pstkey | userid | commentMessage | etc...
COMKey der Schlüssel für die gemacht Kommentar. Bezug auf den Post mit dem PSTKey. Benutzer-ID ist die Person, die den Kommentar abgegeben hat. und dann commentMessage ist der Text des eigentlichen Kommentars.
Tabelle: xref_postComm
Columns: xrefkey | pstkey | comkey | comkey2 |
Nun zum spaßigen Teil. Alle Posts gehen in die Post-Tabelle. ALLE Kommentare gehen in die Kommentartabelle. Die Beziehungen sind alle in der Kreuzreferenztabelle definiert.
Ich mache alle meine Programmierung auf diese Weise. Ich hatte das Privileg, mit einem der weltweit besten Datenbankingenieure zu arbeiten, der im Ruhestand war, und er brachte mir ein paar Tricks bei.
Wie die Querverweistabelle verwenden:
xrefkey | pstkey | comkey | comkey2
All that you look for is the population of a given field.
xref (Auto Incremented)
pstkey (Contains the pstkey for the post)
comkey (Contains the comkey for the comment post)
comkey2 (Contains the comkey for the comment post)
(but only populate comkey2 if comkey already has a value)
and of course you populate comkey2 with the key of the comment.
SEE, no reason for a 3rd tabel!
With this method you can add as many relationships as you want.
Now or in the future!
comkey2 ist Ihre Antwort auf eine Antwort. Wo diese einzelne Zeile enthält ... den Schlüssel des Posts, den Schlüssel des Kommentars und den Schlüssel der Antwort auf den Antwortkommentar. Alles getan durch Bevölkerung von Xref.
EXAMPLE:
PAGES.... Page table
POSTS
pstkey | pageid | user| Post
-------------------------------------
| 1 | 1 | 45 | Went to the store the....|
| 2 | 2 | 18 | Saw an apple on tv.....
COMMENTS
comkey | pstkey | user | Comment
-----------------------------------------------
| 1 | 1 | 9 | Wanted to say thanks...
| 2 | 1 | 7 | Cool I like tha.....
| 3 | 2 | 3 | Great seeing ya....
| 4 | 2 | 6 | Had a great....
| 5 | 2 | 2 | Don't sweat it man...
xref_PostCom
xrefkey | pageid | pstkey | comkey | comkey2 |
----------------------------------------------
| 1 | 1 | 1 | NULL | NULL | Post1 on Page1
| 2 | 1 | 1 | 1 | NULL | Comment1 under Post1
| 3 | 1 | 1 | 2 | NULL | Comment2 under Post1
| 4 | 2 | 2 | NULL | NULL | Post2 on Page2
| 5 | 2 | 2 | 3 | NULL | Comment3 under Post2 on Page2
| 6 | 2 | 2 | 4 | NULL | Comment4 under Post2 on Page2 (a second Comment)
| 7 | 2 | 2 | 4 | 5 | Explained below....
Comment key 5 is matched with comment key 4....under post2 on Page 2
Wenn Sie etwas wissen über beitreten, verbinden sie nach links, rechts kommen, innen/außen zu schaffen join SELECT ist die Datenfelder unter Verwendung dieser Beziehungen zu bekommen, Ihre Arbeit wird sehr viel einfacher.
Ich glaube der Ingenieur nennt dies im Grunde "die Datenkarte" von definierten Beziehungen. Der Trick besteht nun darin, wie Sie mit diesen Beziehungen auf sie zugreifen. Zuerst fällt es schwer, aber weiß, was ich weiß, ich weigere mich, es anders zu machen.
Was am Ende passiert ist, dass Sie am Ende schreiben 1 Skript, das sagt, ok, geh, uhh, alles und komm zurück. Sie werden mit 1 Funktionsaufruf enden, der nach Seite 1 fragt. Er kehrt mit page1, post 1, comment1 3 und den Antworten auf die Antwort in 1 Array zurück. Echo zur Ausgabe und fertig.
UPDATE FÜR KOMMENTAR Ich sagte die gleiche genaue Sache beim ersten Mal wurde mir gezeigt. Tatsächlich machte es mich wirklich wütend, dass der Datenbankprogrammierer mich dazu zwang, es so zu machen. Aber jetzt verstehe ich es. Die Vorteile sind so viele.
Vorteil 1) 1 Abfrage geschrieben werden kann, um alles in 1 Schuss zu ziehen.
2) Antworten in mehreren Abfragen können Arrays in einer Struktur auffüllen, die beim Drucken der Seite eine Schleife in einer Schleife anzeigen kann.
3) Das Aktualisieren Ihrer Software, die es verwendet, kann jede mögliche Designänderung unterstützen, die Sie jemals denken können. Makellose Erweiterbarkeit.
Der Typ, der es mir beigebracht hat, war der Angestellte, der Sears und Jpenny-Datenbanken neu gestaltete. Zurück, als sie 9 Bücher zum selben Haus wegen doppelter Datensätze Ausgaben hat.
Querverweistabellen verhindern viele Probleme im Design.
Das Herz zu dieser Theorie ist, kann eine Spalte nicht nur Daten enthalten, sondern dienen gleichzeitig als eine wahre oder falsche Aussage. Das in sich selbst spart Platz. Warum 20 Tabellen durchsuchen, wenn Sie eine suchen können? Eine indizierte Querverweistabelle kann Ihnen alles erzählen, was Sie über die anderen 20 Tabellen wissen müssen, was Sie brauchen, was Sie nicht brauchen und müssen die andere Tabelle überhaupt öffnen.
kurz: 1 Querverweis nichts anderes als INT enthält (2/11), dass Sie alles, was Sie wissen müssen, erzählt, bevor Sie jemals einen anderen Tisch öffnen, enthält nicht nur einwandfreie Erweiterbarkeit aber blitzschnell Ergebnisse. Ganz zu schweigen von der Möglichkeit doppelter Datensätze. Für Sie und mich sind doppelte Datensätze möglicherweise kein Problem. Aber zu Sears mit 4 Milliarden Rekorde bei $ 11 ein Buch, addieren sich Fehler.
Genau: Kommentare sind Kommentare, ob sie Antworten auf andere Kommentare sind oder nicht. –
Sorry, ich bin so langsam. Ich hab es geschafft! Vielen Dank. Jetzt meine Frage ist, wie füge ich die Antworten ein? Würde ich irgendeine Art von Beziehung kennen müssen? Wie diese Antwort ist die erste, diese Antwort ist 2. so Einzug x2, diese Antwort ist 3., so IDENTX3 – jpjp
@jpjp: Ich würde dies auf der Anwendungsebene tun. Wenn Sie den Baum der Kommentare erstellen, wissen Sie viel, um sie einzurücken. Nur noch eins als Elternteil. –