建站学院文档 平时大大小小的数据库,面向产品的,面向项目的,数据库设计了不少。总结了一些个人经验如下,供大家探讨。 1. 表命名 1) 使用多段式单词,单词之间用下划线分割; 2) 相同性质的表,适用分组前缀。能从命名上看出哪些表属于一组 如实例数据表以instance_开头,instance_form_header,instance_form_approve,参考数据表以refer_开头,refer_category, refer_category_items 等; 3) 大的系统表名使用 [系统名]_模块名_ 前缀,便于系统间的整合; 4) 系统常用的固定表名: system_config,system_log,system_objects,system_glossary,system_dictionary等; 2. 栏位命名 1) 不使用数据库关键字作为栏位名称,如id, level 等; 2) 对于系统术语,保持命名一致性; 如人员分机号,可统一命名ext_no,而不是某些栏位命名为extension_no,某些栏位又叫做telphone_no; 3) 相同数据性质的栏位, 保持命名一致性 ² 如存储大段文本的栏位,统一用 _desc,_note,_remark等结尾 ² 时间栏位,使用 _on结尾, 如issue_on,approved_on ² 与特殊阶段或者角色相关的栏位,使用合适前缀,如 dcc_xxx(dcc为角色) app_xxx(app为阶段名称) ² 开关值,统一以 is_开头,或者 _flag结尾 4) 预留栏位命名 segment1,segment2,segment3… 3. 数据类型 1) 使用基本的数据类型; 字符串: nvarchar 开关值: nvarchar(1) 整数: int 浮点数: decimal 日期类型: datetime 长文本: ntext (2005 nvarchar(max) 2) 保存字符类型的栏位使用nvarchar,ntext, 以支持多国语言存储; 3) 尽量不使用自增类型栏位,使用表来管理各个系统对象的自增; 4) 开关值统一使用nvarchar(1) ,而不是(tiny)int; 4. 栏位长度 1) 保持相同用途栏位的长度一致性; 2) 如果最初无法确定栏位长度: 对于字符串栏位: ² 一般栏位使用默认长度 nvarchar(50) ² 稍长栏位使用nvarchar(150) ² 长文本使用 nvarchar(500) 对于浮点数: 使用默认定义 decimal(18,2) 5. 值范围设置 1) 开关值, 使用 0/1 而不是Y/N 2) 全部/特定, 全部使用 * 表示,而不是ALL /none 等 --上面的值的特征是非大小写敏感 6. 其他 1) 使用SQL Server diagram 工具设计表,将相互关联的作为一组,便于项目组成员理解表之间的关系 2) 每个表尽量加上主键 3) 大表在设计的时候就应该注意加上合适索引 4) 实例数据表,维护数据表加上四个追踪栏位 created_by nvarchar(50) not null created_on datetime not null 可设置默认值为 getdate() changed_by nvarchar(50) null changed_on datetime null 5) 为可能变化的表预留 3~5个扩展栏位nvarchar(50) 6) 对于静态数据,合并小表到单表,使用视图开放给使用者 7) 不允许为空的栏位,设计的时候就要设定该栏位不允许为空 8) 重要栏位添加必要的约束条件 9) 将栏位的描述信息保存在数据库中 10) 适量采取冗余栏位设计 11) 复杂的业务逻辑写成SP封装,SP,自定义函数分别使用usp,udf开头 (编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|