E-R模型和关系模型都是现实世界抽象的逻辑表示

  • E-R模型并不被 DBMS直接支持,更适合对现实世界建模
  • 关系模型是 DBMS直接支持的数据模型

基本 E-R图中的元素包括实体集、联系集、属性

椭圆框表示属性,矩形框表示实体集,菱形框表示联系

属性处理

关系模型要求关系的所有属性都是原子的。然而 E-R模型中的复合属性和多值属性不是原子的,E-R模型还允许出现派生属性,这三种属性需要特殊处理

(1)派生属性

派生属性的值可以通过计算得到,它的值不在数据库中存储,转换时直接忽略

(2)复合属性

采用"展平"技术:忽略复合属性本身,直接考虑它的成分属性。如果某个成分属性仍然是复合的,用相同方法处理

例如,考虑实体集职工复合属性"家庭住址",它包含成分属性省、城市、街道、邮政编码。在将该实体集转换成关系模式时,忽略复合属性"家庭住址",而直接使用成分属性省、城市、街道、邮政编码作为关系模式的属性

(3)多值属性

需要为每个多值属性 M创建一个关系 

  1. 如果多值属性 M是实体集 E的属性,K是 E的主码,则关系 的属性由 M和 K组成
  2. 如果多值属性 M是联系集 R的属性,并且 R涉及实体集 E1,…,En,它们的主码分别是 K1,…,Kn,则关系 的属性由 M和 K1,…,Kn组成

注意:如果 M还是复合属性,则需要按复合属性的处理方法对 M做"展平"处理。关系 的码需要根据实际问题的语义确定。此外一旦为多值属性创建了关系,后续处理就不再考虑多值属性


例1、多值属性转换

如总图,Phones 是实体集 Departments 的多值属性,为其创建一个关系。由于 Phones还是复合属性,需要对它做"展平"处理:直接使用其成分属性 Office 和 Phone#。实体集 Departments 的码是 Dno。由此得到多值属性 Phones 的关系模式为:Phones(Phone#, Dno, Office)

假定每部电话都在一个院系的办公室,因此 Phone# 可以作为 Phones 的码

注意:这里把为多值属性 Phones 创建的关系用 Phones 命名。原则上如何命名没有规定,但是采用容易记忆的名字有助于理解,并且当多值属性是复合属性时,直接使用多值属性名作为关系名是方便的

实体集处理

强 / 弱实体集

一般地,如果一个实体集的任何属性集都不足以形成该实体集的码,则称该实体集为弱实体集。与此相对,存在码的实体集称为强实体集

弱实体集中的任何实体(简称弱实体)都不能独立地存在于系统中,即每个弱实体必须依赖于一个强实体。例如每个家属必须存在依赖于一个特定的职工(只有这样他才被公司视为家属),当一位职工离开公司,他的配偶和子女都不再被公司视为家属

  • 弱实体集必须与另一个称为标识实体集或属主实体集的强实体集相关联才有意义
  • 称标识实体集拥有它所标识的弱实体集,将弱实体集与其标识实体集相关联的的联系称为标识性联系
  • 标识性联系是从弱实体集到标识实体集的多对一联系,并且弱实体集对该联系的参与是全部参与

在弱实体集中,如果它的一个属性集可以唯一确定 存在依赖于同一个强实体的弱实体,则称该属性集为弱实体集的分辨符。弱实体集的标识实体集的码和该弱实体集的分辨符共同形成弱实体集的码,弱实体集的分辨符又称弱实体集的部分码

每个强实体集用一个关系表示。实体集名可以作为关系名,实体集的全部属性构成关系的属性(复合属性按照前面的方法"展平"),实体集的码作为关系的码

每个弱实体集用一个关系表示。弱实体集名可以作为关系名,弱实体集存在依赖的标识实体集的主码和弱实体集的全部属性构成关系的属性(复合属性按照前面的方法"展平"),标识实体集的码和弱实体集的分辨符组合成关系的码。下图给出了强实体集职工和弱实体集家属转换后的关系模式

联系集处理

每个联系集用一个关系表示,但弱实体集与其标识实体集之间的存在依赖关系忽略

联系集名可以作为关系名,参与联系的诸实体集的主码和联系集的属性(复合属性按照前面的方法"展平")形成关系的属性

关系的码根据联系的类型按如下方法确定

联系集转关系时,先找到一个联系集,然后顺着连线找到关联的多个实体集。观察实体集间的连线:

  1. 连线的两端都有箭头,说明是一对一的联系新的主码是两关系的候选码中的一个(两个候选码都画有下划线,但下划线不相连,具体哪个是主码,自定)
  2. 连线的一端有箭头,说明是一对多的联系,箭头一端是"单端",新的主码由"多端"实体集的码组成
  3. 连线两端都没箭头,说明是多对多的联系新的主码由所有实体集的码组成

将基本 E-R图转换成关系模式

为了将联系转换成关系模式,要求参与同一联系的任何两个不同的实体集的主码都不包含相同的属性(这一点容易做到,属性是局部于实体集的,必要时可以对某些属性重命名)

假定复合属性已经"展平",多值属性创建了对应的关系。将 E-R模型转换成关系模式的方法如下

  1. 每个强实体集用一个关系表示
  2. 每个弱实体集用一个关系表示
  3. 将联系集用相应的方法转换成关系表示
  4. 如果两个关系具有相同的码,可以合并它们(这一步并非必须,但可以减少码重复存放空间开销,使查询可以更有效的求值)

例2、将总图转换成关系模式

总图的多值复合属性 Phones 得到关系模式:Phones(Phone#, Dno, Office)

总图没有弱实体集,由强实体集得到如下关系模式:

Departments(Dno, Dname)

Teachers(Tno, Tname, Sex, Birthday, Title)

Students(Sno, Sname, Sex, Birthday, Enrollyear, Speciality)

Courses(Cno, Cname, Perid, Credit)

其中每个关系模式都源于同名实体集,码用下划线标记。多值属性 Phones 不包含在关系模式 Departments 中,已经将它转换成关系模式

由联系集得到如下关系模式:

Manades(Dno,  Tno)

Works_in(Tno, Dno)

Studies_in(Sno, Dno)

Teaches(Tno, Cno)

SC(Sno, Cno, Grade)

Evalues(Sno, Tno, Cno, Escore)

其中每个关系模式都源于同名联系集,码用下划线标记。Manages 和 Works_in 包含相同的属性,但它们含义不同,前者 Tno 表示作为系主任的教师对特定的"系"(用 Tno 表示)的管理,后者表示每位教师在一个特定的系工作

最后一步,合并具有相同码的关系模式(合并时可根据实际情况,也可根据题设要求)

Manages 可以和 Departments 合并,也可以与 Teachers 合并,前者有利于回答 "某系的主任是谁" 之类的问题,后者有利于回答 "某教师的系主任是谁" 之类的问题。前一类问题更常出现,采用前一种方法,得到关系模式 Departments(Dno, Dname, Dheadno)(把表示系主任的职工号的属性名 Tno 改为 Dheadno,使得属性的语义更清楚)

还有两对关系具有相同的码,Teachers  Works_inStudents 和 Studies_in,都可以直接合并。最终得到关系模式:

Departments(Dno, Dname, Dheadno)

Teachers(Tno, Tname, Sex, Birthday, Title, Tno)

Students(Sno, Sname, Sex, Birthday, Enrollyear, Speciality, Dno)

Courses(Cno, Cname, Perid, Credit)

Teaches(Tno, Cno)

SC(Sno, Cno, Grade)

Evalues(Sno, Tno, Cno, Escore)

Phones(Phone#, Dno, Office)

数据库系统概论——从E-R模型到关系模型的更多相关文章

  1. 数据库设计和ER模型-------之关系模型的基本概念(第二章)

    关系模型的基本术语 定义:用二维表格来表示实体集,用关键码表示实体之间联系的数据模型称为关系模型 有时也习惯称呼关系为表或表格,元组为行(Row),属性为列.关系中属性个数称为“元数”,元组个数称为“ ...

  2. ER图/模型转换为关系模型

    ER图中的主要成分是实体类型和联系类型,转换规则就是如何把实体类型.联系类型转换成关系模式. 1. 二元联系转换 规则1.1(实体类型的转换):将每个实体类型转换成一个关系模式,实体的属性即为关系模式 ...

  3. ER模型到关系模型的转换规则

    E-R模型向关系模型的转换规则: 一.两元联系的转换规则 (1)实体类型的转换 将每个实体类型转换成一个关系模式,实体的属性即为关系的属性,实体标识符即为关系的键. (2)联系类型的转换 a实体间的联 ...

  4. 数据库系统原理——ER模型与关系模型

    原文链接: http://blog.csdn.net/haovip123/article/details/21614887 犹记得第一次看<数据库系统原理>时看天书的感觉,云里雾里:现在已 ...

  5. 【SQL】关系数据库概念及数据模型和关系模型

    一.关系数据库 目前关系数据库是数据库应用的主流,许多数据库管理系统的数据模型都是基于关系数据模型开发的. 1)关系数据库:在一个给定的应用领域中,所有实体及实体之间联系的集合构成一个关系数据库. 2 ...

  6. 数据库 之 E-R实体关系模型

    E-R图也称实体-联系图(Entity Relationship Diagram),提供了表示实体类型.属性和联系的方法,用来描述现实世界的概念模型. 1.表示方法 E-R是描述现实世界概念结构模型的 ...

  7. 数据库精华知识点总结(1)—数据库的三层模式和二级映像,E-R(实体联系图)图,关系模型

    Data base: 长期存储在计算机内,有组织的,可共享的大量数据集合.基本特征:永久存储,可共享,有一定的物理和逻辑结构. Data base manage system(DBMS):用户和os之 ...

  8. 关系、关系模式、关系模型blablabla...

    好久没碰<数据库系统概论>了,最近翻了翻发现好多专业名词都忘记了, 现在有空特地记录下. 名词解释 数据:数据就是数据库中存储的基本数据,比如学生的学号.学生的班级数据库:存放数据的仓库数 ...

  9. 数据库系统概论(2)——Chap. 2 关系数据库基础

    数据库系统概论(2)--Chap.2 关系数据库基础 一.关系数据结构及形式化定义 1.关系 关系模型的数据结构只包含单一的数据结构--关系.在关系模型中,现实世界的实体及实体间的各种联系均用单一的结 ...

随机推荐

  1. TypeError: _obtain_input_shape() got an unexpected keyword argument 'include_top'

    报错 Traceback (most recent call last): File "D:/PyCharm 5.0.3/WorkSpace/3.Keras/2.Application中五款 ...

  2. iOS Autoresizing Autolayout Size classes

    Autoresizing:出现最早,仅仅能够针对父控件做约束(注意:要关闭Autolayout&Size classes才能够看到Autoresizing) 代码对应: UIView.h中的a ...

  3. HDU-4027-Can you answer these queries?线段树+区间根号+剪枝

    传送门Can you answer these queries? 题意:线段树,只是区间修改变成 把每个点的值开根号: 思路:对[X,Y]的值开根号,由于最大为 263.可以观察到最多开根号7次即为1 ...

  4. Fiddler 手机爬虫

    Fiddler抓包工具 配置Fiddler 添加证书信任,Tools - Options - HTTPS,勾选 Decrypt Https Traffic 后弹出窗口,一路确认 ...from bro ...

  5. 【Offer】[59-2] 【队列的最大值】

    题目描述 思路分析 测试用例 Java代码 代码链接 题目描述 请定义一个队列并实现函数max得到队列里的最大值,要求函数max.push_back和 pop_front 的时间复杂度都是0(1). ...

  6. springboot整合mybatis(注解)

    springboot整合mybatis(注解) 1.pom.xml: <?xml version="1.0" encoding="UTF-8"?> ...

  7. FreeSql (九)删除数据

    删除是一个非常危险的操作,FreeSql对删除支持并不强大,仅支持了单表有条件的删除方法. 不想过多的介绍拉长删除数据的系列文章,删除数据的介绍仅此一篇. 若Where条件为空的时候执行方法,Free ...

  8. opencv中IplImage* src = cvLoadImage,错误

    在调试这段代码时 IplImage* src = cvLoadImage("D:\\图像\\已处理 - 11.26\\1.jpg", 1); 提示一下错误 引发了异常: 读取访问权 ...

  9. 腾讯云和阿里云部署web 项目tomcat 日志 中文变成问号

    在部署项目到云上的时候,遇到了tomcat logs 日志中文变问号的问题,今天终于得到解决了 这是中文变成问号的的截图 打开到tomcat bin 目录的文件夹 找到catalina.sh  文件 ...

  10. SpringBoot的一个小彩蛋

    彩蛋这种东西还算比较常见,在电影或者游戏里面我们也遇见过不少.今天就简单介绍一下SpringBoot里面的一个小彩蛋. 玩过SpringBoot的同志都知道,SpringBoot的启动界面是这酱紫的: ...