Ich habe ein Tabellendesignszenario und möchte als Nicht-DBA-Typ Meinungen dazu haben, welche skalierbarer sind.
Angenommen, Sie werden gebeten, Informationen zu Häusern für ein U-Bahn-Gebiet aufzuzeichnen, angefangen bei einem kleinen Viertel (200 Häuser), bis zu 5000000+ Häusern.
Sie müssen Basisinformationen speichern: ID-Nr. (Eine eindeutige Losnummer, die wir als eindeutigen Index verwenden können), Adr, Stadt, Bundesland, Postleitzahl. Feiner, einfacher Tisch wird damit umgehen.
Aber jedes Jahr werden Sie gebeten, zusätzliche Informationen zu allen Häusern aufzuzeichnen - und WELCHE Informationen werden sich jedes Jahr ändern. So werden Sie beispielsweise im ersten Jahr aufgefordert, den Nachnamen und das Quadratmeter des Eigentümers aufzuzeichnen. Im zweiten Jahr werden Sie gebeten, den Nachnamen beizubehalten, das Quadratmeter zu löschen und stattdessen die Vornamen der Besitzer zu sammeln.
Schließlich ändert sich jedes Jahr die Anzahl der zusätzlichen Spalten. Könnte mit 2 zusätzlichen Spalten beginnen, dann mit 6 im nächsten Jahr, dann wieder runter mit 2.
Daher besteht ein Tabellenansatz darin, zu versuchen, die benutzerdefinierten Informationen als Spalten in den Haustabellen hinzuzufügen, sodass nur eine Tabelle vorhanden ist.
Aber ich habe eine Situation, in der jemand die Tische dafür ausgelegt hat:
Spalten "Haustabelle": ID, Adr, Stadt, Bundesland, Postleitzahl - mit einer Zeile pro Haus
ID Addr City State Zip
-------------------------------------------
1 10 Maple Street Boston MA 11203
2 144 South Street Chelmsford MA 11304
3 1 Main Avenue Lowell MA 11280
Spalten "Benutzerdefinierte Infotabelle": ID, Name, Wert - die Tabelle sieht folgendermaßen aus:
ID Name Value
1 Last Name Smith
2 Last Name Harrison
3 Last Name Markey
1 Square Footage 1200
2 Square Footage 1930
3 Square Footage
Es gibt also mehrere Zeilen für jeden einzelnen Hausdatensatz. Jedes Jahr, wenn sich die erforderlichen optionalen Informationen ändern, wird diese Tabelle im wahrsten Sinne des Wortes neu erstellt, sodass sie im nächsten Jahr so aussehen könnte:
1 Last Name Smith
2 Last Name Harrison
3 Last Name Markey
1 First Name John
2 First Name Harry
3 First Name Jim
Schließlich sammeln Sie 100.000 Hauszeilen UND in einem Jahr gibt es 10 zusätzliche Informationen. Die zweite Tabelle enthält jetzt 1.000.000 Informationszeilen, von denen viele redundante (Beschreibungs-) Informationen enthalten. Die Datenbankanforderungen insgesamt sind, dass die Benutzer die Hauszeileninformationen und die zugehörigen benutzerdefinierten Feldwerte Tausende Male pro Tag abrufen müssen.
Also meine Frage: Wäre es schlecht (oder schrecklich), stattdessen entweder:
A) Legen Sie eine Haustabelle mit einer maximalen Anzahl von benutzerdefinierten Spalten (mit den Bezeichnungen "1" bis "10") an und fügen Sie diese benutzerdefinierten Werte direkt in die Hauszeilen ein
ODER
B) Speichern Sie die benutzerdefinierten Informationen in der Haustabelle. Erstellen Sie jedoch jedes Jahr, wenn sich die Anforderungen ändern, die Haustabelle mit nur der Anzahl der Spalten neu, die für benutzerdefinierte Informationen erforderlich sind, mit der Idee, dass die Anforderungen verrückt werden könnten und Sie nie wissen, wie viele maximal sind Optionale Felder können angefordert werden?
Danke, hoffe das macht Sinn!