〖例3〗:在“图书馆信息系统”中 , “图书”是一个实体 , “读者”也是一个实体 。这两个实体之间的关系 , 是一个典型的多对多关系:一本图书在不同时间可以被多个读者借阅 , 一个读者又可以借多本图书 。为此 , 要在二者之间增加第三个实体 , 该实体取名为“借还书” , 它的属性为:借还时间、借还标志(0表示借书 , 1表示还书) , 另外 , 它还应该有两个外键(“图书”的主键 , “读者”的主键) , 使它能与“图书”和“读者”连接 。7. 主键PK的取值方法PK是供程序员使用的表间连接工具 , 可以是一无物理意义的数字串, 由程序自动加1来实现 。也可以是有物理意义的字段名或字段名的组合 。不过前者比后者好 。当PK是字段名的组合时 , 建议字段的个数不要太多 , 多了不但索引占用空间大 , 而且速度也慢 。
8. 正确认识数据冗余主键与外键在多表中的重复出现, 不属于数据冗余 , 这个概念必须清楚 , 事实上有许多人还不清楚 。非键字段的重复出现, 才是数据冗余!而且是一种低级冗余 , 即重复性的冗余 。高级冗余不是字段的重复出现 , 而是字段的派生出现 。
〖例4〗:商品中的“单价、数量、金额”三个字段 , “金额”就是由“单价”乘以“数量”派生出来的 , 它就是冗余 , 而且是一种高级冗余 。冗余的目的是为了提高处理速度 。只有低级冗余才会增加数据的不一致性 , 因为同一数据 , 可能从不同时间、地点、角色上多次录入 。因此 , 我们提倡高级冗余(派生性冗余) , 反对低级冗余(重复性冗余) 。9. E--R图没有标准答案信息系统的E--R图没有标准答案 , 因为它的设计与画法不是惟一的 , 只要它覆盖了系统需求的业务范围和功能内容 , 就是可行的 。反之要修改E--R图 。尽管它没有惟一的标准答案 , 并不意味着可以随意设计 。好的E—R图的标准是:结构清晰、关联简洁、实体个数适中、属性分配合理、没有低级冗余 。
10. 视图技术在数据库设计中很有用与基本表、代码表、中间表不同 , 视图是一种虚表 , 它依赖数据源的实表而存在 。视图是供程序员使用数据库的一个窗口 , 是基表数据综合的一种形式, 是数据处理的一种方法 , 是用户数据保密的一种手段 。为了进行复杂处理、提高运算速度和节省存储空间, 视图的定义深度一般不得超过三层 。若三层视图仍不够用, 则应在视图上定义临时表, 在临时表上再定义视图 。这样反复交迭定义, 视图的深度就不受限制了 。对于某些与国家政治、经济、技术、军事和安全利益有关的信息系统 , 视图的作用更加重要 。这些系统的基本表完成物理设计之后 , 立即在基本表上建立第一层视图 , 这层视图的个数和结构 , 与基本表的个数和结构是完全相同 。并且规定 , 所有的程序员 , 一律只准在视图上操作 。只有数据库管理员 , 带着多个人员共同掌握的“安全钥匙” , 才能直接在基本表上操作 。请读者想想:这是为什么? 个 , 这个推荐看一下 。
11. 中间表、报表和临时表中间表是存放统计数据的表 , 它是为数据仓库、输出报表或查询结果而设计的 , 有时它没有主键与外键(数据仓库除外) 。临时表是程序员个人设计的 , 存放临时记录 , 为个人所用 。基表和中间表由DBA维护 , 临时表由程序员自己用程序自动维护 。
12. 完整性约束表现在三个方面域的完整性:用Check来实现约束 , 在数据库设计工具中 , 对字段的取值范围进行定义时 , 有一个Check按钮 , 通过它定义字段的值城 。参照完整性:用PK、FK、表级触发器来实现 。用户定义完整性:它是一些业务规则 , 用存储过程和触发器来实现 。
13. 防止数据库设计打补丁的方法是“三少原则”(1) 一个数据库中表的个数越少越好 。只有表的个数少了 , 才能说明系统的E--R图少而精 , 去掉了重复的多余的实体 , 形成了对客观世界的高度抽象 , 进行了系统的数据集成 , 防止了打补丁式的设计;
推荐阅读
- 阿里P8架构师谈:MySQL数据库的索引原理、与慢SQL优化的5大原则
- 如何设计数据库:淘宝商品数据库设计的一些经验
- 用了这么久微信,才发现这5个超实用的办公神技巧,你知道了吗?
- 手机信号屏蔽器用的是什么原理?
- mysql数据库 InnoDB崩溃恢复机制总结
- 超详细的MySQL数据库字符集总结
- mysql 数据库升级导致授权失败
- Linux下如何实现MySQL数据库每天定时自动备份
- 微信11个超级实用的小技巧,值得一试
- vivo手机开机键和音量键,隐藏4个实用的功能,苹果手机都羡慕
