Ich würde die Spalte "Geschlecht" nennen.
Data Type Bytes Taken Number/Range of Values
------------------------------------------------
TinyINT 1 255 (zero to 255)
INT 4 - 2,147,483,648 to 2,147,483,647
BIT 1 (2 if 9+ columns) 2 (0 and 1)
CHAR(1) 1 26 if case insensitive, 52 otherwise
Der BIT- Datentyp kann ausgeschlossen werden, da er nur zwei mögliche Geschlechter unterstützt, was nicht ausreichend ist. Während INT mehr als zwei Optionen unterstützt, benötigt es 4 Bytes - die Leistung ist bei einem kleineren / engeren Datentyp besser.
CHAR(1)
hat den Vorteil gegenüber TinyINT - beide nehmen die gleiche Anzahl von Bytes an, aber CHAR bietet eine engere Anzahl von Werten. Die Verwendung CHAR(1)
würde die Verwendung von "m", "f" usw. zu natürlichen Schlüsseln gegenüber der Verwendung von numerischen Daten machen, die als Ersatz- / künstliche Schlüssel bezeichnet werden. CHAR(1)
wird auch in jeder Datenbank unterstützt, falls eine Portierung erforderlich ist.
Fazit
Ich würde Option 2 verwenden: CHAR (1).
Nachtrag
Ein Index in der Spalte "Geschlecht" würde wahrscheinlich nicht helfen, da ein Index in einer Spalte mit niedriger Kardinalität keinen Wert enthält. Das heißt, die Werte sind nicht unterschiedlich genug, damit der Index einen Wert liefert.