在数据库中存枚举值,用数字还是字符好?
我之前一直用INT或TINYINT来存枚举值,但发现这样有一个缺点,就是单从数字上没法知道枚举值,只能查文档,而用CHAR的话就比较明了了,例如:order_idorde...
我之前一直用INT或TINYINT来存枚举值,但发现这样有一个缺点,就是单从数字上没法知道枚举值,只能查文档,而用CHAR的话就比较明了了,例如:
order_id order_status
1 SUCS(成功success)
2 PCES(处理process)
另外,用CHAR的话,从数据库转换实体也会比较方便(java)。如果用数字的话,要么就依赖枚举类型的ordinal(万一谁把枚举的顺序换一下就傻X了),要么就自己加个code字段(麻烦)
不知道各位在实际项目中是如何处理的?用数字和字符各有什么优劣? 展开
order_id order_status
1 SUCS(成功success)
2 PCES(处理process)
另外,用CHAR的话,从数据库转换实体也会比较方便(java)。如果用数字的话,要么就依赖枚举类型的ordinal(万一谁把枚举的顺序换一下就傻X了),要么就自己加个code字段(麻烦)
不知道各位在实际项目中是如何处理的?用数字和字符各有什么优劣? 展开
3个回答
2013-02-22
展开全部
这个要看你的 枚举, 是 仅仅一次只能选择一个的? 还是一次可以选择多个的.
例如你的
order_id order_status
1 SUCS(成功success)
2 PCES(处理process)
某行数据, 要么就是 SUCS(成功success) , 要么就是 PCES(处理process)
这种情况下, 用字符是比较合适的。
但是如果枚举是可以选择多个的, 例如:
id desc
1 无党派
2 知识分子
4 少数民族
8 女性
16 ......
这种情况下, 如果一个人, 多个枚举都满足的情况下, 那么这种情况下, 使用 数字 是比较适合的。
也就是
如果某个人,是 无党派汉族女性研究生, 那么枚举值 = 1+2+8
例如你的
order_id order_status
1 SUCS(成功success)
2 PCES(处理process)
某行数据, 要么就是 SUCS(成功success) , 要么就是 PCES(处理process)
这种情况下, 用字符是比较合适的。
但是如果枚举是可以选择多个的, 例如:
id desc
1 无党派
2 知识分子
4 少数民族
8 女性
16 ......
这种情况下, 如果一个人, 多个枚举都满足的情况下, 那么这种情况下, 使用 数字 是比较适合的。
也就是
如果某个人,是 无党派汉族女性研究生, 那么枚举值 = 1+2+8
展开全部
.做个字典表 试试。这样就不怕 忘了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
一般在主表上存储的是枚举值,另建立一个值对应说明表,查询时关联取出说明内容
追问
你好,我想问的是用什么类型的列来存枚举值呢?是TINYINT还是CHAR(N)?
追答
如果字符固定建议用char(x),定长类型效率高
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询