SQL SERVER 数据库设计经验总结

 按照一定的规范进行数据库设计,至少有下面几点好处

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 日期保存

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值