一.数据表和字段的设计
表设计原则
标准化和规范化
数据的标准化有助于消除数据库中的数据冗余标准化有好几种形式我们在这里采用Third Normal Form(NF)因为NF在性能扩展性和数据完整性方面达到了最好平衡
遵守NF 标准的数据库某个表只包括其本身基本的属性当不是它们本身所具有的属性时需进行分解表之间的关系通过外键相连接它具有以下特点有一组表专门存放通过键连接起来的关联数据
考虑各种变化
在设计数据库的时候考虑到哪些数据字段将来可能会发生变更
字段设计原则
) 每个表中都应该添加的 个有用的字段即要求每张数据表中字段不得少于个
) 选择数字类型和文本类型尽量充足在字段类型为数字或文本时其长度最好比实际所需的大一些
) 增加自动增长的操作ID字段(czid)
) 增加记录创建的日期字段(CreateDate)
) 增加删除标记字段(isvoid)
在表中包含一个删除标记字段这样就可以把行标记为删除在关系数据库里不单独删除某一行一般采用清除数据程序而且要仔细维护索引整体性
二.键和索引的设计
键选择原则
)为关联字段创建外键
)所有的键都必须唯一
)避免使用复合键
)外键总是关联唯一的键字段
使用系统生成的主键
设计数据库的时候采用系统生成的键作为主键那么实际控制了数据库的索引完整性这样数据库和非人工机制就有效地控制了对存储数据中每一行的访问采用系统生成键作为主键还有一个优点当拥有一致的键结构时找到逻辑缺陷很容易不要用用户的键(不让主键具有可更新性)在确定采用什么字段作为表的键的时候小心用户将要编辑的字段通常的情况下不要选择用户可编辑的字段作为键
可选键有时可做主键
把可选键进一步用做主键可以拥有建立强大索引的能力
索引使用原则
索引是从数据库中获取数据的最高效方式之一%的数据库性能问题都可以采用索引技术得到解决
索引外键
大多数数据库都索引自动创建的主键字段但是可别忘了索引外键它们也是经常使用的键比如运行查询显示主表和所有关联表的某条记录就用得上
不要索引大型字段(有很多字符)这样作会让索引占用太多的存储空间
不要索引常用的小型表
不要为小型数据表设置任何键假如它们经常有插入和删除操作就更别这样作了对这些插入和删除操作的索引维护可能比扫描表空间消耗更多的时间
三 数据完整性设计
完整性实现机制实体完整性主键
参照完整性
父表中删除数据级联删除受限删除置空值
父表中插入数据受限插入递归插入
父表中更新数据级联更新受限更新置空值
DBMS对参照完整性可以有两种方法实现外键实现机制(约束规则)和触发器实现机制
用户定义完整性NOT NULLCHECK触发器
用约束而非商务规则强制数据完整性
采用数据库系统实现数据的完整性这不但包括通过标准化实现的完整性而且还包括数据的功能性在写数据的时候还可以增加触发器来保证数据的正确性不要依赖于商务层保证数据完整性它不能保证表之间(外键)的完整性所以不能强加于其他完整性规则之上
强制指示完整性
在有害数据进入数据库之前将其剔除激活数据库系统的指示完整性特性这样可以保持数据的清洁而能迫使开发人员投入更多的时间处理错误条件
使用查找控制数据完整性
控制数据完整性的最佳方式就是限制用户的选择只要有可能都应该提供给用户一个清晰的价值列表供其选择这样将减少键入代码的错误和误解同时提供数据的一致性
采用视图
为了在数据库和应用程序代码之间提供另一层抽象可以为应用程序建立专门的视图而不必非要应用程序直接访问数据表这样做还等于在处理数据库变更时给你提供了更多的自由
[] [] []