2010-11-28 18 views
17

Was ist die beste Vorgehensweise für Felder, die True/False-Werte enthalten?Enum ('Ja', 'Nein') vs Tinyint - welche zu verwenden?

Solche Spalten können als Enum ("Ja", "Nein") oder als Tinyint (1) definiert werden. Ist einer besser/schneller als der andere?

Ist es besser, enum ('1', '0') vs. enum ('ja', 'nein') zu verwenden (dh schreibt es für jede Zeile 'ja' oder 'nein') so wird die Datenbankspeichergröße größer)?

+3

er ... verwenden boolean? –

+3

Ein Boolean ist im Grunde ein Tinyint (1). – kapa

Antwort

11

Außerdem ist ENUM eine nicht standardmäßige MySql-Erweiterung. Sie sollten es vermeiden, besonders wenn Sie die gleichen Ergebnisse in einer Standardmethode erzielen können.

12

BOOLEAN Typ gibt es aus einem Grund. Es ist in der Tat ein TINYINT(1) aber da es da ist, muss es der empfohlene Weg sein.

15

vermeiden Enum aus diesem reasons

Unterm Strich ist, dass ENUM seine Platz hat, sollte aber sparsam eingesetzt werden. Das Modell sollte die Einschränkungen erzwingen, nicht die Datenbank; Das Modell sollte die Daten in nützliche Informationen für Ihre Views interpretieren, nicht die Datenbank.