查看: 18655|回复: 14

[讨论] 数据库表设计(状态字段)

[复制链接]
论坛徽章:
0
跳转到指定楼层
1#
发表于 2011-6-15 12:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近在做一个小型项目的数据库表设计,在很多实体信息表中,都有关于类型的字段。
由于项目是两个人总体负责设计,那么大家就有不同的风格。
我的设计是,类型全部是VARCHAR2(12)这样的字段,比如对于用户表(USER_INFO)的用户状态(STATE)这样的字段
我设计成 user_type varchar2(12), 说明内容如下:
NEW, 新建
ACTIVED, 已审核
INACTIVED, 已注销
DELETED, 已删除


但是另外一个同事的做法是,如果让他来设计
就是 user_type NUMBER, 说明内容如下:
0, 新建
1, 已审核
2, 已注销
3, 已删除

想知道这样两种类型哪种更适合oracle数据设计风格?谢谢
论坛徽章:
1088
金色在线徽章
日期:2007-04-25 04:02:08金色在线徽章
日期:2007-06-29 04:02:43金色在线徽章
日期:2007-03-11 04:02:02在线时间
日期:2007-04-11 04:01:02在线时间
日期:2007-04-12 04:01:02在线时间
日期:2007-03-07 04:01:022008版在线时间
日期:2010-05-01 00:01:152008版在线时间
日期:2011-05-01 00:01:342008版在线时间
日期:2008-06-03 11:59:43ITPUB年度最佳技术原创精华奖
日期:2013-03-22 13:18:30
2#
发表于 2011-6-15 12:12 | 只看该作者
第2种好,状态嘛,值就那么几种,简单最好,你的太复杂了,写SQL还要敲那么多英文,大小写还敏感,容易出错,你说哪个好?

使用道具 举报

回复
论坛徽章:
1088
金色在线徽章
日期:2007-04-25 04:02:08金色在线徽章
日期:2007-06-29 04:02:43金色在线徽章
日期:2007-03-11 04:02:02在线时间
日期:2007-04-11 04:01:02在线时间
日期:2007-04-12 04:01:02在线时间
日期:2007-03-07 04:01:022008版在线时间
日期:2010-05-01 00:01:152008版在线时间
日期:2011-05-01 00:01:342008版在线时间
日期:2008-06-03 11:59:43ITPUB年度最佳技术原创精华奖
日期:2013-03-22 13:18:30
3#
发表于 2011-6-15 12:13 | 只看该作者
你那个相当于description了,可以放到comments里面,多简单啊

使用道具 举报

回复
论坛徽章:
0
4#
 楼主| 发表于 2011-6-15 12:19 | 只看该作者
我使用字符的原因是有很多状态,看着0,1,2什么的很难理解,还要去翻设计文档和数据字典,不如用字符一目了然。
一般这些字段都是程序自动插入的,不太会出现插入错误和大小写问题。
我是不是太纠结了,囧。

使用道具 举报

回复
论坛徽章:
1088
金色在线徽章
日期:2007-04-25 04:02:08金色在线徽章
日期:2007-06-29 04:02:43金色在线徽章
日期:2007-03-11 04:02:02在线时间
日期:2007-04-11 04:01:02在线时间
日期:2007-04-12 04:01:02在线时间
日期:2007-03-07 04:01:022008版在线时间
日期:2010-05-01 00:01:152008版在线时间
日期:2011-05-01 00:01:342008版在线时间
日期:2008-06-03 11:59:43ITPUB年度最佳技术原创精华奖
日期:2013-03-22 13:18:30
5#
发表于 2011-6-15 12:22 | 只看该作者
你是太纠结了啊,万一要手动做报表什么的,查询的话还要写SQL,比如很复杂的话,要写很多英文,还有大小写,到时候人家搞错了,就会骂你了

还有不需要查数据字典,把你的意思comments到那个列,在工具里一目了然,比如pl/sql dev,一点那单元格下面comments就出来了

使用道具 举报

回复
论坛徽章:
548
生肖徽章2007版:猴
日期:2008-05-16 11:28:59生肖徽章2007版:马
日期:2008-10-08 17:01:01SQL大赛参与纪念
日期:2011-04-13 12:08:17授权会员
日期:2011-06-17 16:14:53ITPUB元老
日期:2011-06-21 11:47:01ITPUB官方微博粉丝徽章
日期:2011-07-01 09:45:27ITPUB十周年纪念徽章
日期:2011-09-27 16:30:472012新春纪念徽章
日期:2012-01-04 11:51:222012新春纪念徽章
日期:2020-11-30 22:13:24海蓝宝石
日期:2012-02-20 19:24:27
6#
发表于 2011-6-15 13:22 | 只看该作者
其实,更好的作法,应该是你们两个的结合:

USER_TYPE_ID   CN_NAME   EN_NAME
0                        新建         NEW
1                        已审核       ACTIVED
2                        已注销       INACTIVED
3                        已删除       DELETED

将设计中所有具有上面内类的信息就象ORACLE ERP 一样作一张弹性集值表,
业务的主表只引用ID,需要名称描述时,可以关联这个表。。。

使用道具 举报

回复
论坛徽章:
1088
金色在线徽章
日期:2007-04-25 04:02:08金色在线徽章
日期:2007-06-29 04:02:43金色在线徽章
日期:2007-03-11 04:02:02在线时间
日期:2007-04-11 04:01:02在线时间
日期:2007-04-12 04:01:02在线时间
日期:2007-03-07 04:01:022008版在线时间
日期:2010-05-01 00:01:152008版在线时间
日期:2011-05-01 00:01:342008版在线时间
日期:2008-06-03 11:59:43ITPUB年度最佳技术原创精华奖
日期:2013-03-22 13:18:30
7#
发表于 2011-6-15 13:24 | 只看该作者
LS所言甚是,加个规则表,做翻译的时候很方便

如果不需要翻译,规则表也没有必要了,加个注释就OK

使用道具 举报

回复
论坛徽章:
548
生肖徽章2007版:猴
日期:2008-05-16 11:28:59生肖徽章2007版:马
日期:2008-10-08 17:01:01SQL大赛参与纪念
日期:2011-04-13 12:08:17授权会员
日期:2011-06-17 16:14:53ITPUB元老
日期:2011-06-21 11:47:01ITPUB官方微博粉丝徽章
日期:2011-07-01 09:45:27ITPUB十周年纪念徽章
日期:2011-09-27 16:30:472012新春纪念徽章
日期:2012-01-04 11:51:222012新春纪念徽章
日期:2020-11-30 22:13:24海蓝宝石
日期:2012-02-20 19:24:27
8#
发表于 2011-6-15 13:44 | 只看该作者
原帖由 dingjun123 于 2011-6-15 13:24 发表
LS所言甚是,加个规则表,做翻译的时候很方便

如果不需要翻译,规则表也没有必要了,加个注释就OK



dingjun兄,帮我看一下外面那个TRIGGER LOGON 的问题啊。。。

使用道具 举报

回复
求职 : 数据库开发
论坛徽章:
29
ITPUB学员
日期:2009-10-14 18:49:45至尊黑钻
日期:2015-12-31 11:11:56数据库板块每日发贴之星
日期:2009-10-22 01:01:02优秀写手
日期:2014-04-30 06:00:17ITPUB8周年纪念徽章
日期:2009-10-09 21:30:10秀才
日期:2017-05-17 11:39:09马上有车
日期:2014-10-09 10:14:53马上有钱
日期:2014-02-18 16:43:09路虎
日期:2013-10-15 15:38:59林肯
日期:2013-09-12 15:57:33
9#
发表于 2011-6-15 13:45 | 只看该作者
支持6L的方式。。不要用你的第一种方法去设计表,哪天你们业务上又增加或去掉了一种状态,或者改了个名字,你咋办?

使用道具 举报

回复
论坛徽章:
3
ITPUB官方微博粉丝徽章
日期:2011-06-29 09:48:25ITPUB十周年纪念徽章
日期:2011-11-01 16:21:15秀才
日期:2016-02-18 09:23:46
10#
发表于 2011-6-15 16:34 | 只看该作者
我们都是类似'READY,DONE,PROCESS,FAILED,DELETE',感觉很清晰不用新建表.我觉得这个看情况了。如果描述不清楚就建个表吧。

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表