数据库系统概论——从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.关系 关系模型的数据结构只包含单一的数据结构--关系.在关系模型中,现实世界的实体及实体间的各种联系均用单一的结 ...
随机推荐
- 怎样用QT在windows环境通过编程卸载installShield打包的程序
通常情况下,如果是一个完备的软件,我们可以通过启动软件的uninstaller.exe之类的程序来完成卸载.但是使用installShield打包的程序,本身可能并不含有这类卸载程序.此时,我们可以通 ...
- Java代理设计模式(Proxy)的几种具体实现
Proxy是一种结构设计模型,主要解决对象直接访问带来的问题,代理又分为静态代理和动态代理(JDK代理.CGLIB代理. 静态代理:又程序创建的代理类,或者特定的工具类,在平时开发中经常用到这种代理模 ...
- CSS3 01. CSS3现状、属性选择器、伪类选择器、结构伪类、伪元素选择器、颜色、文本阴影shadow、盒子模型、私有化前缀
CSS 3 现状 兼容性差,需添加私有前缀/移动端优于PC端/不断改进中/渐进增强原则/考虑用户群体/遵照产品的方案 : CSS3手册 需要阅读其--阅读及使用指引 []表示全部的可选项 || 或者 ...
- HTTPS页面使用CNZZ统计代码,Chrome显示警告怎么办?
很多站长会遇到一个问题,网站加入CNZZ的JS统计代码后,Chrome浏览器出现警告:阻止跨站解析器阻断脚本通过document.write调用(A parser-blocking, cross si ...
- 【LeetCode】334#递增的三元子序列
题目描述 给定一个未排序的数组,判断这个数组中是否存在长度为 3 的递增子序列. 数学表达式如下: 如果存在这样的 i, j, k, 且满足 0 ≤ i < j < k ≤ n-1, 使得 ...
- mybatis_plus插件——生成器
最近在学习mybatis框架,虽然已经简化了一些Dao代码,但是还想更上一层楼吗?不再被基本的pojo层,controller层,service层,dao层基本重复代码所困恼吗?这里,让我们来学习一下 ...
- Python Flask打造一个视频网站实战视频教程
下载链接:https://www.yinxiangit.com/607.html 目录: 本套课程从零基础讲解flask开发网站.涉及到的知识点包括:Python和pycharm的安装.urls和视图 ...
- .Net基础篇_学习笔记_第七天_Continue关键字的用法
Continue: 立即结束本次循环,判断循环条件: 如果成立,则进行下一次循环,否则退出循环. Continue和break的区别: 遇到break,循环不继续. 遇到continue,本次循环也不 ...
- apache ignite系列(六): 服务网格
简介 服务网格本质上还是远程方法调用(RPC),而在ignite中注册的服务本质体现还是以cache的形式存在,集群中的节点可以相互调用部署在其它节点上的服务,而且ignite集群会负责部署服务的 ...
- TestNG(十五)xml文件实现多线程测试
package com.course.testng.thread; import org.testng.annotations.Test; public class ThreadOnXml { @Te ...