数据库设计的标准
1.数据表字段说明
(1)每个表都必须有一个关键字,如果表中没有可以设置成关键字的字段,可以添加一个ID字段作为关键字。需要特别注意的是,一些数据库系统如果没有关键字,那么允许所有字段有相同的值,此时如果对其进行操作时,数据库系统将整条记录作为一个关键字来操作,从而出现多个关键字的问题,导致操作出错。对于数字类型的关键字,如果不需要程序或者人为来维护的,就将其设置成为标示种子为1,标示递增量为1的标示字段。尽量不要使用由手工输入的数据作为关键字,这是由于手工输入的不可靠性容易导致不可预见的后果。设置关键字时尽量避免设置多个字段的联合关键字。
(2)对于非关键字、不允许空值以下数据类型的字段:日期型、布尔型、数字型等字段,无论是否有程序自动维护,必须在数据库设计的时候设定其默认值。
(3)在设定字段长度时,对于系统固定长度的字段,不需要更改,对于需要设计者指定长度的字段,设计者可以根据实际情况指定,如果对已经有数据的数据表的字段长度缩小的时候,必须注意超过新数据长度的数据截断问题。对现有数据类型的转换也需要注意是否可以转换,数据长度的
问题。
数据库设计说明书的目的
2.表字段定义说明
语言--一般来说定义数据库时不要使用中文或其他类型文字的字段名,尽量使用英文或者英文加数字来作为字段名,尽管使用中文或其他类型文字作为字段名在直接操作数据库时很容易,但是在数据库以及依赖于数据库的前台程序的不同语言操作系统的兼容性完全丧失,当然中文或其他类型文字可以放在字段的描述或者说明里面起辅助作用。
明确--原则上字段名的定义只要符合数据库系统的字段定义要求就可以,如:1、2、……;A、B、C、……,ABC、A12BC、……,等都是合法字段,但是一定的数据库往往是和一定的前台程序联系起来的,如果字段名定义不明确,造成程序在编写过程中的混乱,程序的可读性、可维护性极差。
准确--字段名尽量使用准确的英文名字,如果相同名字的字段有几个,可以用字母或者数字后缀区别。不要使用系统的保留字作为字段名,尽量避免使用开发语言的保留字作为字段名。字段名可以按照大小写敏感的方式来命名。
简洁--避免使用不必要的前缀,如有一个Contact的'联系人'表,其中有一个联系人名字的字段,不要使用ContactName作为其字段名,使用Name就可以了。
顺序--按照描述事物或者常规思维模式来安排顺序,不要随意安排顺序,虽然任意顺序的字段都可以,但是对于数
据库的维护来说却非常麻烦,特别是字段多的表。
3.数据类型的选择
(1)ID字段不要作为表的主键与其它表关联,这将会影响到该表的数据迁移。
(2)Text 和Image字段属指针型数据,主要用来存放二进制大型对象(BLOB)。这类数据的操作相比其它数据类型较慢,因此要避开使用。
(3)各种类型字段的均有众多的相关函数支持,例如日期型函数,在日期的大小比较、加减操作上非常简单。但是,在按照日期作为相等条件的查询操作也要用函数,而使用函数作为查询的条件时,服务器无法用先进的性能策略来优化查询而只能进行表扫描遍历每行,因此,在选择大数据表的关键字段数据类型时应根据在选择查询策略尽可能避开使用函数的原则加以考虑。
(4)注意数值型数据的取值范围问题,文本型的数据要保留一定的冗余长度。
4.数据库命名规范
不同的数据库产品对对象的命名有不同的要求,因此,数据库中的各种对象的命名、后台程序的代码编写应采用大小写敏感的形式,各种对象命名长度不要超过30个字符,这样便于应用系统适应不同的数据库平台。
5.索引的建立
为加快访问的速度,对表建立索引是加快速度的一个理想做法,但是索引应该避免用大数据的字段来建立,如Text,Image以及长数据的字符串型等。
6.视图的建立
对于需要访问相关联的表,如果在应用程序中去处理,可能会使应用程序的代码编写出现不必要的繁复,而且也会忽视数据库的潜力开发,这种情况的解决方法是利用数据库的视图。
7.导入/导出操作注意事项
不同的数据库系统或者相同的数据库系统之间允许以导入/导出的方法来在另一个不同的数据库中形成新的数据库或者数据库中的表,这是一个十分简洁的方法,但是需要注意的是,这样的操作会将源表中的一些信息丢失,如关键字、默认值等,所以在执行完导入/导出的操作之后,一定要在目的数据库中重新检查设置相关属性。
8.合法性检验
尽量在数据进入数据库之前对数据进行合法性检验,避免不合法数据进入数据库,否则数据库的维护将非常困难。
中国******公司信息中心
技术攻关组陈运庆
2019年6月7日