|
1
53
使用外键 查找表 是我使用的方法。事实上,即使使用了支持枚举的数据库(例如mysql),我也会使用它。
为了简单起见,我可以跳过“永远的存在”
不可否认,存储字符串比MySQL实现
查阅表格的其他优点是,您可以使用简单的
还可以尝试查询
如果需要,还可以将其他属性列添加到查阅表格中(例如,标记仅对管理员可用的选项)。在一个
除了查找表之外的另一个选项是使用
但这种用法
ps:SQL中的相等比较运算符是单个的
|
|
|
2
2
为了限制可能的值,我将使用外键来保存枚举项的表。 如果不想加入以进行搜索,则将键设为varchar;如果加入不是问题,则将键设为int,除非需要搜索该字段,否则不要加入。 注意,将枚举放在数据库中会妨碍对代码中的值进行编译时检查(除非您在代码中复制了枚举)。我发现这是一个很大的缺点。 |
|
|
3
1
你基本上有两个选择:
我个人主张使用varchars,因为如果更改枚举+字段是人类可读的,则不会破坏任何内容,但是ints也有一些优点,即性能(数据的大小是一个明显的例子)。 |
|
|
4
0
这是我最近做的 在我的hibernate mapped pojo中,我将成员的类型保存为字符串,它在数据库中是varchar。 此的setter采用枚举 还有另一个setter接受字符串——但这是私有的(或者您可以直接映射字段——如果您喜欢的话)。 现在,我使用的字符串是从所有字符串中封装出来的。对于应用程序的其余部分,我的域对象使用枚举。 至于数据库,我使用的是字符串。 如果我错过了你的问题-我道歉。 |
|
|
5
-1
我会用varchar。这不是你的选择吗? |
|
|
developer · 带外键的SQL表设计 1 年前 |
|
|
relatively_random · 确保两个表之间一致的共同参考 1 年前 |
|
|
b126 · 在两种不同的Oracle模式上执行相同查询的速度差异很大 2 年前 |
|
|
robertspierre · 在多对多关系中自动删除未引用的行 2 年前 |
|
|
Michael Samuel · MYSQL在以下情况下自动创建索引 8 年前 |