在MySQL数据库中存储性别的最佳技术

前端之家收集整理的这篇文章主要介绍了在MySQL数据库中存储性别的最佳技术前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

哪种方法可以在MY sql数据库中存储性别?我对这个问题感到有点困惑,因为不同的人以不同的方式表达.有人建议将它存储在INT中更好,但是其他人建议使用TINYINT和Enum,但是其他人建议将它存储在CHAR(1)M for Male和F For Female中.

此外,听到http://en.wikipedia.org/wiki/ISO_5218时更加令人怀疑

但是在我看来将它存储在CHAR中是一个好主意,因为它提供了比ENUM更强大的功能?我也关注可伸缩性,想知道存储数百万条记录的更好解决方案.

非常感谢专家提出的宝贵建议.

最佳答案
就个人而言(因为这是一个有点主观的问题)我会选择ENUM. MysqL不支持CHECK约束,因此ENUM是确保值为M或F(或m或f)的唯一方法.对我来说,这是最重要的一点.

此外,ENUM应该只需要一个字节的存储空间(根据docs),因此它与CHAR(1)或TINYINT一样有效存储.

我根本不了解TINYINT方法,因为你最终得到这样的查询

SELECT * FROM myTable WHERE gender = 1;

是男性还是女性?如果是男性,女性是0吗?还是2?或者16岁?你必须记住要编写(和维护)应用程序的一堆东西;无需添加到那堆.

Ed Gibbs的附录2017-12-01:当我在一个不相关的谷歌搜索中偶然发现时重新审视我的答案……

ENUM方法在具有静态,一维值域(例如,Y / N,To / Cc / Bcc)的用例中具有优点,但它对于性别无效.我的答案是在“你如何将专栏限制为M或F”的书呆子语境中,而不是在更广泛的性别定义背景下.

D Mac的解决方案更加强大和开明,但它仍然不完整,因为它也是单维的,而性别是多维的.

在对任何主观类别(性别,种族,阶级认同,宗教,政治派别,就业状况,民族认同,性取向,性行为等)对人进行分类时,请考虑他们可以通过多种方式表明自己.并不总是有“检查单一盒子”的解决方案.

这超越了意识形态.尝试将多维实体分类为单个维度是不准确的,并且不准确性具有成本.

原文链接:https://www.f2er.com/mysql/433673.html

猜你在找的MySQL相关文章