数据库设计 ER图
创始人
2024-03-22 17:24:33

三个基本概念

Entity

Entity Set表示一类事物,类似于面向对象中类的概念,而Entity Instance表示一个具体的事物,类似于对象的概念。
Entity中可以有属性(Attribute),也可以与其他Entity之间存在关系(Relationship)。在设计数据库时,一个Entity Set通常就是一个数据表,而Entity Instance就是表中的具体数据。

Strong & Weak

Entity可以分为Strong Entity(强实体)和Weak Entity(弱实体)。如果一个Entity可以独立存在,则称为Strong Entity,反之,如果一个Entity必须依赖于其他Entity,则称为Weak Entity。Weak Entity必须与若干个Strong Entity之间存在依赖关系。

ER图

在ER图中,Strong Entity用实线绘制的矩形表示,其中的主键属性用下划线标识。Weak Entity则用双层实线绘制的矩形表示,并且其中的主键用虚下划线标识。依赖关系则用双层实线绘制的菱形表示,并且由于每个Weak Entity Instance都需要依赖至少一个Strong Entity Instance,因此二者之间为强制参与关系。

Relationship

Relationship(关系)表示Entity之间的交互,Relationship同样可以分为Relationship Set和Relationship Instance。例如在teacher和student两个Entity之间存在teach关系,这是一个Relationship Set,而具体哪个老师教哪个学生则是一个Relationship Instance。由此可以看出,在设计数据库时,一个Relationship Set也可以用一个数据表来表示。但在大多数情况下没有这种必要。
当Relationship单独成表时,表中需要包含数数据有相互交互的两个Entity的主键,以及Relationship自身的属性。
在实际数据库的设计中,对于一对一关系,直接将任意Entity Set的主键以及关系自身的属性作为属性添加到另一个Entity Set中即可。对于一对多关系,需要将“一”的Entity主键以及关系属性作为属性添加到“多”的Entity中。对于多对多关系,则需要专门创建一个新表保存双方的主键的关系自身的属性。
Role表示Entity中参与Relationship的属性,对于二元和多元属性来说,role通常都是Entity各自的主键,因此通常不用标识。而对于一元关系来说,role通常为Entity自身的主键以及有主键生成的另一属性,通常需要标识。

分类

根据关系涉及的Entity种类,可以分为Unary Relationship(一元关系),Binary Relationship(二元关系)以及Ternary Relationship(多元关系),其中二元关系(即有两种Entity参与的关系)最为常见。
按照映射关系,关系可以分为一对一关系,一对多关系和多对多关系。
根据参与限制,可以分为Mandatory Participate Relationship(强制参与关系)以及Optional Participate Relationship(可选参与关系)。

ER图

在ER图中,关系使用实线绘制的菱形表示。除了Weak Entity与Strong Entity之间的依赖关系用双层菱形表示。关系的属性写在单层实线绘制的矩形中,并通过虚线与关系连接。
关系通过实线与相关的Entity连接,在连接线上可以标识关系对应的role。连接线的箭头表示映射关系,对于一对一关系,双方的连接线均有箭头,对于一对多关系,只有“一”的一方有箭头,对于多对多关系,双方均无箭头。
可选参与关系用单实线表示,强制参与关系用双实线表示。在实线上除了可以标识role,还可以添加一些简单的映射限制,用m…n表示。其中m和n分别表示对应侧Entity Instance参数数量的最小值和最大值。当n为*时表示无限制。

Attribute

属性(Attribute)隶属于实体或关系,某些特定的属性可以被称为Key(键)。

分类

按照结构类型,属性可以分为Simple Attribute(简单属性)和Composite Attribute(复杂属性)。简单属性就是普通的属性,例如生日、性别等。复杂属性由多个简单属性组成,例如地址属性可以由国家、省份、城市、街道等简单属性组成。
按照值类型,属性可以分为Single-valued Attribute(单值属性)、Multivalued Attribute(多值属性)、Derived Attributes(派生属性)以及Null Attribute(空属性)。其中单值属性就是基本的属性,只能有一个值。多值属性可以有多个值,例如一个人可以有多个电话号码,因此电话号码就是人的多值属性。如果一个属性可以通过其他属性推导得出,那就称为派生属性,例如可以通过一个人的生日推导出他的年龄,年龄就是一个派生属性。而如果一个属性可以为Null,则称为空属性。

ER图

在ER图中,Primary Key(主键)用下划线表示。
Entity中的属性标注在矩形内部的Entity Name之下,简单属性占据一行,用属性名表示。复杂属性占据多行,首行为复杂属性名,后续每一行用每个隶属于复杂属性的属性名表示,除首行外都要添加一个缩进。多值属性用花括号{}包裹的属性名表示。派生属性则在属性名之后添加一个小括号。

ER图示例

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

EER Model

EER(Extend Entity Relationship)Model是ER Model的补充版本。主要添加了Entity的继承和聚合的概念。
与OOP中的Class类似,被继承的Entity称为Super Entity,继承之后的称为Sub Entity。
在ER图中,继承关系用带空心箭头的实现表示,箭头指向Super Entity。Sub Entity有着Super Entity的所有属性。
Aggregation(聚合)指的是将一个关系和与其相关的所有Entity视作一个整体,当做一个新的Entity并可以参与其他关系的概念。

Relation Schema

我们使用ER图的目的就是为了设计关系型数据库,而Relation Schema(关系模式)就是关系型数据库表的直接体现。当我们得到了一组Relation Schema,也就得到了一组关系型数据库的基本结构。
简单来说,Relation Schema的结构就是 table_name(item_name1, item_name2, item_name3…)
ER图与Relation Schema之间的映射关系:

  1. 对于Strong Entity,一个Entity Set就是一个表,每个Attribute为一列,主键同样用下划线表示。
  2. 对于Weak Entity,一个Entity Set同样是一个表,每个Attribute一列,同时还要将依赖的Entity的主键作为Weak Entity主键中的一列。
  3. 对于Composite Attribute,直接将其展开,每个子属性作为一列。
  4. 对于Multivalued Attribute,需要将其视作一个Entity和Multivalued Attribute之间的一对多关系。因此需要为Multivalued Attribute成立一个新的数据表,并将原Entity的主键作为一列添加到数据表中。
  5. 对于One-to-One Relationship,需要将任意一方Entity的主键作为一列添加到另一Entity表中。
  6. 对于One-to-Many Relationship,需要将One侧的主键作为一列添加到Many侧Entity的表中。
  7. 对于Many-to-Many Relationship, 需要以Relationship的名字创建一个新表,表中的字段为两侧Entity的主键,以及Relationship自身的属性。
  8. 对于Sub Entity,需要为其建立一个新表,表中包含所有Sub Entity引入的新属性,并将Super Entity中的主键作为一列。
  9. 对于Aggregation,由于其涉及的Entity已经超过两个,需要为其设立新表,其中包含所有涉及的Entity的主键。

总的来说,在转换过程中,每个Entity会被转换成一个数据表,一对一关系和一对多关系会被转换为数据表中的一列或几列,而多对多关系则会用额外的数据表表示。复杂属性会被展开,多值属性会被转换为一对多关系,并为属性创建一个新表。

数据库设计

在设计完Relation Schema之后,数据库的基本结构就已经定下来了,接下来只需要按照每个字段的实际数据为其设计数据类型以及NULL或NOTNULL属性,并根据后续使用需求为其添加合适的索引,即可完成数据库的设计。

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...