数据库设计............................................................................................................................................ 1
第 1 部分 - 设计数据库之前.......................................................................................................... 3
第 2 部分 - 设计数据库表............................................................................................................. 3
第 3 部分 - 选择键........................................................................................................................ 3
第 4 部分 - 保证数据完整性.......................................................................................................... 3
第 5 部分 - 各种小技巧................................................................................................................. 3
第 1 部分 - 设计数据库之前.......................................................................................................... 3
考察现有环境........................................................................................................................... 3
定义标准的对象命名规范......................................................................................................... 3
工欲善其事, 必先利其器.......................................................................................................... 4
获取数据模式资源手册............................................................................................................. 4
畅想未来,但不可忘了过去的教训........................................................................................... 4
在物理实践之前进行逻辑设计.................................................................................................. 5
了解你的业务........................................................................................................................... 5
创建数据字典和 ER 图表........................................................................................................ 5
创建模式.................................................................................................................................. 5
从输入输出下手....................................................................................................................... 5
报表技巧.................................................................................................................................. 5
理解客户需求........................................................................................................................... 6
第 2 部分 - 设计表和字段............................................................................................................. 6
检查各种变化........................................................................................................................... 6
采用有意义的字段名................................................................................................................ 6
采用前缀命名........................................................................................................................... 6
标准化和数据驱动.................................................................................................................... 6
标准化不能过头....................................................................................................................... 7
Microsoft Visual FoxPro 报表技巧............................................................................................. 7
不活跃或者不采用的指示符...................................................................................................... 7
使用角色实体定义属于某类别的列[字段].................................................................................. 7
采用常用实体命名机构数据...................................................................................................... 8
用户来自世界各地.................................................................................................................... 8
数据重复需要采用分立的数据表............................................................................................... 8
每个表中都应该添加的 3 个有用的字段................................................................................... 8
对地址和电话采用多个字段...................................................................................................... 8
使用多个名称字段.................................................................................................................... 9
提防大小写混用的对象名和特殊字符........................................................................................ 9
小心保留词.............................................................................................................................. 9
保持字段名和类型的一致性...................................................................................................... 9
仔细选择数字类型.................................................................................................................... 9
删除标记................................................................................................................................ 10
避免使用触发器...................................................................................................................... 10
包含版本机制......................................................................................................................... 10
给文本字段留足余量............................................................................................................... 10
列[字段]命名技巧................................................................................................................... 10
第 3 部分 - 选择键和索引............................................................................................................ 11
数据采掘要预先计划............................................................................................................... 11
使用系统生成的主键............................................................................................................... 11
分解字段用于索引.................................................................................................................. 11
键设计 4 原则........................................................................................................................ 11
别忘了索引............................................................................................................................. 11
不要索引常用的小型表........................................................................................................... 12
不要把社会保障号码(SSN)或身份证号码(ID)选作键....................................................... 12
不要用用户的键...................................................................................................................... 12
可选键(候选键)有时可做主键.................................................................................................. 13
别忘了外键............................................................................................................................. 13
第 4 部分 - 保证数据的完整性..................................................................................................... 13
用约束而非商务规则强制数据完整性...................................................................................... 13
分布式数据系统...................................................................................................................... 13
强制指示完整性(参照完整性?)................................................................................................ 13
关系....................................................................................................................................... 14
采用视图................................................................................................................................ 14
给数据保有和恢复制定计划.................................................................................................... 14
用存储过程让系统做重活........................................................................................................ 14
使用查找................................................................................................................................ 14
第 5 部分 - 各种小技巧............................................................................................................... 14
文档、文档、文档.................................................................................................................. 14
使用常用英语(或者其他任何语言)而不要使用编码.............................................................. 15
保存常用信息......................................................................................................................... 15
测试、测试、反复测试........................................................................................................... 15
检查设计................................................................................................................................ 15
Microsoft Visual FoxPro 设计技巧........................................................................................... 15
一个成功的管理系统,是由:[50% 的业务 + 50% 的软件] 所组成,而 50% 的成功软件又有 [25% 的数据库 + 25% 的程序] 所组成,数据库设计的好坏是一个关键。如果把企业的数据比做生命所必需的血液,那么数据库的设计就是应用中最重要的一部分。有关数据库设计的材料汗牛充栋,大学学位课程里也有专门的讲述。不过,就如我们反复强调的那样,再好的老师也比不过经验的教诲。所以我归纳历年来所走的弯路及体会,并在网上找了些对数据库设计颇有造诣的专业人士给大家传授一些设计数据库的技巧和经验。精选了其中的 60 个最佳技巧,并把这些技巧编写成了本文,为了方便索引其内容划分为 5 个部分: 这一部分罗列了 12 个基本技巧,包括命名规范和明确业务需求等。
总共 24 个指南性技巧,涵盖表内字段设计以及应该避免的常见问题等。
怎么选择键呢?这里有 10 个技巧专门涉及系统生成的主键的正确用法,还有何时以及如何索引字段以获得最佳性能等。
讨论如何保持数据库的清晰和健壮,如何把有害数据降低到最小程度。
不包括在以上 4 个部分中的其他技巧,五花八门,有了它们希望你的数据库开发工作会更轻松一些。
在设计一个新数据库时,你不但应该仔细研究业务需求而且还要考察现有的系统。大多数数据库项目都不是从头开始建立的;通常,机构内总会存在用来满足特定需求的现有系统(可能没有实现自动计算)。显然,现有系统并不完美,否则你就不必再建立新系统了。但是对旧系统的研究可以让你发现一些可能会忽略的细微问题。一般来说,考察现有系统对你绝对有好处。
一定要定义数据库对象的命名规范。对数据库表来说,从项目一开始就要确定表名是采用复数还是单数形式。此外还要给表的别名定义简单规则(比方说,如果表名是一个单词,别名就取单词的前 4 个字母;如果表名是两个单词,就各取两个单词的前两个字母组成 4 个字母长的别名;如果表的名字由 3 个单词组成,你不妨从头两个单词中各取一个然后从最后一个单词中再取出两个字母,结果还是组成 4 字母长的别名,其余依次类推)对工作用表来说,表名可以加上前缀 WORK_ 后面附上采用该表的应用程序的名字。表内的列[字段]要针对键采用一整套设计规则。比如,如果键是数字类型,你可以用 _N 作为后缀;如果是字符类型则可以采用 _C 后缀。对列[字段]名应该采用标准的前缀和后缀。再如,假如你的表里有好多“money”字段,你不妨给每个列[字段]增加一个 _M 后缀。还有,日期列[字段]最好以 D_ 作为名字打头。 |