《数据库系统概念》10-ER模型
通过建立实体到概念模型的映射,Entity-Relationship Model可以表达整个数据库的逻辑结构,很多数据库产品都采用E-R模型来表达数据库设计。
一、E-R模型采用了三个基本概念:实体集、关系集和属性
a)实体集
实体Entity相当于现实中的事物或对象,比如大学中的一个person就是一个entity,实体具有一系列属性,通过其中的某个或某几个属性可以唯一地确定这个实体,比如person_id。实体可以是现实中具体的事物,比如person、book,也可以是抽象的事物,比如money、course等。
实体集是一系列具有相同属性实体的集合,比如某所大学的所有教师构成了一个称为instructors的实体集。
实体集可以是相交的,假如persons实体集为学校中的所有人,则一个person实体可能是一个instructor实体或者一个student实体,或者两者都不是。
b)联系集
联系是指多个实体间的相互关联。比如可以定义教师A与学生B之间的联系advisor,这一联系指明A是B的导师。联系集是相同类型联系的集合,是n>=2个实体集直接的数学关系。实体集之间的关联称为参与(participate),联系也可以具有描述性属性(descriptive
attribute),实体集instructor和student之间的联系为advisor,可以将属性date与该联系关联起来,表示教师成为学生导师的日期。
c)属性
每个属性都有一个可取值的集合,称为属性的域(domain)或者值集(value
set)。Course_id的域可能是特定长度的所有字符串的集合,semester的域则可以是春夏秋冬四个季节。实体有多个属性,每个属性可以用属性名-值的键值对来描述,比如instructor的一个实体可以描述为:{(ID,7677),(name,Crick),(dept_name,
Biology)}
属性的分类
简单属性与复合属性。简单属性无法再被划分为更小的部分,复合属性却可以。比如name可以进一步划分为first_name\middle_name\last_name。如果在一些场景下要使用整个属性,在另外的场景则只需要属性的一部分,则适合使用复合属性。复合属性有助于分组相关的属性,让建模更清晰。
单值属性和多值属性。
一般情况下一个属性只会有一个值,但有些多值的情况,比如phone_number,一个人可能会有多个电话号码。多值属性用花括号区分,{phone_number},在适当的情况下,可以设置多值属性的上下界,比如设定phone_number的数目为1-2。
二、约束Constraints
a)映射基数(Mapping Cardinalities)
映射基数也称映射比率,表示一个实体统一联系集能关联的实体个数,常用于二元联系集。假设R为实体A-B之间的联系集,则映射基数有如下几种情况:
一对一(one to one),A的实体至多与一个B实体关联,反之亦然。
一对多(one to many),A的实体可以与任意多个B实体关联(>=0),B实体则只能与至多一个A实体关联。
多对多(many to many)。A和B实体间相互关联的数目不受限制。
b)参与约束(Participation Constraints)
如果实体集E中的每个实体都参与到联系集R的至少一个联系中,则E在R中的参与是全部的(total),否则为部分的(partial)。比如A-B为一对一映射,A中的实体数多于B,则A部分参与,B全部参与。
三、E-R模型转换为关系模型
a)转换具有简单属性的强实体集
假设E是具有简单描述性属性a1,a2..的强实体集,可以转换为具有同样属性的关系模型E,它的一个元祖对应实体集中的一个实体,主键也是实体集E的主键。
b)转换具有复杂属性的强实体集
对于复合属性,转换时需要为每个子属性创建单独的属性,比如将name拆分为first_name,
middle_name,
last_name;对于多值属性,需要使用多个元祖来表示,比如ID为22的教师的phone_number有555-1234与444—4321,则对应两条元祖(22,
555-1234)与(22, 444—4321),这两个属性共同构成了主键。
c)转换联系集
联系集也转换为关系模型,所有参与联系的实体集的属性和联系集的描述性属性构成了转换的模型的属性。关于主键,对于多对多的二元联系,主键为参与联系的实体集的主键的并集;对于一对一的联系,可使用任意一方的主键;对于多对一的联系,选择“多”端的主键。
学习资料:Database System Concepts, by Abraham Silberschatz, Henry F.Korth, S.Sudarshan
《数据库系统概念》10-ER模型的更多相关文章
- 数据库系统概论——从E-R模型到关系模型
E-R模型和关系模型都是现实世界抽象的逻辑表示 E-R模型并不被 DBMS直接支持,更适合对现实世界建模 关系模型是 DBMS直接支持的数据模型 基本 E-R图中的元素包括实体集.联系集.属性 椭圆框 ...
- 数据库设计与 ER 模型 - 数据库系统原理
数据库系统生存周期 数据库应用系统的开发是一项软件工程,一般具有信息的采集.组织.加工.抽取.综合.传播等功能,但又有自己的特点,所以称为 数据库工程. 数据库应用系统从开始规划.设计.实现.维护到最 ...
- 《数据库系统概念》1-数据抽象、模型及SQL
DBMS(database-management system)包括数据库和用于存取数据的程序,DBMS的基本目标是为数据的存取提供方便.高效的方式,此外对大多数企业来说,数据是非常重要的,所以DB ...
- 数据库系统原理——ER模型与关系模型
原文链接: http://blog.csdn.net/haovip123/article/details/21614887 犹记得第一次看<数据库系统原理>时看天书的感觉,云里雾里:现在已 ...
- 17数据表&E-R模型&概念数据模型上-选学天轰穿大话数据库视频教程
大纲:解剖“数据表”,戏说E-R模型,概念数据模型(E-R 到 CDM),使用PowerDesigner创建概念模型,生成逻辑数据模型 土豆超清地址: 腾讯超清地址: 百度云盘下载地址:上传ing,稍 ...
- 数据库设计和ER模型-------之ER模型的基本概念(第二章)
ER模型(实体联系模型)的基本元素 实体:是一个数据对象,在ER模型中,实体用方框表示,方框内注明实体的名称 联系:表示一个或多个实体之间的关联关系,联系用菱形框表示,并用线段将其与相关的实体联系起来 ...
- 《数据库系统概念》11-扩展的E-R特性
虽然基本的E-R特性可以应对大部分数据库建模,但为了使用方便,也提供扩展的E-R特性 一.特化Specialization有时一个实体集会保护若干子集,这些子集各自具有不同的属性.比如person可 ...
- 数据库设计和ER模型-------之关系模型的基本概念(第二章)
关系模型的基本术语 定义:用二维表格来表示实体集,用关键码表示实体之间联系的数据模型称为关系模型 有时也习惯称呼关系为表或表格,元组为行(Row),属性为列.关系中属性个数称为“元数”,元组个数称为“ ...
- ER模型
一.什么是ER模型 实体-联系图(Entity-RelationDiagram)用来建立数据模型,在数据库系统概论中属于概念设计阶段,形成一个独立于机器.独立于DBMS的ER图模型.通常将它简称为ER ...
随机推荐
- [CocoaPods]Podfile文件
Podfile是一个描述一个或多个Xcode项目的目标依赖项的规范.该文件应该只是命名Podfile.指南中的所有示例都基于CocoaPods 1.0及更高版本. Podfile可以非常简单,这会将A ...
- LeetCode--No.002 Add Two Numbers
Add Two Numbers Total Accepted: 160702 Total Submissions: 664770 Difficulty: Medium You are given tw ...
- postgresql-分页重复数据探索
# postgresql-分页重复数据探索 ## 问题背景 许多开发和测试人员都可能遇到过列表的数据翻下一页的时候显示了上一页的数据,也就是翻页会有重复的数据. ### 如何处理? 这个问题出现的原因 ...
- python基础学习笔记 - 备忘
基础中的基础 Python标识符 命名规则: Python标识符区分大小写. 可以包括英文.数字以及下划线,但不能以数字开头. 以下划线开头的标识符是有特殊意义的: a) 以单下划线开 ...
- Android 系统内核层与 Linux Kernel 的比较
Android 内核具有和标准 Linux 内核一样的功能,主要实现了内存管理.进程调度.进程间通信等功能.但在文件系统.进程间通信.内存管理等方面存在差异. 1.文件系统.移动设备采用的大多不是硬盘 ...
- 从零开始学 Web 之 Ajax(四)接口文档,验证用户名唯一性案例
大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...
- Zabbix4.2.0使用Python连接企业微信报警
目录 1. 配置企业微信 2. 脚本配置 2.1 安装python依赖的库 2.2 编写脚本 2. 搭建FTP 3. 配置Zabbix监控FTP 3.1 添加FTP模板 3.2 添加报警媒介 3.3 ...
- JVM笔记11-类加载器和OSGI
一.JVM 类加载器: 一个类在使用前,如何通过类调用静态字段,静态方法,或者new一个实例对象,第一步就是需要类加载,然后是连接和初始化,最后才能使用. 类从被加载到虚拟机内存中开始,到卸载出内存为 ...
- 西门子PLC-1200 SCL语言开发学习笔记 (一)
一.简介和背景 PLC一般使用梯形图开发,但是梯形图适合电工使用而不是程序员使用,对我们来说开发困难,门槛高,幸好PLC的开发标准还带了类pascal的高级语言,在西门子这里叫SCL语言,这对于我们程 ...
- Asp.net mvc 5 CRUD代码自动生成工具- vs.net 2013 Saffolding功能扩展
Asp.net mvc 5 CRUD代码自动生成工具 -Visual Studio.net2013 Saffolding功能扩展 上次做过一个<Asp.net webform scaffoldi ...