SQL,SQL2000:数据表命名和字段命名方法[原创]

//http://blog.csdn.net/chengg0769 保留此行。拒绝加入链接或修改后转载。

在开发过程中,我采用多分节数据表命名方法(下划线命名法)。从实践来看,望文生义,维护效率很高,自己开发时,我很少看文档。 

一. 关于大小写

因为在编写软件过程中,会遇到很多语句会直接输入sql语句,所以应该作到全部表名,字段名小写。偶尔见到有的人把字段的开头用大写,但是在不区分大小的时候没问题,在区分大小写时,简直就是绊脚石。

我们可以看sql2000的master表。

二。命名方法

1. 表命名方法

主要分连写法和下划线两种方法。

连写法

如: sysindexkeys,sysfilegroups这适合于较小的数据运用项目,这样命名简短使用,编写sql语句时比较方便。但是在稍微复杂的按模组分类的系统中就显得力不从心了,因为涉及到多分层,连续拼写的英文会比较模糊。并且层次感不强。在强制小写的情况下,匈牙利命名法显得无奈。

在不区分大小写的情况下,骆驼式和pascal命名法失效了。这种方法不适合超过50张表的系统。

下划线法

这种方法我在使用中是按[模组]+[子模块]+[表名]+[附加项]

可以看出明显的层次结构。缺点就是比较长,但是你可以在分模块时,定义一些明确的缩写,来强制使用。

比如设计一个用户表,然后这个表还有多个外键表。我是如此命名的:

cust_info

cust_info_city(fk)   cust_info_area(fk)

cust_info_modified  cust_info_deleted  cust_info_stop

这里有个原则,就是主要的表尽量要短,因为使用频率很高。而Fk表我是用dw作成通用件,在需要的栏位用dddw方式展示。

这种方法适合系统不大,细化程度不高的情况。因为如果细化程度很高,在cust_info的层次上还会有多种细分层次(如cust_info_modified  cust_info_deleted ),所以命名就会增加到四节。就太长了。而且系统升级频繁的话,命名也存在歧义。比如cust_info_city(fk) 还有外键的话。(当然对于一些fk表,一般是char(2)+varchar(16),或者smallint+varchar(16),我们变通的做法是集中在一张表里,外加一个tabName字段来区分(tab+id+description)。然后在作fk的dw时,where条件里区分开不同表的FK即可(select id,description from fk_table where tab="tabname")。我认为是最好的方法。

当然我还见过正规的数据库,它没有采用这种字母的分节方法,而是采用模组+数字方式,但原则还是分节,只是更具有系统性。比如INV00100100101,字母在这里起到分模组的标识作用,而后面的数字分四节,而且前三层可以命名999个子模块,最后一节可以命名99张表。可以知道,这是大型系统采用的最好方法。在数据字典的强制作用下,设计和编写都会很规范。并且扩充容易。不容易混乱。对ERP系统等,是最好的方法。(最后的两位用于某表专署的外键或资源等)

这种方法适合table数量在300以上的系统,即使有1000张表也不存在任何问题。一般的ERP系统在500张表以上。是很复杂的,分模组,模块就显示必要。

对于procedure命名,同样实用。因为存储器存在系统存储器,所以首节最好区分开。我实用pr来分开(系统是sp_)。

2. 字段命名

2.1常规命名法

我的原则,尽量短,不用下划线。并且强制规范化。要缩短长度,必须考虑简写。如provider,customer,information,这些必须考虑全局强制统一简写法如:prv,cust,info。而对于常用的结构性描述词,则需全局通用化,比如userid,name,city,town,account,amount,type,class,area,country等。都是简短有用的,望文生义的词,不必要缩写。在不同的表里尽量强制统一。不要出现杂乱的局面。

字段名如果使用下划线,在编写sql语句时非常讨厌。因为表名尚且可以用别名,而字段名没法偷懒。

2.2. 丑陋的命名法

拼音命名法,数字命名法是很丑陋的。要杜绝,比如:某个程序员写的程序中的变量,如果是给我写程序,我立马踢飞他。
string l_sbbh
string l_yhbh
string l_bsbh
string ssqls
datetime l_kprq
datetime l_cbrq
datetime l_znrq
datetime l_bjrq
string l_yhmc
string l_yhdz
string l_sbkj
string l_ysxz
string l_hbbz
string l_fpbh
long l_byxd
long l_syxd
long l_byysl

真要表示l_sbbh(设备编号)不如用l_shebei_bianhao,虽然比较长,但是描述性比较好嘛。至少读音可以猜出来。

2.3.汉字命名法

在针对报表,导出数据临时表等非关键部分,可以采用汉字命名字段名,也是可以接受的。比如我在项目中有时设计到某个字段用汉字描述都很难理解,试想要用英文来命名更若天书,干脆就用了汉字命名。但是要遵守一下匈牙利方法,比如:客户代号,客户名称,客户地址,费用应收产成,费用应收折后。太随意跟拼音命名法就没区别了。

PB反编译大师,PB混淆加密大师 ,互联网数据组件:DataWindowHTTP,ESC/POS打印组件:ESC/POS ImagePrint(LPT,column format),SQLCloudODBC互联网数据库直连驱动 

2.4楷模在哪里

如果你能接触到正规的系统,可以粗略学习到他的命名法的规范性。比如ERP系统,一般是有专业人员专门负责设计,所以不会很乱,而一些小系统则是五花八门,拼音,数字,什么都有。

比如规范的命名,如我设计的系统是如此的:

a_pur_master

docno varchar 10 
status char 2 
docdate datetime 8 
supplier varchar 6 
transportation char 2 
purchaser char 10 
paytype char 2 
currency char 2 
amt decimal 9 
remark varchar 100 
revenue char 2 
deliveraddr char 2 
paynote varchar 40 
createdate datetime 8 
modifydate datetime 8 
printtimes smallint 2 

a_pur_detail

docno char 12 
seq smallint 2 
status char 2 
goods varchar 20 
qty decimal 9 
receive decimal 9 
unit char 2 
purrate decimal 9 
price decimal 9 
amt decimal 13 
orderno varchar 16 
ordseq smallint 2 
predate smalldatetime 4 
ramark varchar 60 

最好的方法就是常用缩写要一目了然,并且没有歧义,而且成为习惯。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值