数据库设计与 ER 模型 - 数据库系统原理
数据库系统生存周期
数据库应用系统的开发是一项软件工程,一般具有信息的采集、组织、加工、抽取、综合、传播等功能,但又有自己的特点,所以称为 数据库工程。
数据库应用系统从开始规划、设计、实现、维护到最后被新的系统取代而停止使用的整个周期,称为 数据库系统生存期。
数据库系统生存期一般可划分成下面七个阶段:
(1)规划:是数据库系统生存周期的第一步。在规划阶段需要做的工作是:通过了解用户的实际需求,明确该系统需要实现的目标和任务,确定数据库系统的总目标。
规划阶段需要做的工作有:
a. 系统的调查。
b. 可行性分析。
c. 确定数据库系统的总目标,并对应用单位的工作流程进行优化和制定项目开发计划。
(2)需求分析:准确了解、分析用户需求。
需求分析阶段需要做的工作有:
a. 分析用户活动,产生业务流程图。
b. 确定系统范围,产生系统关联图。
c. 分析用户活动涉及的数据,产生数据流图。
d. 分析系统数据,产生数据字典。
(3)概念设计:概念结构设计是数据库设计最重要的阶段,通过对用户需求进行综合,归纳和抽象,形成一个独立于具体 DBMS 的概念模型。
概念设计的主要步骤分三步完成:
a. 进行数据抽象,设计局部概念模型。
b. 将局部概念模型综合成全局概念模型。
c. 评审。
(4)逻辑设计:将概念结构设计转换为某个 DBMS 支持的数据模型。
(5)物理设计:为逻辑结构模型选择一个合适于应用的物理结构。
(6)数据库的实现:运用 DBMS 提供的数据库语言及宿主语言,根据逻辑设计和物理设计的结果建立数据库,开发应用程序,并试运行。
(7)数据库运行和维护:在数据库系统运行过程中,搜集系统运行的数据来评价系统性能,进一步对系统进行调整和修改。
ER 模型的基本概念
- ER 模型
ER 模型是人们认识客观世界的一种方法、工具。ER 模型的基本元素是实体、联系和属性。ER 模型就是利用实体及其之间的联系来描述事物,一个联系可能涉及多个实体,它所涉及的实体集个数称为该联系的元数,ER 模型中用联系类型的约束来限制参与联系的实体的数目。
ER 模型的设计过程基本上是两大步:
- 先设计实体类型。(此时不要涉及“联系”)
- 再设计联系类型。(考虑实体间的联系)
具体设计时,有时“实体”与“联系”两者之间的界限是模糊的。数据库设计者的任务就是要把现实世界中的数据以及数据间的联系抽象出来,用“实体”与“联系”来表示。
- 采用 ER 模型的数据库概念设计
采用 ER 模型进行数据库概念设计分为三步进行:
(1)设计局部 ER 模型。
a. 确定局部结构范围。
b. 定义实体。
c. 定义联系。
b. 属性分配。
(2)设计全局 ER 模型。
a. 确定公共实体类型。
b. 局部 ER 模型的合并。
c. 消除冲突。
(3)全局 ER 模型的优化。
a. 合并实体类型。
b. 消除冗余属性。
c. 消除冗余联系。
关系模型的基本概念
用二维表格结构表示实体集,用关键码表示实体间联系的数据模型,称为 关系模型。
- 关系模型的基本术语
基本术语有:字段(属性)、字段值(属性值)、记录(元组)、二维表格(元组集合、关系或实例),括号中的表述为关系模型中的术语。
关系中属性的个数称为 元数,元组的个数称为 基数。
键:由一个或几个属性组成。(注意,键不一定是唯一的一个属性)
超键:在关系中能唯一标识元组的属性集。(注意,超键也是一个属性集,不一定只是一个属性)
候选键:不含有多余属性的超键。
主键:用户选作元组标识的一个候选键。
外键:与某个关系的主键相应的属性在另一个关系中出现,此时,该主键就是另一关系的外键。如有两个关系 S 和 SC,其中 S# 是关系 S 的主键,S# 也在关系 SC 中出现,此时 S# 就是关系 SC 的外键。
- 关系模型的三类完整性规则
- 实体完整性规则:要求关系中元组在组成主键的属性上不能有空值。
- 参照完整性规则:要求不能引用不存在的实体。
- 用户定义完整性规则:由具体应用环境决定,系统提供定义和检验这类完整性的机制。
超键 & 候选键 & 主键 的区别
如果以一个小范围的关系模型(身份证、姓名、年龄、性别)来举例,假设姓名不会重复。
超键:身份证;姓名;(姓名,性别);(姓名,性别,年龄)。超键可以唯一标识元组,但不一定是最小唯一。
候选键:身份证;姓名。候选键可以唯一标识元组,且不含任何多余属性,候选键一定是超键。
主键:身份证;姓名。根据使用习惯或设计要求,用户选中标识元组的这个候选键就是主键。
ER 模型到关系模型的转换规则
关系数据库的逻辑设计的结果是一组关系模式的定义,由于关系模型的固有优点,逻辑设计把概念设计的结果(即全局 ER 模型)转换成初始关系模式集,使设计过程形式化的进行,并且结果可以验证。
ER 模型的主要成分是实体类型和联系类型,转换算法就是如何把实体类型、联系类型转换成关系模式。
对于实体类型,可以这样转换:将每个实体类型转换成一个关系模式,实体的属性即为关系模式的属性,实体标识符即为关系模式的键。
对于联系类型,要根据不同的情况做不同的处理。转换的规则是:
- 如果实体间的联系是一对一的联系,将一个关系的键作为外键放在另一个关系中。
- 如果实体间的联系是一对多的联系,则将“一”端的关系的键作为外键放在“多”端的关系中。
- 如果实体间的联系是多对多的联系,则将联系类型也单独转换成一个关系,该关系称为交叉关系。这个关系的键由与联系相关联的实体的键组合而成,联系的属性成为这个交叉关系的属性。
ER 模型实例分析
假设要建立一个企业数据库,该企业有多个下属单位,每一单位有多个职工,一个职工仅隶属于一个单位,且一个职工仅在一个工程中工作,但一个工程中有很多职工参加工作,有多个供应商为各个工程供应不同设备。(这种语句就是典型的三元联系类型 M:N:P)
单位的属性有:单位名、电话。
职工的属性有:职工号、姓名、性别。
设备的属性有:设备号、设备名、产地。
供应商属性有:姓名、电话。
工程的属性有:工程名、地点。
请完成如下处理:
- 设计满足上述要求的 ER 图。
- 将该 ER 图转换为等价的关系模式。
- 根据你的理解,用下划线标明每个关系中的主键。
(1)满足要求的 ER 图如下(实体属性用椭圆形画出,这里略…):

(2)转换后的关系模式和主键如下(红色表示有下划线的主键,紫色表示有波浪线的外键,破折号表示联合住建,第6小项就是联合主键又分别是其余3个关系的外键):
- 单位(单位名、电话)
- 职工(职工号、姓名、性别、单位名、工程名)
- 工程(工程名、地点)
- 供应商(姓名、电话)
- 设备(设备号、设备名、产地)
- 供应关系(工程名-设备号-供应商姓名、数量) 注:此处的“数量”属性是根据题意推测出来的。
增强的 ER 模型
- 弱实体与强实体
一个实体对于另一个实体(称为强实体)具有很强的依赖关系,而且该实体主键的一部分或全部从其强实体中获得。则称该实体为弱实体。用双线矩形框表示。
- 子类和超类的定义
当较低层次上实体类型表达了与之联系的较高层上的实体类型的特殊情况时,就称较高层上实体类型为超类型,较低层上实体类型为子类型。子类继承超类的全部属性。
TEST
1. 为什么关系中的元组没有先后顺序?且不允许有重复元组?
(1)关系就是元组的集合,而集合不考虑元组的先后顺序问题。(2)关系中每个元组一定会有属性标识符用来区分每一个元组,属性值是不同的,所以不会出现完全一样的元组,从集合论的观点来看,也不会出现重复元素。
数据库设计与 ER 模型 - 数据库系统原理的更多相关文章
- 数据库设计和ER模型-------之ER模型的基本概念(第二章)
ER模型(实体联系模型)的基本元素 实体:是一个数据对象,在ER模型中,实体用方框表示,方框内注明实体的名称 联系:表示一个或多个实体之间的关联关系,联系用菱形框表示,并用线段将其与相关的实体联系起来 ...
- 数据库设计和ER模型-------之数据库系统生存期(第二章)
数据库设计 概念:开发人员利用开发环境表达用户要求.设计构造最优的数据模型,然后据此建立数据库以及其应用系统,这个过程称为数据库设计 数据库生存期 1968年首次提出“软件工程”的概念 概念:我们把数 ...
- MySQL数据分析-(5)数据库设计之ER模型
大家好,我是jacky,很高兴跟大家分享本课时的内容,从本节课开始,就开始了我们第二章的学习,第一章我们抛出了若干问题,从第二章开始往后,都是解决问题的一个过程: 第一章的案例中,我们拿手机销售公司举 ...
- 数据库设计和ER模型-------之关系模型的基本概念(第二章)
关系模型的基本术语 定义:用二维表格来表示实体集,用关键码表示实体之间联系的数据模型称为关系模型 有时也习惯称呼关系为表或表格,元组为行(Row),属性为列.关系中属性个数称为“元数”,元组个数称为“ ...
- 数据库原理 第七章 数据库设计和ER模型
第七章讲述一个E-R设计如何转换成一个关系模式的集合以及如何在该设计中找到某些约束. 1.概念设计定义了数据库中表示的实体.实体的属性.实体之间的联系,以及实体和联系上的约束 在设计一个数据库模型的时 ...
- 第六章 数据库设计之ER模型
在ER图中实体用方框表示 实体其实就相当于一个二维表,实体实例就相当于二维表中的一行 属性在二维表中用椭圆表示,属性就是描述实体特征的数据项 概念:键(也被成为候选键):1,属性集合K上的行唯一 ...
- 数据库系统(四)---关系型数据库设计及E-R图
1.关系型数据库: 关系型数据库是一类采用关系模型作为逻辑数据模型的数据库系统,遵从数据库设计的基本步骤,包括:需求分析.概念结构设计.逻辑结构设计.物理结构设计.数据库实施.数据库的运行和维护等阶段 ...
- SQL Server数据库学习笔记-E-R模型
实体(Entities)联系(Relationships)模型简称E-R模型也称E-R方法,是由P.P.Chen于1976年首先提出的.还有一个关键元素Attributes-属性,它提供不受任何数据库 ...
- Atiti 数据库系统原理 与数据库方面的书籍 attilax总结 v3 .docx
Atiti 数据库系统原理 与数据库方面的书籍 attilax总结 v3 .docx 1.1. 数据库的类型,网状,层次,树形数据库,kv数据库.oodb2 1.2. Er模型2 1.3. Sql2 ...
随机推荐
- Psp个人软件开发软件需求分析和用例分析
Psp个人软件开发软件需求分析和用例分析 一.需求分析 1.业务需求 1.1 应用背景 开发项目进度计划总是那么不明确,延期经常出现,甚至无法给出一个相对比较明确的延迟时间.这样给市场的推广会带来很大 ...
- Intel RealSense SDK 简翻
:first-child{margin-top:0!important}img.plugin{box-shadow:0 1px 3px rgba(0,0,0,.1);border-radius:3px ...
- 团队第二周:SRS文档
项目计划: 对于这次的实验,我们组计划进行一个图书管理系统的项目书写,在第一阶段,对该项目先进行一下规划,总结该项目的注意事项以及实验要求,并加以实施. 下面我先对我们项目的要求坐一下说明: 1定义五 ...
- GSM Hacking Part① :使用SDR扫描嗅探GSM网络
0×00 写在开头 近期,发现Crazy Danish Hacker在YouTuBe发布了一个挺不错的教程视频:使用SDR嗅探监听GSM网络的通信流量(GSM Sniffing Teaser – So ...
- linux装JDK
一.安装sun java升 级到ubuntu 11.10之后.ubuntu 默认自带的是openjdkjava.默认情况这个是能够使用的,但是如果你想搭建专业的开发环境,还是需要使用sun的靠谱.另外 ...
- navicat在ubuntu下中文乱码的真正解决方法ZT
乱码解决方法(自己解决我自己这种情况之后打猜测): 打开start_navicat文件,会看到 export LANG="en_US.UTF-8" 将这句话改为 export LA ...
- 操作系统学习笔记(五)--CPU调度
由于第四章线程的介绍没有上传视频,故之后看书来补. 最近开始学习操作系统原理这门课程,特将学习笔记整理成技术博客的形式发表,希望能给大家的操作系统学习带来帮助.同时盼望大家能对文章评论,大家一起多多交 ...
- 上传8m以上文件,报错误 101 (net::ERR_CONNECTION_RESET):连接已重置
经过多方查找,原来是因为我使用了nginx反响代理的原因.nginx在做反向代理时,默认的可以上传的附件大小是1M,可以通过设置nginx.conf中的client_max_body_size进行更改 ...
- Python学习感悟
学习任何新知识,我自己偏向于在实践中学习,这样效率更高:如果只是学习基本概念,会很枯燥. 现在的问题是:不是所有的新知识都可以在实践中学习!
- 关于struts和Spring 结合到一起之后存在ACtion创建单实例还是多
struts 2的Action是多实例的并非单例,也就是每次请求产生一个Action的对象.原因是:struts 2的Action中包含数据,例如你在页面填写的数据就会包含在Action的成员变量里面 ...