数据库表设计(状态字段)

最近在做一个小型项目的数据库表设计,在很多实体信息表中,都有关于类型的字段。
由于项目是两个人总体负责设计,那么大家就有不同的风格。
我的设计是,类型全部是VARCHAR2(12)这样的字段,比如对于用户表(USER_INFO)的用户状态(STATE)这样的字段
我设计成 user_type varchar2(12), 说明内容如下:
NEW, 新建
ACTIVED, 已审核
INACTIVED, 已注销
DELETED, 已删除


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

想知道这样两种类型哪种更适合oracle数据设计风格?谢谢

作者: cooljia   发布时间: 2011-06-15

第2种好,状态嘛,值就那么几种,简单最好,你的太复杂了,写SQL还要敲那么多英文,大小写还敏感,容易出错,你说哪个好?

作者: dingjun123   发布时间: 2011-06-15

你那个相当于description了,可以放到comments里面,多简单啊

作者: dingjun123   发布时间: 2011-06-15

我使用字符的原因是有很多状态,看着0,1,2什么的很难理解,还要去翻设计文档和数据字典,不如用字符一目了然。
一般这些字段都是程序自动插入的,不太会出现插入错误和大小写问题。
我是不是太纠结了,囧。

作者: cooljia   发布时间: 2011-06-15

你是太纠结了啊,万一要手动做报表什么的,查询的话还要写SQL,比如很复杂的话,要写很多英文,还有大小写,到时候人家搞错了,就会骂你了

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

作者: dingjun123   发布时间: 2011-06-15

其实,更好的作法,应该是你们两个的结合:

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

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

作者: solomon_007   发布时间: 2011-06-15

LS所言甚是,加个规则表,做翻译的时候很方便

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

作者: dingjun123   发布时间: 2011-06-15



QUOTE:原帖由 dingjun123 于 2011-6-15 13:24 发表
LS所言甚是,加个规则表,做翻译的时候很方便

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

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

作者: solomon_007   发布时间: 2011-06-15

支持6L的方式。。不要用你的第一种方法去设计表,哪天你们业务上又增加或去掉了一种状态,或者改了个名字,你咋办?

作者: 风铃中の鬼   发布时间: 2011-06-15