我已经建立了一个JavaEE项目,需要在MySQL中存储用户的性别。我想在添加新用户帐户时显示此属性。例如
<select name="gender">
<option value="0">Male</option>
<option value="1">Female</option>
</select>
现在我发现了两种在MySQL中存储此属性的方法。
使用整数/字符存储性别列:
gender tinyint(1) not null;
在这种情况下,我必须用我的Java代码编写它们:
public class StaticData {
public static final short MALE = 0;
public static final short FEMALE = 1;
}
如果是这样,我的数据库将依靠我的Java代码来限制值范围并解释0/1表示什么(低级别取决于高级别)。我认为这不是一个好主意。
使用枚举存储性别列:
gender enum("MALE", "FEMALE") not null
并且在这种情况下,我的Java代码将取决于枚举的值。有两种获取这些值的方法:
1)公共枚举性别[MALE,FEMALE},这与方法1几乎是相同的问题。
2)从MySQL检索这些值,例如“从用户LIKE \“ gender \”中显示行“,然后使用正则表达式拆分字符串。但这是一种冗长的方法。而且每次我加载JSP时都要从db查询。我认为那会很贵。
这是否有一个共同的成语?如果没有,在为我的项目选择合适的解决方案时我需要考虑哪些因素?
我将创建一个以ID为键的表“ Gender”,并且应该向用户显示文本夹:
它[在大多数申请中都不需要性别,但是如果绝对需要,我建议您也为“其他”和“未知”提供选项,对于没有性别的人,则选择前者完全符合二元性别模型,如果该人选择不公开,则完全适合。