第五章、数据库设计与E-R模型


数据库整体设计流程

  • 1、刻画数据库用户需求
  • 2、概念设计
  • 3、逻辑设计
  • 4、物理设计
    在这里插入图片描述

本章讲解概念设计、逻辑设计

一、概念设计

1、E-R模型(实体-联系数据模型)

  • 三个主要的组成部分:实体集、联系集、属性

1)、实体、实体集

  • 实体:一个实体是现实世界可区别于所有其他对象的一个‘事物’或‘对象’

    实体可以是实在的也可是抽象的,如一个人、课程、开设的课程段或者航班预订
    例如:课程可以被开左实体,并且course_id唯一标识出了大学中某个课程实体

  • 实体集:是共享相同性质或属性、具有的相同类型的实体的集合

    • 所谓实体集就是同一类型实体的集合(一般是有限的)。注意!是同一类型实体的集合哦。
      实体集中包含的是实体,可以把它理解成数学中的集合,例:{茉莉蜜茶、冰红茶、青梅绿茶}这就是一个实体集。 再比如{鲫鱼、鲤鱼、金龙鱼}这也是一个实体集,这两个实体集里分别只包含了三个实体
  • 属性:属性是每个实体集中每个成员所拥有的描述性性质

  • 如instructor实体集可能具有的属性是:ID、name、dept_name和salary

  • 每个实体在它的每个属性上都有一个值

  • 实体集在E-R图中用一个矩形来表示在这里插入图片描述


2)、复杂属性

  • 复合属性:
    复合属性可以被划分为子部分
    在这里插入图片描述
  • 多值属性
    对一个实体而言,一个属性可以对应于多个值
    假设往instructor实体集中添加一个phone_number属性,每个教师可以有零个、一个或多个电话号码,这种类型被称为多值属性
  • 派生属性
    这类属性的值可以从其他相关属性或实体的值派生出来
    例如:instructor实体集具有age属性,如果instructor实体集还有date_of_birth属性,就可以从date_of_birth和当前日期计算出age属性的值,因此age就是派生属性

3)、联系集

  • 联系:联系是多个实体间的相互关联
    如:张三丰是武当派的老师,教太极拳
    则老师和课程是教授关系,学生和课程是选择关系在这里插入图片描述
  • 联系集:相同类型联系的集合
  • 实体集和实体集产生的联系很多构成联系集

在这里插入图片描述
实体集之间的关联被称为参与
上图可以描述为教师实体集和课程实体集参与到教学这个联系集

  • 自己跟自己联系的时候,把对应的角色标识出来
  • 联系集也可以有描述性属性,在图中通过虚线相连接在这里插入图片描述
  • 在一个实体集中,有下划线的属性代表主码

2、约束

1).映射基数约束

  • 映射基数:一个实体能通过一个联系集关联另一个实体的数量
    在这里插入图片描述
    具体可分为四种

  • 一对一

    • A中的一个实体至多与B中的一个实体相关联,且B中一个实体也至多与A中的一个实体相关联
      ![在这里插入图片描述](https://img-blog.csdnimg.cn/e41270d44e6244ab84469a889f6b8af7.png
  • 一对多

    • A中的一个实体可以与B中任意数量的实体相关联、而B中的一个实体至多与A中的一个实体相关联
      在这里插入图片描述
  • 多对一

    • 同上面的一对多
  • 多对多

    • A中的一个实体可以与B中的任意数量的实体相关联,而B中的一个实体也可与A中的任意数量的实体相关联在这里插入图片描述
      实体集双方,多的一方没剪头,一的一方有箭头

2).参与度约束

在E-R图中部分参与一方用单线连接,全部参与一方用双线连接
在这里插入图片描述


3).码的约束

方式联系集主键
一对一双方任何一方的主键
一对多多方的主键
多对多双方主键的并集

在这里插入图片描述
E-R图中主码下面有横线

3、冗余

举例:
两个实体集:
Instructor(ID,name,dept_name,salary)
Department(dept_name,building,budget)
一个联系集:
Inst_dept(ID,dept_name)
在这里插入图片描述
通过消除实体集中多余的属性,保留联系集中的属性
在这里插入图片描述
弱实体集由于在实体集中消除多余的属性,没有足够的属性作为主码
依赖于另一个强实体集叫做标识性实体集

  • 弱实体集:
    弱实体集的存在依赖于另一个实体集,称为标识性实体集,我们使用标识性实体集的主码以及成为分辨符属性的额外属性来唯一的标识弱实体
    在这里插入图片描述
    section为弱实体集、它依赖的强实体集就是course,course_id和sec_id和semester和year在一起才能唯一标识一个section
  • section的标识性实体集是course
  • sec_course是标识性联系
  • section的主码由标识性实体集的主码加上弱实体集的分辨符构成
  • 虚线就是分辨符
  • 标识性联系用双菱形表示
  • 通过双边框的矩形描述弱实体集
  • 弱实体集是指不能独立存在的实体集,它们依赖于其他实体的存在来进行标识和区分。弱实体集没有足够的属性来唯一标识自己,必须与其他实体集相关联在关系模型中,弱实体集的属性中通常包括一个外键,用于引用其所依赖的实体集

二、逻辑设计

把E-R图的信息转换为对应的关系表

处理复合属性

  • 将复合的属性其下的子属性作为表中的一个属性,删除那个大的复合属性
    举例:在这里插入图片描述

处理多值属性

  • 独立出一个表,把多值属性抽离出来,独立出来的表主码为原来的表的主码和多值属性,原来的表删去多值属性
  • 最后这两个表可以用外键关联
    例1:
    在这里插入图片描述
    在这里插入图片描述

弱实体集转换为关系表时

假设A为弱实体集,B为他所依赖的强实体集,A转换为关系表时,A的属性值中必须包含B的主码
例:在这里插入图片描述

联系集转换为关系表

  • 联系集属性包含两大部分:双方实体集的主码的并集联系集额外的属性
  • 联系集主码的确定:上图,一对一,一对多,多对多等多种情况确定联系集中属性的主码
  • 例:
    在这里插入图片描述

合并

  • 例1
    在这里插入图片描述
    上图的instructor表和inst_dept表主码一样,合并为一个表,保留为instructor表,如下图
    在这里插入图片描述
  • 例2:
    在这里插入图片描述
    在这里插入图片描述
    总结:一对多的关系,多方和联系集转换出的表可以合并

  • 例3:
    在这里插入图片描述
    在这里插入图片描述
    总结:连接弱实体集的联系集转换的表完全冗余,只剩下弱实体集转换的表

总结

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

木木彡、

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值