字段怎么命名好?(50分)

  • 主题发起人 主题发起人 向你学习
  • 开始时间 开始时间

向你学习

Unregistered / Unconfirmed
GUEST, unregistred user!
for example:

TBProduct

FDName FDID FDPrice FDClass.......



要明白,一看就懂 必要的时候可以加数据类型,所属表名 !
 
一般是匈牙利命名法!其实还是随便你啦!:)
 
匈牙利命名法???

介绍一下
 
我喜欢用拼音
 
用英文好,呵呵,当然也看个人爱好,只要以后看的懂各个字段代表什么意思就行了。
 
我个人认为还是用英文好,可以简便点的缩写,以便别人也能看懂代码?自己也方便点
可以找一下规范看一下啊
 
一般我们公司使用的英文命名法
比较简单明了~~

说穿了,只要不是集体开发的软件,自己能懂就一切OK了~~
 
用英文比用拼音好,用英文,看不懂可以查词典,用拼音,如果拼不出来那
就死也拼不出来了。
 
无论是汉语拼音或者英语单词,最主要的是要让人明白,字段名字要能够体现出子段的
含义和性质,不提倡用英文缩写,或者汉语拼音的缩写,这也是为了结构的可读性考虑的
当然,公司规定的除外。
 
提倡用英文,不但通用,而且帮你学英语。^_^
 
建议用拼音缩写
 
给你一个例子:
有若干张表,表名缩写分别为:AAA,BBB,CCC,
然后表AAA有若干字段,放的内容为:NAME,SEX,TEL
那么我就会这么命名:AAA_NAME,AAA_SEX,AAA_TEL
如此类推,可以始所有的字段都唯一,一看就知道是那张表里出来的
 
看一下Microsoft自带的数据库范例:PUB,NorthWind.
里面用的命名方法是典范.
让人一看就懂.用起来也方便.
 
bigroom的方法其实不好。
比如说,有一个AddressBook表,它的主键是addressbookid,
还有一个Customer表和一个producer表,那么customer的字段就要变成Customer_addressbookid.
如果在SQL语句里面,就会出现这样的形式:
select schema.customer.customer_addressbook, ...
from SCHEMA.Customer
这样看上去很不简洁。其实在SQL语句里面customer.addressbookid不是更加以不了然吗?

下面说一下我工作的一点总结:
首先,在字段前面加chr, int之类的前缀,或者楼上的朋友们说得逆波兰表达式,我觉得没有必要。
因为这个和写程序不同。在程序里面,一个变量只在一个特定的生存期里面使用,比如一个
函数里面,为了方便阅读程序的人,用iAge来表示是个不错的方法。但是数据库是一个全局性的
描述,如果一个合作者想要使用这个数据库,他应该对数据库的各个字段的内容有十分的了解,
不然他怎么来使用这个表?

第二,绝对反对使用拼音。如果这样的设计出现在我的公司,这是绝对不允许的。非常不容易交流。

第三,每个表的主键应该采取统一的格式。比如,Address表的id叫做addressbookid,customer
表的主键是customerid.
第三,一个字段名应该在各个表中保持统一。比如,在customer表和supplier表中都有到地址簿的索引,
他们就应该是同样的都叫addressbookid,和addressbook表的主键名字等同。这样对理解表之间
的关系有莫大的好处。
再比如,Description这个字段可以简称为DESC,如果两个表都有DESC字段,但是一个是20个字符,
另一个是50个字符,这就不应该了。如果你坚持要做这样的设计,就应该把长度为50个字符的叫做
LONGDESC.

 
总体上同意楼上老兄的观点,字段命名应当是做到清晰明了,避免不必要的混淆就好了。
刚才说的不够清楚,给个更具体的例子,下面两张表的定义:
--1,
CREATE TABLE [dbo].[TIS_INSPECTION_POSITION] (
[TIP_NO] [int] NOT NULL ,
[TIP_FULL_NAME] [char] (30) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[TIP_SHORT_NAME] [char] (30) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[TIP_TYPE] [char] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[TIP_ENABLE] [char] (10) COLLATE Chinese_PRC_CI_AS NOT NULL
CONSTRAINT [TIP_KEY] PRIMARY KEY CLUSTERED (TIP_NO)
) ON [PRIMARY]
GO

--2,
CREATE TABLE [dbo].[TIS_DEVICE_TEAM] (
[TDT_NO] [int] NOT NULL ,
[TDT_NAME] [char] (30) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[TDT_TIP_NO] [int] NOT NULL , --这个字段引用了上面一张表头一个字段
[TDT_DEVICE_NUM] [int] NOT NULL ,
[TDT_TYPE] [char] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[TDT_ORDER_TYPE] [char] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[TDT_ENABLE] [char] (10) COLLATE Chinese_PRC_CI_AS NOT NULL
CONSTRAINT [TDT_KEY] PRIMARY KEY CLUSTERED (TDT_NO)
) ON [PRIMARY]
GO

好了,现在说明一下:
我觉得这么处理还是挺清楚的,首先:每个字段都是唯一的;
其次,每个字段的名称里头可以看出来它是属于那个表的;
最后,即使是用到相同的字段定义,也可以体现引用的联系。
所以,完全不会出现
select schema.customer.customer_addressbook, ...
from SCHEMA.Customer
这样的语句,甚至如果想偷一点懒的话,可以每个地方都只写字段名,甚至
在联合查询的时候,反正每个字段都是唯一的。
可读性问题也不大,看字段的“前缀”就行了,表之间的引用联系也能看个大概。

哈哈,[:D][:D],请多指教,共同探讨~
 
呵呵,SQL SERVER 2000支持中文字段名的
 
用英文吧,我们公司用拼音,烦死!有的人拼音还不标准(广东拼音)
 
命名只要统一,并尽可能简单即可。
 
后退
顶部