数据库系统概论——从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.关系 关系模型的数据结构只包含单一的数据结构--关系.在关系模型中,现实世界的实体及实体间的各种联系均用单一的结 ...
随机推荐
- vmware设置centos静态ip
之前有过设置ubuntu静态ip的经验,这次安装设置centos感觉很顺利很简单.参考https://www.linuxidc.com/Linux/2017-10/147449.htm,照做就可以了. ...
- CountHunter 6101 最优贸易 强联通缩点
题目传送门 题解:强连通锁点之后. 就成了一副单向图. 然后对于每个点 找到 后面合法的点的最大值就好了. 合法就是后面的那个点可以走到n号点. 也可以正向跑一遍dij 求出到这个点的最小花费. 然后 ...
- 牛客小白月赛6 I 公交线路 最短路 模板题
链接:https://www.nowcoder.com/acm/contest/136/I来源:牛客网 题目描述 P市有n个公交站,之间连接着m条道路.P市计划新开设一条公交线路,该线路从城市的东站( ...
- HDU 1087 Super Jumping! Jumping! Jumping! 最长递增子序列(求可能的递增序列的和的最大值) *
Super Jumping! Jumping! Jumping! Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64 ...
- codeforces 701 E. Connecting Universities(树+ 边的贡献)
题目链接:http://codeforces.com/contest/701/problem/E 题意:有n个城市构成一棵树,一个城市最多有一个学校,这n个城市一共2*k个学校,要对这2*k个学校进行 ...
- 企查猫app数据解密
通过最近几天的对企查猫的研究,目前已经成功将企查猫的数据加密和响应数据加密完成解密. 和之前对启信宝APP的数据解密操作基本一样,不过企查猫对请求和响应都使用aes加密了,抓包的时候可以看到,具体可以 ...
- 用C#实现的几种常用数据校验方法整理(CRC校验;LRC校验;BCC校验;累加和校验)
CRC即循环冗余校验码(Cyclic Redundancy Check):是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定.循环冗余检查(CRC)是一种数据传输检错 ...
- Linux root 用户下 selenium 运行chrome --no-sandbox的问题的解决
#coding = utf-8 from selenium import webdriver chrome_options = webdriver.ChromeOptions() chrome_opt ...
- spring boot使用常规发送邮件
spring boot使用常规发送邮件 1.pom.xml文件依赖: <!-- javax.mail begin--> <dependency> <groupId> ...
- Dijkstra算法详细(单源最短路径算法)
介绍 对于dijkstra算法,很多人可能感觉熟悉而又陌生,可能大部分人比较了解bfs和dfs,而对dijkstra和floyd算法可能知道大概是图论中的某个算法,但是可能不清楚其中的作用和原理,又或 ...