2010-12-28 15 views
1

Ich möchte "Tweets" und "Facebook Status" in meiner App als Teil der "Status-Sammlung" speichern, so dass jede Status-Sammlung eine Menge Tweets oder eine Menge Facebook enthält Status. Für Facebook bin ich nur an Text interessiert, also werde ich keine Videos/Fotos für jetzt speichern.sollte ich zwei separate Tabellen für zwei ähnliche Objekte erstellen

Ich frage mich in Bezug auf Best Practice für DB-Design. Ist es besser, eine Tabelle zu haben (setzen Sie das Maximum für den Status auf 420, um sowohl das Facebook- als auch das Twitter-Limit einzuschließen) mit der Spalte "Typ", die den Status bestimmt, oder ist es besser, zwei separate Tabellen zu haben? und warum?

Antwort

1

Streng genommen ist ein Tweet nicht dasselbe wie ein FB-Update. Vielleicht ignorierst du gerade Nicht-Text, aber du kannst später deine Meinung ändern und an einem Modell festhalten, das nicht funktioniert. In der Regel sollten Objekte nicht als austauschbar behandelt werden, es sei denn, sie sind wirklich. Wenn sie nur ähnlich sind, sollten Sie entweder zwei separate Tabellen verwenden oder bei Bedarf zusätzliche Spalten verwenden.

Alles, was gesagt wird, wenn es wirklich nur Text ist, können Sie wahrscheinlich mit einem einzigen Tisch durchkommen. Aber das ist eine Frage der Meinung und Sie werden wahrscheinlich viele Antworten bekommen.

+0

Sie machen einen guten Punkt. Ich würde nur sagen, dass Sie Ihre DB wahrscheinlich basierend darauf entwerfen sollten, was Ihre Geschäftsobjekte nicht sind, was die realen Weltobjekte sind. Ich denke, es kommt darauf an, ob er sich für SocialMediaMessages oder Tweets und FB-Posts interessiert ... –

+0

Ja, das macht Sinn. Anforderungen ändern sich in der Zukunft normalerweise und wir benötigen möglicherweise zusätzliche Informationen für jeden Typ in der Zukunft. – Tam

1

würde ich die Nachrichten in eine Tabelle setzen und eine andere, die den Typ definiert:

SocialMediaMessage 
------------------ 
id 
SocialMediaTypeId 
Message 

SocialMediaType 
--------------- 
Id 
Name 

Sie scheinen ähnlich genug, dass es keinen Sinn, sie zu trennen ist. Es wird Ihnen auch das Leben erleichtern, wenn Sie auf beiden Social-Networking-Websites abfragen möchten.

1

Es ist wahrscheinlich einfacher, auf Tabelle zu verwenden und Typ zu verwenden, um sie zu identifizieren. Sie benötigen nur eine Abfrage/gespeicherte Prozedur für den Zugriff auf die Daten statt einer Abfrage für jeden Typ, wenn Sie mehrere Tabellen haben.

Verwandte Themen