2009-06-28 5 views
0

Ich arbeite an einem Projekt für einen Freund und bin auf eine schwierige Entscheidung gestoßen. Das Projekt besteht aus Essays, die jeweils in Frage gestellt und kommentiert werden können. Die Sache ist, dass nur eine Person in der Lage ist, den Aufsatz anzufechten, und dann sind alle anderen ausgesperrt und können nur einen Kommentar abgeben."Widerlegungen" und "Kommentare" - Zwei DB-Tabellen oder eine?

Die Widerlegungen können nur zwei Antworten tief sein, 2.000 Wörter für das erste und 500 Wörter für das zweite. An diesem Punkt gibt es keine Widerlegungen mehr - der Rest der Diskussion findet in den Kommentaren statt (feste Länge von n Zeichen, im Gegensatz zu Widerlegungen), wenn die Zuschauer das Gefühl haben, das Thema sei nicht erschöpft.

Also entschied ich zunächst, dass Widerlegungen und Kommentare strukturell die gleiche Sache waren, und ich würde lediglich ein boolesches Feld innerhalb meiner Kommentartabelle hinzufügen, um anzuzeigen, ob der Kommentar is_rebuttal ist. Aber ich bin ein bisschen unsicher in dieser Richtung.

Was würde das Kollektiv vorschlagen? Jeder Aufsatz kann nur zwischen zwei Personen diskutiert werden, und beide können nur zweimal sprechen. Sehr ähnlich wie Kommentare, aber getrennt.

+0

So ist es wie eine Konversation? Person A schreibt etwas, Person B stimmt nicht zu, dann kann Person A auf Person B antworten und Person B kann auf Antwort von Person A antworten, wonach alles, was von irgendjemandem gesagt wird, ein Kommentar ist? – nilamo

+0

Richtig, Nilamo. Person A hat einen Aufsatz veröffentlicht. Person B bestreitet einige der Fakten, und die Debatte beginnt. Sie ist nach jeweils zwei Publikationen "erschöpft" und die einzige erlaubte Kommunikation erfolgt durch "Kommentare", die sich von der Debatte selbst unterscheiden. – Sampson

+0

So Kommentare können zu der Zeit nach dem Aufsatz geschrieben werden, richtig? Ob Rückwürfe eingegeben werden, ist irrelevant? – hythlodayr

Antwort

1

Also würde ich wahrscheinlich eine Tabelle für "Gespräche" haben, mit Feldern für die UserID des Essay-Posters, der Single-Responder (zunächst NULL) und wahrscheinlich ein Titel oder eine Zusammenfassung. Eine andere Tabelle würde 'Aufsätze' mit Feldern für die Benutzer-ID des Essays oder des Beitrages, die Konversations-ID, den Text des Posts und eine Post-Zählung enthalten, um sie in die richtige Reihenfolge zu bringen. Schließlich würde ich eine "Kommentar" -Tabelle mit Kommentar-Postern userIDs, EssayID's haben, um sie zu Essay-Posts zu verlinken, commentIDs, um sie in den Thread-Modus zu bringen (wenn das passend ist) und natürlich den Kommentar-Text.

+0

+1 Ich mag die Idee einer separaten Metakonversationstabelle, mit der Fähigkeit, die Debatte in Frage zu stellen. Ich mag auch den bitweisen Aspekt Ihrer Antwort: 1 Tisch ODER 2 Tische? 3 Tische. – akf

+0

Ich denke so viel.Normalerweise ist es eine einfache Sache, jedes der "Dinge" zu modellieren, und wenn die Dinge in einer Art von Gruppen sind, dann müssen auch diese modelliert werden. – SingleNegationElimination

1

Nun, schwer zu sagen, ohne mehr über das System zu wissen. Aber ich würde sagen, von dem, was Sie schreiben, ja, Widerlegungen & Kommentare sind ähnlich und sollten in eine einzige Tabelle gebracht werden.

Mein Motto ist immer: Im Zweifelsfall die einfachste Methode verwenden. Was hier eindeutig eine Tabelle ist.

Wenn später herauskommt, dass separate Tabellen nützlicher sind, können Sie immer umgestalten.

+0

Also "Rebuttal B" zu identifizieren wäre ein Problem der Überprüfung von Is_Rebuttal, Comment_ID, Comment_DateTime und Comment_Author_ID? – Sampson

0

Wenn Kommentare und Widerlegungen unterschiedliche maximale Längen haben und unterschiedliche Einschränkungen, wie viele Sie pro Aufsatz haben können, klingen sie für mich sehr unterschiedlich. Ihr Schema wird klarer, wenn Sie zwei Tabellen für Entitäten mit unterschiedlichen Einschränkungen erstellen und unterschiedliche Spalten- und referenzielle Integritätsbedingungen festlegen.

+0

Sie haben ihre Unterschiede, ja. Ich denke, ich sollte Ähnlichkeiten/Unterschiede ein wenig genauer vergleichen. Vielen Dank. – Sampson

Verwandte Themen