概念结构设计
一.实体与属性划分原则
基本遵循原则:为简化ER图处置,能作为属性对待的尽量作为属性对待
怎样区分属性实体
- 作为属性不能再具有需要描述的性质。
例如:学生除了学号姓名等属性,可能具有学生类型这一属性。但在实际情况中,如果图书馆管理借阅书籍的最大数量与学生类型相联系(本科生最多借阅10本,研究生最多可以借阅20本等),借阅最大数就是描述学生类型的一个性质。那么在实际设计这个图书管理系统时,就需要把学生类型作为一个实体设计。
- 属性不能与其他实体具有联系
例如:病房号可以作为病人的一个属性出现,但病房同时又与医生这个实体产生了联系,这时病房就应该单独作为一个实体出现。
二.ER图集成
在现实生活中,往往需要设计一些较为庞大的数据库,它具备一些子系统。我们设计的思路是先自顶向下需求分析,再从子系统入手,自底向上的设计全局ER图,在分ER图合并为全局ER图时,就涉及到了ER图的集成
2.1 集成步骤
2.1.1 合并ER图,生成初步ER图(消除冲突)
属性冲突
-
属性域冲突(属性值的类型、取值范围或取值集合不同)
例如:同样是日期,有些单位按char存储,有些按date存储 -
属性取值单位冲突
例如:有些单位零件重量按公斤计,有些按斤计
命名冲突
- 同名异义
- 异名同义
结构冲突
-
同一对象在不同的应用中有不同的抽象(实体/属性)
-
同一实体在不同子系统的ER图中所包含的属性个数和属性排列次序不完全相同(用并集解决)
-
实体间的联系在不同的ER图中为不同的类型(一对一、一对多、多对多)
2.1.2 消除冗余
消除一些冗余的联系
在上图中,Q3=Q1xQ2,Q4=∑Q5,因此Q3和Q4都是冗余数据,可以消掉
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通