Ich bin zwischen Zeile vs Spalten Tabelle Design für die Speicherung einiger Elemente stecken, aber die Entscheidung ist, welche Tabelle ist einfacher zu verwalten und wenn Spalten dann wie viele Spalten sind am besten zu haben? Ich habe zum Beispiel Objekt-Metadaten, idealerweise sind es 45 Informationen (nach der Normalisierung) auf derselben Ebene, die ich pro Objekt speichern muss. Sind 45 Spalten in einer großen Lese-/Schreib-Tabelle also gut? Kann das in einer realen Situation mit vielen gleichzeitigen Lese- und Schreibvorgängen einwandfrei funktionieren?
Antworten
Zu viele Anzeigen?Wenn alle oder die meisten Ihrer Spalten mit Daten gefüllt sind und diese Zahl fest ist, dann verwenden Sie einfach 45
Felder. Es ist nichts grundsätzlich Schlechtes an 45
Spalten.
Si alle Bedingungen erfüllt sind:
-
Sie haben die Möglichkeit, die Attribute, die zum Zeitpunkt des Entwurfs weder bekannt sind noch vorhergesagt werden können
-
Die Attribute werden nur gelegentlich gefüllt (z.B. 10 oder weniger pro Entität)
-
Es gibt viele mögliche Attribute (Hunderte oder mehr)
-
Für die meisten Entitäten wird kein Attribut ausgefüllt
dann haben Sie eine solche namens sparce matrix
. Dieses (und nur dieses) Modell kann besser dargestellt werden mit einer EAV
Tisch.
Nehmen wir den Teil "leichter zu verwalten" der Frage:
Wenn sich die Eigenschaftsnamen, die Sie sammeln, nicht ändern, dann sind Spalten genau richtig. Selbst wenn sie nur spärlich bevölkert ist, ist der Speicherplatz billig.
Wenn Sie jedoch bis zu 45 Eigenschaften pro Element (Zeile) haben, die sich jedoch von einem Element zum anderen grundlegend unterscheiden können, ist die Verwendung von Zeilen besser.
Nehmen wir zum Beispiel einen Produktkatalog. Ein Produkt könnte Farbe, Gewicht und Größe haben. Ein anderes hat vielleicht eine Anzahl von Knöpfen oder Griffen. Dies sind natürlich völlig unterschiedliche Eigenschaften. Darüber hinaus lässt diese Art von Daten vermuten, dass neue Eigenschaften hinzugefügt werden, die sich nur auf eine bestimmte Gruppe von Produkten beziehen können. In diesem Fall sind Zeilen viel besser.
Eine weitere Möglichkeit ist die Verwendung von NoSql und eines dokumentenbasierten Datenbankservers. Dies würde es Ihnen ermöglichen, die benannten "Spalten" auf der Basis der einzelnen Elemente festzulegen.
Die Verwaltung der Zeilen wird jedoch von der Anwendung übernommen. Dies erfordert einige fortgeschrittene DB-Kenntnisse. Die Verwaltung der Spalten wird vom Entwickler zur Entwurfszeit vorgenommen, was für die meisten Menschen einfacher zu verstehen ist.
Ich weiß nicht, ob ich richtig bin, aber ich habe einmal in MySQL gelesen, um Ihre Tabelle mit minimalen Spalten IF POSSIBLE zu halten, (lesen: http://dev.mysql.com/doc/refman/5.0/en/data-size.html ), HINWEIS: dies ist, wenn Sie MySQL verwenden, ich weiß nicht, ob ihr Konzept für andere DBMS wie Oracle, Firebird, Posgresql, etc. gilt.
Sie könnten sich Ihre Tabelle mit 45 Spalten ansehen und analysieren, was Sie wirklich brauchen, und die optionalen Felder in einer anderen Tabelle lassen.
Ich hoffe, es hilft, viel Glück