2 Stimmen

Wie viele Spalten in der Tabelle sollen erhalten bleiben? - MySQL

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?

3voto

Quassnoi Punkte 396418

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.

0voto

Dejan Marjanović Punkte 18984

"Es gibt eine harte Grenze von 4096 Spalten pro Tabelle", dann sollte alles in Ordnung sein.

0voto

NotMe Punkte 86089

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.

0voto

allenskd Punkte 1785

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X