这是在Web项目的MySQL中存储性别列的最佳方法

问题描述 投票:3回答:2

我已经建立了一个JavaEE项目,需要在MySQL中存储用户的性别。我想在添加新用户帐户时显示此属性。例如

<select name="gender">
    <option value="0">Male</option>
    <option value="1">Female</option>
</select>

现在我发现了两种在MySQL中存储此属性的方法。

  1. 使用整数/字符存储性别列:

    gender tinyint(1) not null;
    

    在这种情况下,我必须用我的Java代码编写它们:

    public class StaticData {
        public static final short MALE = 0;
        public static final short FEMALE = 1;
    }
    

    如果是这样,我的数据库将依靠我的Java代码来限制值范围并解释0/1表示什么(低级别取决于高级别)。我认为这不是一个好主意。

  2. 使用枚举存储性别列:

    gender enum("MALE", "FEMALE") not null
    

    并且在这种情况下,我的Java代码将取决于枚举的值。有两种获取这些值的方法:

    1)公共枚举性别[MALE,FEMALE},这与方法1几乎是相同的问题。

    2)从MySQL检索这些值,例如“从用户LIKE \“ gender \”中显示行“,然后使用正则表达式拆分字符串。但这是一种冗长的方法。而且每次我加载JSP时都要从db查询。我认为那会很贵。

这是否有一个共同的成语?如果没有,在为我的项目选择合适的解决方案时我需要考虑哪些因素?

mysql database enums
2个回答
1
投票

我将创建一个以ID为键的表“ Gender”,并且应该向用户显示文本夹:

  • ID-文字
  • 1-男性

0
投票

它[在大多数申请中都不需要性别,但是如果绝对需要,我建议您也为“其他”和“未知”提供选项,对于没有性别的人,则选择前者完全符合二元性别模型,如果该人选择不公开,则完全适合。

© www.soinside.com 2019 - 2024. All rights reserved.