数据库原理之如何设计一个ER模型
前言
这里是 数据库系统原理 系列文章,主要介绍数据库系统理论以及数据库实用技术。数据库技术是计算机学科中的一个重要分支,它的应用非常广泛,几乎涉及所有的应用领域。
关于作者:
- 小白(Libra),计算机兴趣爱好者,Java,C,C++,Hadoop,MySQL
- Email : hewei20031009@163.com
- GitHub : Regel-zack · GitHub
转载请注明出处
正文
已知信息
百货公司管辖若干连锁商店,每家商店经营若干商品,每家商品有若干职工,但每个职工只能服务于一家商店
实体类型 “ 商店 ” 的属性有:商店编号,点名,店址,店经理
实体类型 “ 商品 ” 的属性有:商品编号,商品名,单价,产地
实体类型 “ 职工 ” 的属性有:职工编号,职工名,性别,工资
我们的主要目的是画出商店、商品和职工实体类型及其联系类型的ER图,并将其转换为关系模式集
建立ER图
- 先确定实体类型。在这里,我们已经确定有三个实体类型,分别是商店,商品和职工
- 再确定联系类型。首先,一家商店可以有多个商品售卖,一个商品可以在多个商店销售,因此,商店和商品之间是M:N联系,而一家商店可以有多个职工,可一个职工却只能在一家商店工作,因此商店与职工的联系是1:N联系,我们将这两个联系类型分别定义为 “ 经营 ” 和 “ 服务 ”
- 把实体类型和联系类型组合成ER图
- 确定实体类型和联系类型的属性
由此,我们可以画出如下ER图
商店的属性图

商店与商品的ER图

商店与职工的ER图

转换成关系模式集
在 “ 商店--商品 ”ER 模型中,包含着三个实体集(商店、商品、职工)、一个M:N的联系(经营)以及一个1:N的联系(服务)。由此,我们将其转换为关系模式如下:
商店(商店编号,店名,店址,店经理)
商品(商品编号,商品名,单价,产地)
职工(职工编号,职工名,性别,工资)
销售(商店编号,商品编号,月销售量)
服务(商店编号,职工编号,参加工作时间)
至此,我们已经完成了关于百货公司的ER模型设计,在这里,我们继续向下讨论ER模型,层次模型,网状模型,关系模型和面向对象模型的特点
- ER模型:直接从现实世界抽象出实体类型及实体间联系,然后用ER图表示的数据模型。主要特点是接近于人的思维,易于理解,与计算机实现无关,用户容易接受。
- 层次模型:用树型结构表示实体类型及实体间联系的数据模型。主要特点是:记录之间的联系用指针实现,查询效率较高。
- 网状模型:用有向图结构表示实体类型及实体间联系的数据模型。主要特点是:记录之间通过指针实现,M:N联系也容易实现,查询效率较高
- 关系模型:用二维表格结构表示实体集,用外键表示实体间联系的数据模型。主要特点是:概念清晰、简单,用统一的结构来表示实体类型和实体间联系。
- 面向对象模型:在该模型中,最基本的概念是对象(Object)和类(Class),主要特点是:语义强,支持复杂的数据类型(向量、矩阵、有序含有等),有封装新和继承性,具有版本管理功能,支持长事物等。