Beste Technik zum speichern von Geschlecht in der MySQL-Datenbank
Welche ist die beste Methode zum speichern von Geschlecht in MEINE SQL-Datenbank? Ich bin etwas irritiert über dieses Thema, weil verschiedene Menschen auf verschiedene Weise. Einige vermuten Speicherung in INT ist besser, aber andere schlägt TINYINT und Enum , Aber einige andere schlägt vor, speichern Sie es in ein CHAR(1) M für Männliche und F Für Frauen.
Darüber hinaus wird es immer zweifelhafter, während das hören http://en.wikipedia.org/wiki/ISO_5218
Aber in meiner Sicht der Speicherung in CHAR ist eine gute Idee, weil es bietet mehr Robustheit als ENUM ?Auch ich bin besorgt über die Skalierbarkeit, die wissen wollen eine bessere Lösung für die Speicherung von Millionen von Datensätzen.
Einen wertvollen Vorschlag von einem Experten geschätzt wird.
Könnten Sie bitte etwas konkreter !!
Es bedeutet, dass viele Ihre tags nicht im Zusammenhang mit der Frage. Die zwei, die wirklich springen sind
mysqli
oder mysqldump
- Ihre Frage ist wirklich nicht haben, etwas mit Ihnen zu tun.Ich habe retagged und aktualisiert den Titel 😉
InformationsquelleAutor t0m | 2013-06-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Persönlich (denn dies ist eine etwas subjektive Frage), dann würde ich mit
ENUM
. MySQL unterstützt keineCHECK
Einschränkungen, so dass dieENUM
ist der einzige Weg, um wirklich sicherzustellen, dass der WertM
oderF
(oderm
oderf
). Für mich ist das der wichtigste Punkt.Darüber hinaus die
ENUM
sollte nur ein byte Speicherplatz (laut docs), so ist es nur als effizienter Speicher-Weise wieCHAR(1)
oderTINYINT
.Ich verstehe nicht, die
TINYINT
Ansatz, weil Sie am Ende mit Anfragen wie dieser:Ist
1
Männlich oder weiblich? Und wenn es Männlich, weiblich0
? Oder ist es2
? Oder vielleicht16
? Sie bereits daran, ein Haufen von Dingen zu schreiben (und zu pflegen) ein Antrag; keine Notwendigkeit, hinzuzufügen, zu dem Haufen.Nachtrag 2017-12-01 von Ed Gibbs: Wiederaufgreifen meine Antwort, wenn ich stolperte über es auf ein anderes Google-Suche...
Den
ENUM
Ansatz hat Verdienst, in Fällen verwenden, mit einem statischen, eindimensionalen Domäne von Werten (z.B. -, Y/N, An/Cc/Bcc), aber es ist nicht gültig für die Gleichstellung. Meine Antwort war im nerd-Kontext ", wie Sie Grenze in einer Spalte, um M "oder " F" und nicht in den breiteren Kontext der gender-definition.D Mac ' s Lösung ist robuster und aufgeklärt, aber es ist immer noch unvollständig, da auch Einzel-dimensional in der Erwägung, dass die Gleichstellung ist multi-dimensional.
Bei der Klassifizierung der Menschen in jede subjektive Kategorie (Geschlecht, Rasse, Klasse, Identität, religion, politischer Zugehörigkeit, Beschäftigung, ethnische Identität, sexuelle Präferenz, amouressness, etc.), betrachten Sie mehrere Möglichkeiten, in denen Sie sich selbst identifizieren. Es ist nicht immer ein "check ein single-box" - Lösung.
Das geht über die Ideologie. Versuchen, zu kategorisieren, eine multi-dimensionale Entität in einer einzigen dimension ist ungenau und die Ungenauigkeit Kosten hat.
Ich weiß, und ich kann nicht sagen, dass Sie falsch sind. Es ist subjektiv. Für mich ist die wichtigste Frage, die ein
ENUM
wird nicht zulassen, dass ungültige Werte, so dass Sie Vertrauen können, den Wert in Millionen Zeilen. Zu tun, dass jeder andere Weg in MySQL bräuchte man einen char (oder was auch immer) - Spalte mit einer foreign-key-Referenz auf eine master-Tabelle mit den gültigen Werten. In diesem speziellen Fall, wo die Datenmenge so klein ist (vermutlich M und F, eventuell NULL für unbekannt) und statische (keine Notwendigkeit, die Tabelle zu ändern: hinzufügen von Unterstützung für andere Geschlechter, politische/ideologische Fragen beiseite) einENUM
gar nicht so schlecht.In Laravel, wenn ein Rollback für eine migration
enum
geben Sie die folgende Fehlermeldung verursacht:[Doctrine\DBAL\DBALException] Unknown database type enum requested, Doctrine\DBAL\Platforms\MySQL57Platform may not support it.
.InformationsquelleAutor Ed Gibbs
Wenn Sie vielleicht jemals zu tun haben, mit komplexer gender-Themen (in-Prozess-gender-änderungen oder trans-gender), der beste Weg ist die Verwendung einer Referenz-Tabelle mögliche Werte:
Zunächst, Sie können laden Sie es mit:
Diese Weise können Sie die Tabelle als neue Werte für die Gleichstellung notwendig werden. In Ihrem BENUTZER - (oder was auch immer) - Tabelle, die Sie speichern
static_gender_id
und, um den Wert für das Geschlecht mit einem JOIN.InformationsquelleAutor D Mac