数据库系统概论——从E-R模型到关系模型
E-R模型和关系模型都是现实世界抽象的逻辑表示
- E-R模型并不被 DBMS直接支持,更适合对现实世界建模
- 关系模型是 DBMS直接支持的数据模型
基本 E-R图中的元素包括实体集、联系集、属性
椭圆框表示属性,矩形框表示实体集,菱形框表示联系

属性处理
关系模型要求关系的所有属性都是原子的。然而 E-R模型中的复合属性和多值属性不是原子的,E-R模型还允许出现派生属性,这三种属性需要特殊处理
(1)派生属性
派生属性的值可以通过计算得到,它的值不在数据库中存储,转换时直接忽略
(2)复合属性
采用"展平"技术:忽略复合属性本身,直接考虑它的成分属性。如果某个成分属性仍然是复合的,用相同方法处理
例如,考虑实体集职工复合属性"家庭住址",它包含成分属性省、城市、街道、邮政编码。在将该实体集转换成关系模式时,忽略复合属性"家庭住址",而直接使用成分属性省、城市、街道、邮政编码作为关系模式的属性
(3)多值属性
需要为每个多值属性 M创建一个关系
- 如果多值属性 M是实体集 E的属性,K是 E的主码,则关系
的属性由 M和 K组成
- 如果多值属性 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 命名。原则上如何命名没有规定,但是采用容易记忆的名字有助于理解,并且当多值属性是复合属性时,直接使用多值属性名作为关系名是方便的
实体集处理
强 / 弱实体集
一般地,如果一个实体集的任何属性集都不足以形成该实体集的码,则称该实体集为弱实体集。与此相对,存在码的实体集称为强实体集
弱实体集中的任何实体(简称弱实体)都不能独立地存在于系统中,即每个弱实体必须依赖于一个强实体。例如每个家属必须存在依赖于一个特定的职工(只有这样他才被公司视为家属),当一位职工离开公司,他的配偶和子女都不再被公司视为家属
- 弱实体集必须与另一个称为标识实体集或属主实体集的强实体集相关联才有意义
- 称标识实体集拥有它所标识的弱实体集,将弱实体集与其标识实体集相关联的的联系称为标识性联系
- 标识性联系是从弱实体集到标识实体集的多对一联系,并且弱实体集对该联系的参与是全部参与
在弱实体集中,如果它的一个属性集可以唯一确定 存在依赖于同一个强实体的弱实体,则称该属性集为弱实体集的分辨符。弱实体集的标识实体集的码和该弱实体集的分辨符共同形成弱实体集的码,弱实体集的分辨符又称弱实体集的部分码
每个强实体集用一个关系表示。实体集名可以作为关系名,实体集的全部属性构成关系的属性(复合属性按照前面的方法"展平"),实体集的码作为关系的码
每个弱实体集用一个关系表示。弱实体集名可以作为关系名,弱实体集存在依赖的标识实体集的主码和弱实体集的全部属性构成关系的属性(复合属性按照前面的方法"展平"),标识实体集的码和弱实体集的分辨符组合成关系的码。下图给出了强实体集职工和弱实体集家属转换后的关系模式

联系集处理
每个联系集用一个关系表示,但弱实体集与其标识实体集之间的存在依赖关系忽略
联系集名可以作为关系名,参与联系的诸实体集的主码和联系集的属性(复合属性按照前面的方法"展平")形成关系的属性
关系的码根据联系的类型按如下方法确定

联系集转关系时,先找到一个联系集,然后顺着连线找到关联的多个实体集。观察实体集间的连线:
- 连线的两端都有箭头,说明是一对一的联系,新的主码是两关系的候选码中的一个(两个候选码都画有下划线,但下划线不相连,具体哪个是主码,自定)
- 连线的一端有箭头,说明是一对多的联系,箭头一端是"单端",新的主码由"多端"实体集的码组成
- 连线两端都没箭头,说明是多对多的联系,新的主码由所有实体集的码组成
将基本 E-R图转换成关系模式
为了将联系转换成关系模式,要求参与同一联系的任何两个不同的实体集的主码都不包含相同的属性(这一点容易做到,属性是局部于实体集的,必要时可以对某些属性重命名)
假定复合属性已经"展平",多值属性创建了对应的关系。将 E-R模型转换成关系模式的方法如下
- 每个强实体集用一个关系表示
- 每个弱实体集用一个关系表示
- 将联系集用相应的方法转换成关系表示
- 如果两个关系具有相同的码,可以合并它们(这一步并非必须,但可以减少码重复存放空间开销,使查询可以更有效的求值)
例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_in,Students 和 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模型到关系模型的更多相关文章
- 数据库设计和ER模型-------之关系模型的基本概念(第二章)
关系模型的基本术语 定义:用二维表格来表示实体集,用关键码表示实体之间联系的数据模型称为关系模型 有时也习惯称呼关系为表或表格,元组为行(Row),属性为列.关系中属性个数称为“元数”,元组个数称为“ ...
- ER图/模型转换为关系模型
ER图中的主要成分是实体类型和联系类型,转换规则就是如何把实体类型.联系类型转换成关系模式. 1. 二元联系转换 规则1.1(实体类型的转换):将每个实体类型转换成一个关系模式,实体的属性即为关系模式 ...
- ER模型到关系模型的转换规则
E-R模型向关系模型的转换规则: 一.两元联系的转换规则 (1)实体类型的转换 将每个实体类型转换成一个关系模式,实体的属性即为关系的属性,实体标识符即为关系的键. (2)联系类型的转换 a实体间的联 ...
- 数据库系统原理——ER模型与关系模型
原文链接: http://blog.csdn.net/haovip123/article/details/21614887 犹记得第一次看<数据库系统原理>时看天书的感觉,云里雾里:现在已 ...
- 【SQL】关系数据库概念及数据模型和关系模型
一.关系数据库 目前关系数据库是数据库应用的主流,许多数据库管理系统的数据模型都是基于关系数据模型开发的. 1)关系数据库:在一个给定的应用领域中,所有实体及实体之间联系的集合构成一个关系数据库. 2 ...
- 数据库 之 E-R实体关系模型
E-R图也称实体-联系图(Entity Relationship Diagram),提供了表示实体类型.属性和联系的方法,用来描述现实世界的概念模型. 1.表示方法 E-R是描述现实世界概念结构模型的 ...
- 数据库精华知识点总结(1)—数据库的三层模式和二级映像,E-R(实体联系图)图,关系模型
Data base: 长期存储在计算机内,有组织的,可共享的大量数据集合.基本特征:永久存储,可共享,有一定的物理和逻辑结构. Data base manage system(DBMS):用户和os之 ...
- 关系、关系模式、关系模型blablabla...
好久没碰<数据库系统概论>了,最近翻了翻发现好多专业名词都忘记了, 现在有空特地记录下. 名词解释 数据:数据就是数据库中存储的基本数据,比如学生的学号.学生的班级数据库:存放数据的仓库数 ...
- 数据库系统概论(2)——Chap. 2 关系数据库基础
数据库系统概论(2)--Chap.2 关系数据库基础 一.关系数据结构及形式化定义 1.关系 关系模型的数据结构只包含单一的数据结构--关系.在关系模型中,现实世界的实体及实体间的各种联系均用单一的结 ...
随机推荐
- in和exists过程对比
两者执行流程完全不一样. in的过程 select * from tableA a where a.id in (select b.a_id from tableB b); 1)首先子查询,查询B表中 ...
- lightoj 1046 - Rider(bfs)
A rider is a fantasy chess piece that can jump like a knight several times in a single move. A rider ...
- js生成玫瑰图
html: <canvas id="c" height="600" width="600"></canvas> js ...
- IDC是什么?
IDC:互联网数据中心,是电信部门利用已有的互联网通信线路.贷款资源,建立标准化的电信专业级机房环境,为企业.政府提供服务器托管.服务器租用以及相关增值等方面服务.IDC是全球协作的特定设备网络,用来 ...
- KafkaProducer源码分析
Kafka常用术语 Broker:Kafka的服务端即Kafka实例,Kafka集群由一个或多个Broker组成,主要负责接收和处理客户端的请求 Topic:主题,Kafka承载消息的逻辑容器,每条发 ...
- MongoDB的入门使用以及遇到的坑
一:MonoDB的简单介绍 MongoDB是一个介于关系型数据库与非关系型数据库中间的数据库,是使用C++进行编写的,他的优点是在支持的查询格式特别的强大,可以进行存储比较复杂的数据类型,支持建立索引 ...
- Spinner列表选择框
Spinner首先它是一个弹出式的列表选择框,由于间接继承了ViewGroup,所以它可以当做一个容器使用; 如果我们可以明确下拉列表中的列表项, 则可以不需要编写代码, 只需要为spinner指定a ...
- 去掉Myeclipse对JS等文件的验证
在用Myeclipse导入新工程或在写代码时,最郁闷的就是它对js,jsp,html的验证太严格了,有时会呈现一个红叉或者一个黄色的感慨号,一运行就报Cannot return from outsid ...
- jsp学习:jsp学习阶段性总结2019.9.21
Jsp学习 jsp语法格式: 脚本程序:<% 代码片段 %> jsp声明:<%! declaration; [ declaration; ]+ ... %> 表达式:<% ...
- ReactNative之Redux详解
用redux有一段时间了,感觉还是有必要把其相关的知识点系统的总结一下的,毕竟好记性不如烂笔头.上篇博客更新了关于<ES6中的迭代器.Generator函数以及Generator函数的异步操作& ...