Meilleure technique pour stocker de genre dans la Base de données MySQL
Qui est la meilleure méthode pour stocker sexe dans MA Base de données SQL? Je suis un peu confus au sujet de ce problème, parce que les différents individus expriment de manière différente. Certains suggèrent de les stocker dans INT est mieux, mais d'autres suggèrent TINYINT et Enum , Mais certains autres suggèrent de le stocker dans un CHAR(1) M pour les Hommes et les F Pour les Femmes.
En outre, il devient de plus en plus douteux lors de l'examen de http://en.wikipedia.org/wiki/ISO_5218
Mais, à mon point de vue de la stocker dans CHAR est une bonne idée, car il fournit plus de robustesse que ENUM ?Aussi, je suis inquiet au sujet de l'évolutivité, veulent savoir une meilleure solution pour stocker des millions d'enregistrements.
Une précieuse suggestion d'un expert est très apprécié.
Pourriez-vous être plus précis !!
Cela signifie que beaucoup de vos balises ne sont pas liées à la question. Les deux qui ont vraiment sauter hors sont
mysqli
ou mysqldump
- votre question n'a pas vraiment rien avoir à faire avec eux.Je l'ai utilisé et mis à jour le titre 😉
OriginalL'auteur t0m | 2013-06-20
Vous devez vous connecter pour publier un commentaire.
Personnellement (parce que c'est un peu subjective de la question), j'irais avec
ENUM
. MySQL ne supporte pasCHECK
contraintes, de sorte que leENUM
est la seule façon de vraiment assurez-vous que la valeur estM
ouF
(oum
ouf
). Pour moi, c'est le point le plus important.En outre, la
ENUM
ne devrait avoir besoin que d'un seul octet d'espace de stockage (selon la docs), il est donc tout aussi efficace de stockage-sage commeCHAR(1)
ouTINYINT
.Je ne comprends pas le
TINYINT
approche à tous parce que vous vous retrouvez avec des requêtes comme:Est
1
mâle ou une femelle? Et si c'est un mâle, la femelle0
? Ou est-il2
? Ou peut-être16
? Vous avez déjà le souvenir d'un tas de choses à écrire (et de maintenir) une demande; pas besoin d'ajouter à la pile.Additif 2017-12-01 par Ed Gibbs: Revisiter ma réponse quand je suis tombé sur une autre recherche Google...
La
ENUM
approche a le mérite, en cas d'utilisation avec un statique, l'unique dimensions de domaine de valeurs (p. ex., Y/N, a/Cc/Bcc), mais il n'est pas valide pour le sexe. Ma réponse était dans le nerd contexte de "comment faire de vous limiter à une colonne de M" ou "F" et non pas dans le contexte plus large de l'égalité des sexes définition.D Mac solution est plus robuste et plus éclairée, mais elle est encore incomplète, parce qu'il est trop simple-dimensions alors que le sexe est multi-dimensionnel.
Lors de la classification des êtres humains dans toute catégorie subjective (le sexe, la race, l'identité de classe, de religion, de politique, le statut d'emploi, l'identité ethnique, l'orientation sexuelle, amouressness, etc.), prendre en considération les multiples façons dont ils peuvent s'identifier. Il n'y a pas toujours un "cocher une seule case" solution.
Cela va au-delà de l'idéologie. Essayer de catégoriser un multi-dimensionnelle de l'entité à une seule dimension est inexact, et l'inexactitude a un coût.
Je sais, et je ne peux pas dire qu'ils ont tort. C'est subjectif. Pour moi la question la plus importante est qu'une
ENUM
ne permettent pas à des valeurs non valides, de sorte que vous pouvez faire confiance à la valeur de tous les millions de lignes. Faire que tout autre moyen de MySQL, vous auriez besoin d'un char (ou autre) la colonne de clé étrangère référence à un master de la table de valeurs valides. Dans ce cas précis, où l'ensemble de données est si petit (vraisemblablement M et F, éventuellement NULL inconnue) et statique (pas besoin de modifier le tableau pour ajouter le support pour d'autres genres, politique/idéologique questions de côté) uneENUM
n'est pas si mauvais que ça.Dans Laravel lors de l'annulation d'une migration,
enum
type provoque l'erreur suivante:[Doctrine\DBAL\DBALException] Unknown database type enum requested, Doctrine\DBAL\Platforms\MySQL57Platform may not support it.
.OriginalL'auteur Ed Gibbs
Si vous pourriez jamais avoir à traiter avec le plus complexe des questions de genre (en processus de changement de genre ou de trans-genre), le meilleur moyen est d'utiliser un tableau de référence des valeurs possibles:
D'abord, vous pouvez le charger avec:
De cette façon, vous pouvez étendre la table comme de nouvelles valeurs pour le sexe devient nécessaire. L'UTILISATEUR (ou autre) de la table, vous stockez
static_gender_id
et obtenez la valeur pour l'égalité des sexes avec une JOINTURE.OriginalL'auteur D Mac