数据库-设计和E-R模型

#5
一个数据库可以建模为实体的集合与实体之间的关系。实体是一个存在的对象,并且可以与其他对象区分开来。实体集是一组具有相同类型的实体,它们共享相同的属性。一个实体由一组属性表示,这是一个实体集的所有成员都拥有的描述性属性。每个实体的每个属性都有一个值。当属性没有值时,属性有一个空值。域是每个属性的允许值集。关系是几个实体之间的关联。

属性类型
1.简单和复合属性。Simple and composite attributes.
按照是否能分成子部分区分简单和复合属性。如果用户希望在某些时候访问整个属性,而在另一些时候访问属性的一个部分,那么使用复合属性是一个很好的选择。帮助将相关属性组合在一起,使建模更清晰。

2.单值和多值属性。Single-valued and multi-valued attributes
(1)单值属性:特定实体拥有一个单值。如特定帐户实体的account_number属性是单值的,一个帐号只能有一个帐号。
(2)多值属性:一个客户可能有多部手机,特定客户实体的phone_number属性是多个值

3.派生属性。Derived attributes
派生属性的值可以从其他相关属性或实体的值派生.如果客户实体集具有loan_held属性,该属性表示客户从银行获得的贷款数量。我们可以通过计算与该客户关联的贷款实体的数量来获得该属性的值
在这里插入图片描述
属性也可以是关系集的属性,比如实体集customer和account之间的存款人关系集可以具有属性access-date。

Degree of a Relationship Set:指参与关系集的实体集的数量。关系集可以包含两个以上的实体集。假设一家银行的员工可能在多个分支机构从事不同的工作,在不同的分支机构从事不同的工作。然后在实体集employee、job和branch之间有一个三元关系集。

Mapping Cardinality Constraints:表示另一个实体可以通过关系集与之关联的实体的数量。有如下四种类型
在这里插入图片描述
在这里插入图片描述
如果E中的每个实体至少参与R中的一个关系,就说明E对R的参与是完全的。
如果只有E中的一些实体参与R中的关系,说明E参与R是部分的。
在这里插入图片描述

Keys:
1.实体集的superkey是一个或多个属性的集合,这些属性的值惟一地决定每个实体。实体集的候选键是最小超键。虽然可能存在多个候选键,但是其中一个候选键被选择为主键。设R为包含实体集E1、E2、…En,一个在R中的关系集可以表示为({a1,a2,…an}是关系集R的属性):
在这里插入图片描述
2.参与实体集的主键组合形成关系集的超键。这意味着一对实体在特定关系集中最多只能有一个关系。
在这里插入图片描述
3.在多个候选键的情况下,选择主键时需要考虑关系集的语义
在这里插入图片描述

E-R Diagrams

1.表示方法:矩形表示实体集。菱形表示关系集。连线将属性链接到实体集,将实体集链接到关系集。椭圆表示属性(双椭圆表示多值属性。虚线椭圆表示派生属性)。下划线表示主键属性。
在这里插入图片描述
包含复合、多值和派生属性的E-R图如下
在这里插入图片描述
2.Roles:关系集中涉及的实体集不必是不同的。可以使用roles指定实体如何通过关系集进行交互。我们可以通过绘图来表示基数约束。在关系集和实体集之间
a directed line (→), signifying “one,” an undirected line (—), signifying “many”。
在这里插入图片描述
3.E-R图中各种关系
(1)One-to-one relationship:客户通过关系借款人最多与一笔贷款关联,通过借款人,贷款最多与一个客户关联.
(2)One-To-Many Relationship:通过借款人,贷款最多与一个客户关联,客户通过借款人与多个(包括0)贷款关联.
(3)Many-To-One Relationships:贷款通过借款人与多个(包括0个)客户关联,一个顾客通过贷款人最多和一个贷款相联系。
(4)Many-To-Many Relationship:客户通过关系借款人与几笔贷款关联(包括0个),一笔贷款通过关系借款人与多个顾客相联系。

4.关系集中实体集的参与、完全参与用双线表示。举例来说每笔贷款都必须有一个客户通过借款人与之关联,客户对借款人的参与是部分的。
在这里插入图片描述
5.基数限制也可以表示参与约束
在这里插入图片描述
6.三元关系的E-R图
在这里插入图片描述
我们允许三元(或更大程度)关系中最多有一个箭头表示基数约束(从works_on到job的箭头表示每个员工在任何分支中最多只从事一项工作)因为如果箭头不止一个,则有两种定义含义的方法。
在这里插入图片描述
A.每个实体都与来自B和C或的唯一实体相关联
B.来自(A, B)的每对实体与唯一的C实体相关联,而每对(A, C)与唯一的B相关联

7.实体集与属性的使用
选择主要取决于被建模的企业的结构,以及与相关属性相关联的语义。比如我们想要想要保留关于电话的额外信息。那么相对于对employee添加一个telephone的属性,不如建立关系。(不要将相关实体集的主键属性指定为关系集的属性。其实已经隐含。)
在这里插入图片描述
8.实体集与关系集的使用
可能的指导方针是指定一个关系集来描述实体之间发生的操作。
在这里插入图片描述
可能导致复制,如果多个顾客可以持有同一个贷款,就必须定义一个额外的关系,每个额外的关系都包含一样的loan number 和 amount。

9.二进制与非二进制关系
一些非二进制关系可以用二进制关系更好地表示,比如说三元关系的父母,把孩子和他/她的父亲和母亲联系起来,最好是由两种二元关系,父亲和母亲来代替。使用两个二进制关系允许部分信息可见(例如只有母亲知道)。
在这里插入图片描述
10.将非二进制关系转换为二进制关系
在这里插入图片描述
对于R中的每一个关系(ai, bi, ci),创建
a new entity ei in the entity set E
add (ei , ai ) to RA
add (ei , bi ) to RB
add (ei , ci ) to RC
转换的缺点:可能不得不为代表关系的实体集创建集合,而有时候n-ray关系集更清楚地显示多个实体参与到单个关系中。可能不总是将三元关系上的约束转换为二元关系上的约束。
在这里插入图片描述在这里插入图片描述
一对多关系集的属性可以重新定位为“多”侧的实体集。另一方面,对于一对一关系集,可以放在任意一边。对于多对多关系,关系集的属性只能放在关系集中。

11.Weak Entity Sets弱实体集(没有主键的实体集)
弱实体集的存在依赖于标识实体集的存在,它必须通过一个从标识到弱实体集的一对多关系集与标识实体集关联,使用双菱形标识关系。
弱实体集的discriminator (或partial key)是一组属性,用于区分弱实体集中与标识实体集的同一实体相关的所有实体。
弱实体集的主键由弱实体集赖以存在的强实体集的主键加上弱实体集的discriminator构成。
我们用双矩形来描述一个弱实体。我们用虚线在弱实体集的鉴别器下划线。
在这里插入图片描述
12.扩展的e - r特征:Specialization专门化
使用自顶向下的设计过程。我们在实体集中指定与集合中的其他实体不同的子分组,这些子分组成为具有属性或参与不应用于高级实体集的关系的低级实体集。
由标记为ISA的三角形组件描述(例如customer“is a”person)。ISA关系也称为超类-子类关系。Attribute inheritance属性继承表示实体集继承其链接到的高级实体集的所有属性和关系参与。
在这里插入图片描述
13.扩展的e - r特征:Generalization一般化
自底向上的设计过程——将许多共享相同特性的实体集组合到一个更高级别的实体集中。
专门化和泛化是彼此简单的倒置;它们以同样的方式在E-R图中表示,可以互换使用。可以基于不同的特性对实体集进行多种专门化。

14.专门化/泛化的设计约束
限制哪些实体可以是给定的较低层实体集的成员。
condition-defined(条件定义的)或user-defined(用户定义的)
在单个泛化中,实体是否可以属于多个低级实体集的约束?
(1)disjoint不相交:一个实体只能属于一个较低层次的实体集,在ISA三角形旁边写一个不相交的E-R图可以说明这一点。
(2)overlapping重叠:一个实体可以属于多个较低级别的实体集
Completeness constraint(完整性约束)指定高级实体集中的实体是否必须属于泛化中的至少一个低级实体集。
(1)total :一个实体必须属于较低层实体集之一
(2)Partial:实体不需要属于较低级别的实体集之一

15.聚合
我们考虑考虑我们前面看到的三元关系works_on,假设我们想要为分支机构的员工执行的任务记录管理器,那么就会出现关系集works_on和管理表示重叠信息。每个管理关系都对应于一个works_on关系,然而,一些works_on关系可能不对应于任何管理关系,因此我们不能丢弃works_on关系。这时可以考虑通过聚合消除冗余。
在这里插入图片描述
(1)将关系视为抽象的实体
(2)允许关系之间的关系
(3)将关系抽象为新的实体
在不引入冗余的情况下,下图表示员工在特定的部门从事特定的工作,员工、分支机构、工作组合可能有关联的经理
在这里插入图片描述
16.e - r的设计决策
(1)使用属性或实体集来表示对象
(2)一个真实世界的概念是用实体集还是关系集最好地表达。
(3)三元关系与二元关系的使用
(4)使用强实体集或弱实体集。
(5)专门化/泛化的使用——有助于设计中的模块化。
(6)聚合的使用。可以将聚合实体集视为单个单元,而无需考虑其内部结构的细节。

17.关系模式的简化
(1)主键允许将实体集和关系集统一表示为表示数据库内容的relation schemas
(2)符合E-R关系图的数据库可以用schemas集合表示。
(3)对于每个entity集和relationship 集,都有一个惟一的schema ,它被分配对应的实体集或关系集的名称。
(4)每个schema 都有许多列(通常对应于属性),这些列具有惟一的名称。
(5)强实体集简化为具有相同属性的schema 。
(6)弱实体集变成一个表,其中包含标识强实体集的主键的列。
(7)多对多关系集表示为一个schema ,其中包含两个参与实体集的主键的属性与关系集的任何描述性属性举例:关系集借方的模式borrower = (customer_id, loan_number )
在这里插入图片描述
(8)多对一和一对多关系集在多侧上可以通过向“多”侧添加一个额外的属性来表示,该属性包含“一”侧的主键。(即不要为关系集account_branch创建schema ,而是将属性branch_name添加到实体集account产生的schema 中)
一对多关系集举例
在这里插入图片描述
(9)对于一对一关系集,可以选择任一方作为“多”方,也就是说,可以将额外的属性添加到对应于两个实体集的任何表中
在这里插入图片描述
(10)如果参与在“many”方面是局部的,那么用schema 中对应于“many”方面的额外属性替换schema可能会导致空值。
(11)将弱实体集链接到其标识的强实体集的关系集对应的schema是冗余的
在这里插入图片描述
(12)复合属性:通过为每个组件属性创建一个单独的属性,可以将组合属性平面化
在这里插入图片描述
(13)多值属性
①实体E的多值属性M由一个单独的模式EM表示
②模式EM具有与E的主键对应的属性和属性
③多值属性的每个值映射到模式EM上关系的一个单独元组
在这里插入图片描述在这里插入图片描述

18.Bank Enterprise在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值