数据库设计
文章目录
前言
试图用最通俗的笔记概括数据库设计这一章节的内容,麻烦看官老爷点赞关注支持一下动力猿吧!
一、概念
二、基本E-R模型
1.组成部分
2.设计E-R模型
问题一:实体集还是属性?
问题二:联系还是新加一个实体集?
问题三:三元联系(约束太强)还是二元联系?
三、扩展的E-R模型
扩展的E-R模型在以往画E-R图的题中几乎没有涉及,但其实一点都不高深就是四个注意事项。这块知识要考则题目会明确提示,以防万一记录一下。期待您的关注。
1.参与约束
1.实体的参与度
实体参与联系的最小和最大次数,记作(min,max)。
例如:规定每位学生最少选三门课,最多六门课,则学生在选修联系中的参与度表示为 (3,6)。规定有些课程可以无人选,但任一门课程最多允许100人选,则课程的参与度为 (0,100)。
2.部分参与与全参与
部分参与:min=0,即不是实体集中每个实体都参与联系,用单实线表示。
全参与:min>0,即实体集中每个实体都参与联系,用双实线表示(题目特别说明)。
例如:每个学生都必须选修课程,但一门课程可以没有学生选修。
2.弱实体
1.弱实体
弱实体是依赖于其他实体存在而存在的实体,例如家属依赖于职工的存在而存在。
2.弱实体的特点
1.弱实体不能独立存在,它总是依附于某一所有者实体即强实体。强实体集与弱实体集之间必须是一对多联系,且弱实体必须是全部参与。
例如,每一个已存在的家属必唯一依赖于一个职工。
2.弱实体不一定有自己的码。例如家属实体集可能有姓名、性别、出生年月等信息,但这些信息不足以标识一个家属。我们一般通过强实体的码+弱实体的某一属性(称之为部分码)来标识一个弱实体。
3.弱实体的表示
弱实体用双线框表示,注意全参与和一对多联系,最后部分码下划线是虚线。
3.类层次
1.ISA联系
某些实体型是某个实体型的子类型,例如研究生和本科生是学生的子类型,学生是它们的父类型。这种父类-子类的联系称之为ISA联系(研究生 is a 学生)。
ISA联系中子类继承父类(超类)的所有属性,当然还可以拥有自己的属性。
2.类层次的表示
3.定义在ISA联系上的两种约束关系
Overlap约束:指定两个子类之间是否允许包含同一实体。
Covering约束:指定子类中所有实体是否能包含父类中所有实体。
例如:学生=本科生+研究生,则该ISA联系存在Covering约束,不存在Overlap约束。
又如:职工=教师+行政人员+外聘人员,且教师可能是行政人员。则此ISA联系存在Overlap约束,不存在Covering约束。
4.聚合
1.聚合
把参与练习的实体组合而成新实体,这种新实体称为参与联系的实体的聚合,新实体的属性为参与联系的实体的属性和联系的属性的并集。
2.聚合的表示
例如大学、研究所、公司合作来承担科研项目,这里有“合作”、“承担”两个联系。我们把参与合作联系的大学、研究所、公司组合成一个新实体即聚合,让这个新实体和科研项目建立承担关系。
3.区别聚合与多元联系
若强调n个实体集两两所具有的联系,应当是多元联系。
若强调的是其中一个实体集与剩余实体集组合的联系,应当建立聚合。
四、E-R模型到关系模型的转换
1.基本E-R模型的转换
1.实体集到关系的转换
2.联系集到关系的转换
多对多联系:
一对多联系:
(1)
(2)
一对一联系:
(1)
(2)
2.扩展E-R模型的转换
1.具有参与约束的联系集的转换
2.弱实体集的转换
3.类层次的转换
(1)
(2)