Datenbankdesign: viele Zeilen vs. viele Tabellen?

8

Ich mache dieses Datenbankdesign-Zeug für ein System, wo ich einige Arrays variabler Länge in der MySQL-Datenbank speichern muss.

Die Länge der Arrays ist (höchstens) in Hunderten, wenn nicht Tausenden.

Es werden regelmäßig neue Arrays erstellt, vielleicht täglich zehn.

  1. sollte ich diese Arrays in einer Tabelle speichern, die bald gigantisch oder
  2. werden wird
  3. Erstellen Sie eine neue Tabelle für jedes Array und bald eine große Anzahl oder Tabellen?
  4. etwas anderes? (wie formatierte Textspalte für die Array-Werte)

um zu verdeutlichen, 1. bedeutet grob

%Vor%

und 2.

%Vor%

Die arr_values ​​werden als Arrays verwendet, die durch Verbinden mit einem vollständigen Array abgefragt werden. Irgendwelche Ideen, warum einige Ansätze besser sind als andere?

    
PLane 28.07.2011, 12:57
quelle

4 Antworten

7

Wie bei allen Antworten auf diese Art von Fragen hängt es immer etwas davon ab, was Ihr Endergebnis sein muss, aber persönlich würde ich immer eine einzelne Tabelle gegenüber dynamisch erstellten Tabellen favorisieren - es macht viel einfachere Abfragen. Es macht es auch etwas einfacher (denke ich), wenn man sich das Datenbankschema anschaut - viele tausend Tabellen können das Finden der benötigten Daten beim direkten Zugriff auf die Datenbank ein wenig erleichtern.

Wenn Sie außerdem feststellen müssen, dass Sie Ihr "Array" irgendwann mit einem anderen Feld erweitern müssen, bedeutet dies, dass eine einzelne Datenbanktabelle geändert werden muss und nicht viele.

    
Paddy 28.07.2011, 13:02
quelle
25

Viele Zeilen in wenigen Tabellen. Eine neue Tabelle für jede neue Struktur / jeden neuen Datensatz zu erstellen ist absolut falsch und der schlechteste Weg, eine relationale Datenbank zu verwenden.

In der Tat, fast immer, wenn Ihr Code Tabellen dynamisch erstellt, tun Sie etwas schrecklich, furchtbar falsch.

    
meagar 28.07.2011 13:00
quelle
1

Es sieht so aus, als ob jedes Datenfeld ein eigenes Schema hat. Haben Sie überlegt, eine NoSQL-Datenbank zu verwenden? Es wird meiner Meinung nach viel einfacher sein, damit zu arbeiten.

Wenn Sie bei MySQL bleiben müssen, dann wollen Sie auf jeden Fall so wenige Tabellen wie möglich. Basierend auf dem, was Sie vorgestellt haben, könnten Sie eine Tabelle mit drei Spalten haben -

%Vor%

Und wenn Sie mehrere Kopien desselben Arrays "type" benötigen, fügen Sie auch eine Instanzspalte hinzu.

    
MattBelanger 28.07.2011 13:13
quelle
0

Erhöhen Sie die Anzahl der Tabellen, bis das Schema normalisiert ist (sehr wenig oder keine Redundanz / Duplizierung). Erhöhen Sie nicht die Anzahl der Tabellen darüber hinaus und seien Sie vorsichtig beim Hinzufügen einer neuen Tabelle für die Leistung (moderne Datenbanken sind mit wenigen Ausnahmen schneller als Sie denken) oder bei Edge-Fällen, wie z die Lebensdauer der Anwendung oder für & lt; 1% der Zeilen.

Es wäre auch einfacher, Ihre Frage zu verstehen, wenn wir die Domäne der Frage kennen - sind diese Adressen, Kunden, Bücher oder was?

    
MatthewMartin 28.07.2011 13:05
quelle

Tags und Links