gpt4 book ai didi

mysql - 在 MySQL 中为 Web 项目存储性别列的最佳方式是什么

转载 作者:可可西里 更新时间:2023-11-01 07:37:36 25 4
gpt4 key购买 nike

我构建了一个 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代表什么(low level depends high level)。我认为这不是一个好主意。

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

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

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

    1) public enum Gender { MALE, FEMALE },和方法一几乎是一样的问题。

    2) 从 MySQL 中检索这些值,例如 "SHOW COLUMNS FROM user LIKE\"gender\""然后使用正则表达式拆分字符串。但这是一个冗长的方法。每次加载 JSP 时都必须从数据库查询。我认为这会很昂贵。

这个有通用的成语吗?如果不是,在为我的项目选择合适的解决方案时需要考虑哪些因素?

最佳答案

大多数应用程序可能不需要询问性别,但如果您绝对需要,我建议您也提供“其他”和“未知”选项,前者用于不完全符合二元性别模型的人,如果该人选择不透露它,则另一种。

对于这 4 个值,最简单的方法可能是将其作为 CHAR(1)ENUM("F", "M", "O", "U")(请注意,我按字母顺序选择了这些,而不是令人惊讶的典型“男性优先”)。

关于mysql - 在 MySQL 中为 Web 项目存储性别列的最佳方式是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13153863/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com