您的位置:首页 > 数据库

SQL SERVER 数据库设计经验总结

2011-01-28 09:22 288 查看
按照一定的规范进行数据库设计,至少有下面几点好处
1) 便于项目组的成员快速了解数据结构
2) 减少应用开发中错误
3) 便于开发一些自动工具,生成可读性较高的代码
4) 便于和其他系统整合
5) 便于后期的维护,升级,扩展

下面是我多年来数据库设计经验的总结,供大家参考。

1.
表命名
1)
表名采用大写
2)
使用多段式单词,单词之间用下划线分割;长度不超过30;
3)
相同性质的表,定义模块前缀进行分组。
如组织数据表以ORG_开头,ORG_EMPLOYEE,
ORG_DEPARTMENT
参考数据表以REFER_开头,REFER_CATEGORY,
REFER_CATEGORY_ITEMS 等;
4)
大的系统表名使用 [系统名]_模块名_
作为前缀,便于系统间的整合;
5)
系统常用的固定表名:
SYSTEM_CONFIG,
SYSTEM_LOG, SYSTEM_RESOURCE, SYSTEM_DICTIONARY等;

2.
栏位命名
1)
栏位名采用大写
2)
不使用数据库关键字作为栏位名称,如ID, LEVEL
等;
3)
对于常用字段或者系统术语,保持命名一致性;
如人员分机号,
可统一命名EXT_NO,
而不是某些栏位命名为EXTENSION_NO,
某些栏位又叫做TELPHONE_NO;
4)
相同数据性质的栏位,保持命名一致性
²
如存储大段文本的栏位,统一用 _DESC, _NOTE, _REMARK等结尾
²
时间栏位,使用 _ON结尾,
如CREATED_ON, CHANGED_ON
²
开关值,统一以 IS_开头,或者
_FLAG结尾
5)
预留栏位命名 SEGMENT1, SEGMENT2, SEGMENT3…

3.
数据类型
1)
使用基本的数据类型;
字符串:
NVARCHAR
开关值: NVARCHAR(1)
整数:
INT
浮点数:
DECIMAL
日期类型:
DATETIME
长文本:
NTEXT (2005 NVARCHAR(MAX))

2)
保存字符类型的栏位使用NVARCHAR, NTEXT,
以支持多国语言存储;
3)
不使用自增类型栏位,
如果需要获取系统唯一ID做标识列,可以使用GUID或者自行控制的ID序列;
4)
开关值统一使用NVARCHAR(1);

4.
栏位长度
1)
保持相同用途栏位的长度一致性;
2)
如果最初无法确定栏位长度:

对于字符串栏位:
²
一般栏位使用默认长度 NVARCHAR(50)
²
稍长栏位使用NVARCHAR(150)
²
长文本使用
NVARCHAR(1500)
对于浮点数:
使用默认定义 DECIMAL(18, 2)

5.
值设置
1)
开关值,
使用 0/1
而不是Y/N
2)
全部/特定,
全部使用 *
表示,而不是ALL /NONE

--上面的值的特征是非大小写敏感
3)
系统初始化数据,默认值等,在整个系统范围内,统一大写或者小写

6.
其他
1)
使用SQL SERVER DIAGRAM
工具设计表,将相互关联的作为一组,便于项目组理解表之间的关系
2)
每个表必须有主键,不要使用具体的业务数据作为主键
3)
大表在设计的时候就应该注意设置合适索引
4)
实例数据表,维护数据表加上四个追踪栏位
CREATED_BY
NVARCHAR (50) NOT NULL
CREATED_ON
DATETIME NOT NULL
CHANGED_BY
NVARCHAR (50) NULL
CHANGED_ON
DATETIME NULL
5)
为可能变化的表预留 3~5个扩展栏位,SEGMENT
1 ~ SEGMENT 5 NVARCHAR(50)
6)
对于静态数据,合并小表到单表,使用视图开放给使用者
7)
不允许为空的栏位,设计的时候就要设定该栏位不允许为空。而不是在应用程序控制
8)
重要栏位添加必要的约束条件
9)
将栏位的描述信息保存在数据库中
10)
如果系统支持国际化运行,数据库的时间栏位全部全用utc
日期保存
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: