Nehmen wir an, Sie haben in einer zufälligen Tabelle eine Spalte mit dem Namen status. Die realen Werte wären entweder aktiviert oder deaktiviert.
Ist es besser, wenn der Datentyp dieser Spalte ein int/bool (1 oder Null) ist oder ENUM
mit den Werten enabled
und disabled
verwendet? Was sind die Vor- oder Nachteile?
Nehmen wir an, Sie haben statt nur zwei gültigen Status 4 oder 10 oder sogar mehr? Schwanken die Vor- und Nachteile mit zunehmender Anzahl der erforderlichen Werte auf die eine oder andere Seite?
Ich fand einen sehr bizarren, aber informativen Artikel ungefähr 8 Gründe, warum man ENUM nicht verwenden sollte.
Auch ohne den Artikel weiß ich
Nun, zuerst haben wir die Speicheranforderungen . Ich gehe davon aus, dass Sie einen winzigen Punkt gemeint haben (anstelle von int).
An der Oberfläche sind sie also alle gleich. ENUM nimmt jedoch einige Metadaten für den damit verbundenen Zeichenfolgenwert auf ( älteres src )
Ich würde sagen, wenn Sie mehr Werte hinzufügen, beginnt jeder Vorteil von ENUM
wegzuschwingen. Insbesondere, wenn Sie die Werte hinzufügen, nachdem die Tabelle bereits verwendet wird, da Sie die Tabellenstruktur ändern müssen, um sie zu berücksichtigen.
Was ist der Vorteil der Verwendung eines ENUM
? Eine Zeichenfolgendarstellung dessen, was der Wert bedeutet. Das war's, soweit es mich betrifft. Wie wertvoll das ist, hängt von Ihrer Anwendung ab.
Ich finde, ENUM ist eine Kurzformdefinition einer Codetabelle. Der Hauptvorteil besteht darin, dass der Code vermieden wird, der zum Verbinden und Anzeigen der Codebeschreibung erforderlich ist. Es erleichtert auch das Festlegen der Werte, wenn sie in Zeichenfolgenform eintreffen.
Ich finde, es hat die folgenden Nachteile: