数据库-关系建模

前言

在ER建模之完成后,需求就被描述成了ER图。之后就能根据ER图设计相应的关系表。
但是从ER图到具体的关系表的建立还需要经过2个步骤:1. 逻辑模型设计;2.物理模型设计。前者是将ER图映射为逻辑意义上的关系表,后者是映射为物理意义上的关闭表。逻辑意义上的关系表可以理解为单纯意义上的关系表,它不涉及到表中字段数据类型,索引信息,触发器等等细节信息。
本文将详细介绍前者。确切来说,也就是ER模型到逻辑关系表的映射是如何完成的。

基本概念

首先明确下逻辑模型中涉及到的一些概念。

1. 关系 relation

关系就是数据库中包含行和列的一张表。也叫做,关系表,或者表。但是关系表和表是有不同的。

2 关系表和表

关系表有以下几个约束条件:

a. 一列只能一个名称
b. 不能出现完全一样的行
c 表中每个值必须为单值
d 同一列中所有的值都必须属于同一个域
e 行或者列的顺序无关

3 列 column

就是字面上的列,也叫做属性,或者域。

4 行 row

也叫做一个记录,或者元祖(这个没听过)

5 主键 primary key

每个表(关系)中,必须要包含一个主键,用来唯一标识行中记录。
有的地方叫做主码。

6 外键 primary key

外键是某个关系表中的一列,这一列又恰恰是另一个关系表中的主键。用于外键和主键相关联。
有的地方叫做外码。
在这里插入图片描述

7 实体约束性 entity integrity constranit

即,主键不能为空。

8 参照完整性约束(reference integrity constraints)

即,外键要么为空,要么是相关关系表中主键的取值。




ER模型到关系表的映射

1 将常规实体映射为关系表

对于常规的实体,每个常规的属性,对应到关系表中就是一列。某个单值且唯一的列,则是主键,用下划线标记。

在这里插入图片描述
映射为关系表为:
在这里插入图片描述

2 将有复合属性的实体映射为关系表

这类映射中,复合属性的子属性映射到新的关系中,但是复合属性本身不会。
在这里插入图片描述
上面的CustFullName是复合属性,但是在关系表中,没有体现出来,只有作为子属性的CustFName,和CustLName。
映射为关系表为:
在这里插入图片描述
虽然关系表中的复合属性没有了,但是在ER图中各个阶段还是会用到。

3 将具有唯一复合属性的实体映射为关系表

这类映射中,会形成一个复合主码,即联合主键。联合主键就是复合属性的子属性们。

在这里插入图片描述
映射为:
在这里插入图片描述

4 将具有可选属性的实体映射为关系表

即,将可选属性对应的列标记一个(O)。
在这里插入图片描述
映射为关系表:
在这里插入图片描述

5 一对多 1:M 关系的映射

这里映射是将一对多,1:M联系中,M侧(即多的一侧)的实体所映射得到的关系中设置一个外键。这个外键对应的于1侧的实体映射得到的关系中的主键。
在这里插入图片描述

映射为:
在这里插入图片描述
感觉上面的ER图是有问题的,一个员工只能属于一个部门;一个部门有多个员工。这才是一对多。上面ER图的department实体处,不该有符号。
映射出的关系表是没问题的,外键在多的一侧。

6 多对多 (M:N) 联系映射

这类映射规则是,除了具有多对多联系的两个实体外,联系本身也需要映射关系。
联系对应的关系表中的两个外键,分别是两个实体中的主键。
在这里插入图片描述
映射关系为:
在这里插入图片描述

7 一对一 1:1 联系映射

这类映射和1:M的很相似。原则上外键设在任何一个实体的关系中都OK,但如果一对一联系中的基数约束是强制单个和可选单个这种类型,则最好将外键设置在可选多的一侧。因为这样可以保证关系中不会出现太多空值。
在这里插入图片描述
映射关系为:
在这里插入图片描述

8 将具有若干候选码的实体映射为关系

这类映射中,主键依然标记划线,而非主键唯一属性则标记(U)。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值