通过建立实体到概念模型的映射,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模型的更多相关文章

  1. 数据库系统概论——从E-R模型到关系模型

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

  2. 数据库设计与 ER 模型 - 数据库系统原理

    数据库系统生存周期 数据库应用系统的开发是一项软件工程,一般具有信息的采集.组织.加工.抽取.综合.传播等功能,但又有自己的特点,所以称为 数据库工程. 数据库应用系统从开始规划.设计.实现.维护到最 ...

  3. ​《数据库系统概念》1-数据抽象、模型及SQL

    ​DBMS(database-management system)包括数据库和用于存取数据的程序,DBMS的基本目标是为数据的存取提供方便.高效的方式,此外对大多数企业来说,数据是非常重要的,所以DB ...

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

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

  5. 17数据表&E-R模型&概念数据模型上-选学天轰穿大话数据库视频教程

    大纲:解剖“数据表”,戏说E-R模型,概念数据模型(E-R 到 CDM),使用PowerDesigner创建概念模型,生成逻辑数据模型 土豆超清地址: 腾讯超清地址: 百度云盘下载地址:上传ing,稍 ...

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

    ER模型(实体联系模型)的基本元素 实体:是一个数据对象,在ER模型中,实体用方框表示,方框内注明实体的名称 联系:表示一个或多个实体之间的关联关系,联系用菱形框表示,并用线段将其与相关的实体联系起来 ...

  7. 《数据库系统概念》11-扩展的E-R特性

    ​虽然基本的E-R特性可以应对大部分数据库建模,但为了使用方便,也提供扩展的E-R特性 一.特化Specialization有时一个实体集会保护若干子集,这些子集各自具有不同的属性.比如person可 ...

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

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

  9. ER模型

    一.什么是ER模型 实体-联系图(Entity-RelationDiagram)用来建立数据模型,在数据库系统概论中属于概念设计阶段,形成一个独立于机器.独立于DBMS的ER图模型.通常将它简称为ER ...

随机推荐

  1. nginx反向代理转发apache配置 之 cookie去哪儿了?

    在公司接手了个微信项目,由于微信环境下访问网站需要使用对外开放的域名,所以有相关问题,都是直接运维同事帮忙处理. 原理是这样: 方案一: 1. 将域名解析指向测试服务器的地址: 2. 开放相关端口访问 ...

  2. ffmpeg命令: 删除视频中不需要的音频流

    1.ffprobe  gf.mkv 查看 2.ffmpeg  -i gf.mkv  -map 0:0 -map 0:2  -vcodec copy -acodec copy out.mkv 注: -m ...

  3. Vue-Cli 搭建项目 小白

    vue-用Vue-cli从零开始搭建一个Vue项目 Vue是近两年来比较火的一个前端框架(渐进式框架吧). Vue两大核心思想:组件化和数据驱动.组件化就是将一个整体合理拆分为一个一个小块(组件),组 ...

  4. Typescript 学习笔记五:类

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

  5. numpy 介绍

    NumPy系统是Python的一种开源的数值计算扩展.这种工具可用来存储和处理大型矩阵,比Python自身的嵌套列表(nested list structure)结构要高效的多(该结构也可以用来表示矩 ...

  6. spring boot -thymeleaf-url

    绝对路径格式:th:href="@{http://www.baidu.com}" <a th:href="@{http://www.baidu.com}" ...

  7. Emgucv学习系列之环境搭建

    Emgucv功能介绍 Emgucv是跨平台的,是Opencv的.net版本.可以对图片.视频等多媒体资源进行加工处理的SDK库. Emgucv下载和安装SDK 下载地址:https://sourcef ...

  8. MySQL数据库设计规范

    1. 规范背景与目的 MySQL数据库与 Oracle. SQL Server 等数据库相比,有其内核上的优势与劣势.我们在使用MySQL数据库的时候需要遵循一定规范,扬长避短.本规范旨在帮助或指导R ...

  9. Jenkins之使用Pyinstaller构建Python应用程序

    目录 1. 极简概述 2. Jenkins配置 2.1 安装JDK 2.2 安装Jenkins 3. 安装Docker 4. 使用PyInstaller构建Python应用程序 4.1 Fork 一个 ...

  10. 解决Android Studio 3.x版本的安装时没有SDK,运行时出现SDK tools错误

    好久没更新了,最近手机上的闹钟APP没一个好用的,所以想自己写个. 那Android开发环境搭起来,注意先装好jdk. 1.安装Android Studio google的Android开发网站已经有 ...