Es gibt zwei grundlegende Kräfte für relationales Datenbank-Design betrachtet:
- reduzieren Redundanz und die Abhängigkeit von Daten. (Normalisierung)
- Das Abfrage-Muster der Anwendung. (Use Case/Scenarios)
Der Normalisierungsteil ist gut dokumentiert. Sie können wiki oder this für Details dazu verweisen. Sie sollten dies unbedingt berücksichtigen, wenn Sie Bedenken hinsichtlich des Datenwachstums haben oder wenn Sie beobachten, dass das Ändern eines Feldwerts mehrere Spaltenwerte ändern muss (Datenabhängigkeit).
Der zweite Teil ist mehr auf Ihre Anforderung subjektiv. Wenn Ihr Abfrage-Muster einige Daten über Abfragen hinweg benötigt und es nicht sehr kostspielig ist (platzweise), beide Daten in derselben Tabelle zu behalten, kann man die Normalisierungstechnik ignorieren/verbiegen.
Für Ihr Beispiel:
Wenn Benutzer Tabellendaten hatten spezifisch für Benutzer wie ihre Initialen, Adresse, Vorlieben, dann können Sie es als separate Tabelle haben.
in ähnlicher Weise für Benutzer Gemeinschaften Tabelle, wenn neben Ruf es Daten wie Anzahl der Beiträge hat, die Anzahl von Leuten etc etc. Es kann/sollte eine andere Tabelle
sein, warum nicht?
Sie können die Normalisierungsformulare für die Vorteile beziehen. :)
Aber wenn Ihr Use Case/Abfrage-Muster ist, dass "einen Benutzer gegeben und Blog, sagen Sie mir den Ruf des Benutzers" oder etwas Ähnliches und es gibt keine zusätzlichen Daten, können Sie die Reputation in der gleichen Tabelle.
Warum
Es wird Ihre Anfragen vereinfachen. Anstatt über Tabellen zu verbinden, wird es eine einfache Abfrage mit weniger Komplexität sein.
Warum hat Ihre Tabelle Blogs communities_id und UserCommunities_Communities_id? Wird der Wert nicht gleich sein? – k1133
Ich habe das mehrmals getan, ohne Reue. Was glaubst du, würdest du gewinnen, wenn du Ansehen in eine separate Tabelle bringst? –
@WalterMitty Nichts wirklich ... Ich bin ziemlich neu in der DB-Design, so war ich ein bisschen besorgt über mögliche Nachteile, die ich nicht von –