目录

一、概述

二、基本概念

1. 关系(relation)

2. 列(column)

3. 行(row)

4. 关系表 VS 一般的表

5. 主码(主键primary key)

6. 实体完整性约束(entity integrity constraint)

7. 外码(外键foreign key)

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

三、ER模型到关系表的映射

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

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

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

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

5. 一对多(1:M)联系的映射

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

7. 一对一(1:1)联系的映射

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

9. 将具有多值属性的实体映射为关系

10. 将具有派生属性的实体映射为关系

11. 一对多(1:M)一元联系的映射

12. 多对多(M:N)一元联系的映射

13. 一对一(1:1)一元联系的映射

14. 将弱实体映射为关系

15. 将关联实体映射为关系

16. 三元联系的映射


一、概述

ER建模环节完成后,需求就被描述成了ER图。之后,便可根据这个ER图设计相应的关系表了。

但从ER图到具体关系表的建立还需要经过两个步骤:1. 逻辑模型设计 2. 物理模型设计。其中前者将ER图映射为逻辑意义上的关系表,后者则映射为物理意义上的关系表。逻辑意义上的关系表可以理解为单纯意义上的关系表,它不涉及到表中字段数据类型,索引信息,触发器等等细节信息。

本文将详细介绍前者。确切来说,也就是ER模型到逻辑关系表的映射是如何完成的。

二、基本概念

1. 关系(relation)

关系就是在数据库中存在的,包含行和列的一张表。也常被称为关系表,或者表。注意只有在确保不会引起混乱的时候使用最后一种称呼,因为关系表和一般意义上的表有很大区别(下文会分析)。

2. 列(column)

列就是字面意义上表的列。但是它也有时被称作属性,或者域。

3. 行(row)

行就是字面意义上表的行。但是它也有时被称作元祖,或者记录。

4. 关系表 VS 一般的表

关系表有以下几个基本约束:

a. 一个列只能有一个名称;

b. 不能出现完全一样的行;

c. 表中每个值都必须为单值;

d. 同一列中的所有值都必须属于同一个域;

e. 行/列顺序无关

5. 主码(主键primary key)

每个关系必须要有一个主码(可含多列),用来唯一标识表中各行记录。

6. 实体完整性约束(entity integrity constraint)

指所有主码必须非空。

7. 外码(外键foreign key)

外码是某关系中的一列,而这一列恰恰又是另一个关系的主码。

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

外码取值要么为空,要么为其参照关系中的主码取值。

三、ER模型到关系表的映射

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

对常规实体来说,每个常规属性对应到关系表中的一列,而某单值且唯一的列则映射为主码,标记下划线。

如下实体:

将映射为关系:

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

这类映射中,复合属性的各子属性会映射到的新的关系中,但是复合属性名本身不会。

如下实体:

将映射为关系:

虽然关系中没有出现符合属性名,但数据库上层的前端应用可能会利用到复合属性名。也就是ER图在各个阶段都有可能用到,不是说映射为关系后就没啥事了。

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

这类映射中,将会形成一个复合主码,其成员为复合属性的各子属性。

如下实体:

一个building有很多roomnumber,不同的building可能有相同的roomnumber,比如不同的building可能都有101号房间号,只有building和roomnumber一起才能确定classroom。

将映射为关系:

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

这类映射中,需要将可选属性对应的列标记一个(O)。

如下实体:

bonus奖金,可能有也可能没有,所以是可选的

将映射为关系:

5. 一对多(1:M)联系的映射

这类映射的规则为:在由1:M联系中属于M侧的实体所映射得到的关系中设置一个外码,这个外码对应于由1侧的实体映射得到的关系中的主码。

如下ER模型:

将映射为关系:

注意,外码命名不一定要和它对应的主码一致,应根据实际情况决定。

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

这类映射的规则为:除了具有多对多联系的两个实体之外,联系本身也需要映射为关系。联系对应的关系中将有两个外码,分别对应两个实体的主码,同时这两个外码构成新关系的主码。

比如下面这个ER模型:

将映射为关系:

7. 一对一(1:1)联系的映射

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

比如下面这个ER模型:

将映射为关系:

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

这类映射中,主码依然标记划线,而非主码唯一属性则标记(U)。

如下实体:

将映射为关系:

9. 将具有多值属性的实体映射为关系

这类映射中,需要为多值属性创建一个新的关系。新的关系中包含一个外码,对应到主实体的主码。同时属性值和外码构成新的关系的复合主码。

如下实体:

将映射为关系:

10. 将具有派生属性的实体映射为关系

派生属性不需要做什么特别处理,为前端的事情。

11. 一对多(1:M)一元联系的映射

这类映射的规则为:实体映射得到的关系中包含一个外码,对应到关系自身的主码。

如下ER模型:

将映射为关系

需要注意的是,该映射中外键名和主键名是不同的,以区分它和主码。事实上关系中也不允许出现名称相同的两列。

12. 多对多(M:N)一元联系的映射

这类映射的规则为:除了实体本身需要映射为关系之外,多对多联系需要映射为另一个关系。新的关系中将有两个外码,它们均对应到实体主码。且这两个外码又组合为新关系的复合主码。

如下ER模型:

将映射为关系:

这里同样要注意外键名要避免和主键名重复。

13. 一对一(1:1)一元联系的映射

和上面第11条讲的一对多的一元联系映射规则完全相同,此处不再举例说明。

14. 将弱实体映射为关系

弱实体映射和常规一对多联系映射一样需要在弱实体(M侧实体)中建立一个对应到属主实体(1侧实体)的外码。然而区别是弱实体中的主码是弱实体自身的部分码+外码构成的复合主码,而后者的主码仅是M侧实体自己的主码。

如下ER模型:

将映射为关系:

当然,如果联系是一对一,则弱实体的主码就是那个对应到其属主实体的外码而没有部分码了。

如下ER模型:

将映射为关系:

15. 将关联实体映射为关系

关联实体本身就是联系,因此它的映射规则和联系是一样的。联系的映射在前文已经完成讲解,此处不再累述了。

16. 三元联系的映射

这类映射和多对多联系的映射比较相似。如下ER模型:

可映射为:

这里提示下,三元联系的情况,联系肯定是多对多对多的。因为如果这三元中有一个为一,那么三元联系就应转成两个二元的一对多联系。

概念模型建模和ER建模,需求可视化表达的是一个意思。在这个环节中,数据开发人员绘制ER图,并和项目各方人员协同需求,达成一致。由于这部分的工作涉及到的人员开发能力比较薄弱,甚至不懂开发,因此ER图必须清晰明了,不能涉及到过多的技术细节。在ER图绘制完毕之后,才开始将它映射为关系表。这个映射的过程,就叫做逻辑模型建模或者关系建模。

有人会说,ER图不是可以直接映射到关系吗,而且已经有了相应的映射工具了,为什么还要绘制ER图多此一举呢?针对这个问题前文已经回答了。ER图是拿出去和别人谈需求的,要求各方人员都能看得懂。而关系表设计到了过多实现细节,比如:要给多对多联系/多值属性等多建一张表,要设置外码,各种复合主码等。这些东西不应该在谈需求的时候出现,它们应当对非开发人员透明。而且ER图中每个属性只会出现一次,减少了蕴含的信息量,是更好的交流和文档化工具。

还有,ER模型所蕴含的信息,也没有全部被逻辑模型包含。比如联系的自定义基数约束,比如实体的复合属性,派生属性,用户的自定义约束等等。因此ER模型在整个开发流程(如物理模型建模,甚至前端开发)中是都会用到的,不能认为ER模型转换到逻辑模型后就可以扔一边了。

数据库关系建模(ER图设计关系表)相关推荐

  1. 电子科大互加数据库课程作业——ER图设计

    电子科大互加数据库课程作业--ER图设计 书上习题P95, 第18题 (1) (2) 关系模型,转换为3个关系 Convoy(车队名.车队号) Car(牌照号.厂家.出厂日期.车队号) Driver( ...

  2. 数据库设计之E-R图和关系表

    一 概念 E-R图:也称实体-联系图(Entity Relationship Diagram),提供了表示实体类型.属性和联系的方法,用来描述现实世界的概念模型. 实体:用矩形框表示,矩形框内写明实体 ...

  3. DBMS-数据库设计与E-R模型:E-R模型、约束、E-R图、E-R扩展特性、E-R图转换为关系模式、UML建模...

    设计过程概览 1. 设计阶段 ·最初阶段:刻画未来数据库用户的数据需求,产品为用户需求规格说明: ·概念设计阶段(conceptual-design phase):(关注描述抽象数据及其联系,通常使用 ...

  4. ER图和关系模型到MySQL数据库表

    本篇主要介绍了MySQL数据库表从ER图到关系模型,再到数据库表的创建过程及其表结构的修改.通过本篇的学习,可以掌握以下内容: ● 应用ER图和关系模型创建数据库表 ● 数据库表结构的修改 1.moo ...

  5. 数据库期末考试预习之ER图和关系模式

    参考链接:ER图 参考链接:ER转为关系模式 学习视频:哔哩哔哩讲解视频 E-R图 1.定义 E-R图又称实体关系图,是一种提供了实体,属性和联系的方法,用来描述现实世界的概念模型. 2.方法 E-R ...

  6. 【数据库】期末复习:SQL语句、关系代数的运算、范式的定义和判断、求最小函数依赖集、ER图转关系模式

    文章目录 SQL语句 查询select 其他 视图 关系代数的运算 并.差.笛卡尔积.投影和选择 连接 自然连接 笛卡尔积 详细版(如果完全不了解就看这里) 范式的定义和判断 如何求候选码 一些例题 ...

  7. 【数据库】E-R图向关系模型转换的规则

    E-R图向关系模型转换的规则: (1) 一个实体型转换为一个关系模式,实体的属性就是关系的属性,实体的码(关键字)就是关系的码. (2) 一个1:1联系可以转换为一个独立的关系模式,也可以与任意一端对 ...

  8. 数据库逻辑结构设计之E-R图向关系模型的转换

    实例: 一.工厂物资管理E-R图: 二.E-R图向关系模型转换的一般原则: 一个实体型转换为一个关系模式,关系的属性就是实体的属性,关系的码就是实体的码. 三.对于实体型间的联系有以下不同的情况: 1 ...

  9. ER图转关系模型小结

    以下是本人的学习小结,欢迎指点 例子 系:一个系主任.多名教师.无数学生 教师:一个教师可以教多门课程 学生:学生可以有1名教师辅导,可以学习多门课程 课程:一个课程可以有多名教师教 ER图 ER图转 ...

最新文章

  1. A-Light-and-Fast-Face-Detector-for-Edge-Devices
  2. java安全编码指南之:lock和同步的正确使用
  3. 高级Java必看的10本书
  4. 鸿蒙os 芯片制程,华为Mate50将如期发布,屏下镜头+鸿蒙OS,再见iPhone12
  5. django2.0 自己入门记录一些基础url 模板等
  6. tomcat 日志catalina.out 按天自动分割 设定时任务定时清除
  7. Java static变量
  8. CMOS版图课程第七讲--可靠性设计,视频截图节选
  9. xml 解析库 msxml6.dll
  10. 申请《App电子版权认证证书》或纸质《计算机软件著作权证书》
  11. 怎样提高计算机内存,电脑物理内存不足怎么提高 电脑物理内存占用过高的解决方法...
  12. 数字体育进入黄金窗口期
  13. docker desktop 阿里云镜像加速
  14. ROS应用开发入门 服务数据的定义和使用
  15. 4款国产实用软件,只因功能强大,常被误认为是外国人开发的
  16. 商业银行的科技发展趋势
  17. 初看一脸问号,看懂直接跪下
  18. 如何写软件测试人员的周报(或日报)
  19. 苹果客服:iPhone 12又一重磅升级确认!
  20. LDREX and STREX

热门文章

  1. PHP调用erc20,调 用erc20
  2. 分类问题结果统计指标的解释:真正类率TPR与假正类率FPR、查全率与查准率、感受性与特异性
  3. 宾馆房间管理系统(C++)
  4. springboot vue elementui理发店预约系统源码
  5. PS动作怎么做出水墨散开GIF动态图片效果
  6. 100Ω-500KΩ电位器电阻转rs485 12位AD转换器 电子尺
  7. t3出纳系统连接不到服务器,用友T3里面的出纳通提示连接系统数据库失败...
  8. clio7.0测试软件如何安装,原装CLIO10.2 QC电声测试仪
  9. 大势至服务器文件备份系统怎么样,大势至服务器文件
  10. Apache ShardingSphere 4.0.0-RC2发布