Nehmen wir an, Sie haben in einer zufälligen Tabelle eine Spalte mit dem Namen status . Die Werte der realen Welt sind entweder aktiviert oder deaktiviert .
Ist es besser, wenn der Datentyp dieser Spalte ein int / bool (1 oder Null) ist oder ENUM
wenn die Werte enabled
und sind disabled
? Was sind die Vor- oder Nachteile?
Nehmen wir an, Sie haben 4 oder 10 oder sogar mehr als zwei gültige Status. Schwanken die Vor- und Nachteile je nach Anzahl der erforderlichen Werte?
mysql
database-design
datatypes
Jake Wilson
quelle
quelle
Antworten:
Ich fand einen sehr bizarren, aber informativen Artikel über 8 Gründe, warum man ENUM nicht verwenden sollte.
Auch ohne den Artikel weiß ich Bescheid
quelle
units
Modell für einen Shopartikel, bei dem jeder Datensatz Eigenschaften für die zugehörigen Einheiten haben sollcomposition
. dh Ton, Kg,Nun, zuerst haben wir die Speicheranforderungen . Ich gehe davon aus, dass Sie eine winzige Zahl (anstelle von int) gemeint haben.
An der Oberfläche sind sie also alle gleich. ENUM nimmt jedoch einige Metadaten für den damit verbundenen String-Wert auf ( älteres src )
Ich würde jedoch sagen, wenn Sie mehr Werte hinzufügen, schwankt jeder Vorteil davon weg
ENUM
. Insbesondere, wenn Sie die Werte hinzufügen, nachdem die Tabelle bereits verwendet wird, da Sie die Tabellenstruktur ändern müssen, um sie anzupassen.Was ist der Vorteil der Verwendung von
ENUM
? Eine Zeichenfolgendarstellung, was der Wert bedeutet. So weit ich weiß. Wie wertvoll das ist, hängt von Ihrer Anwendung ab.quelle
Ich finde, ENUM ist eine Kurzformdefinition einer Codetabelle. Der Hauptvorteil besteht darin, dass der zum Beitreten und Anzeigen der Codebeschreibung erforderliche Code vermieden wird. Es erleichtert auch das Festlegen der Werte, wenn sie in Zeichenfolgenform eingehen.
Ich finde es hat folgende Nachteile:
quelle