数据库概论笔记第五章(ER模型)

本文详细介绍了E-R模型的构建步骤,包括实体集、属性、联系集、参与约束、ER图的绘制,以及设计原则。涵盖了ER图的转换、弱实体集处理、特殊化和一般化,以及模式设计。重点展示了如何处理复杂关系和避免数据冗余。

E-R模型

1.建立模型

数据库可以被定义为实体的集合和实体间的关系。

实体集:相同类型的实体的集合

属性类型:实体集都拥有的描述性的属性

域domain:每个属性允许值的集合

简单simple属性:不可分割的属性

复合composite属性:可拆分

单值属性:一个实体只有一个值

多值属性:一个实体可以有多个值

派生derived属性:通过一个属性的值生成出另一个属性的值

联系集:联系之间的所有实体的集合,所有实体集的子集,也可以有属性。

度degree:联系集里有多少实体集。ternary relationship三元联系。二元binary。

二元联系的映射基数Mapping Cardinality:一对一、一对多、多对一、多对多。

2.参与约束Participation Constraints

全部参与total:所有实体都参加至少一个关系

部分参与partial:只有一些实体参与关系

一对多:

超码:一个或多个属性能区别实体

候选码:超码去掉冗余

联系集包括实体集的主码和属性。所有主码作为联系集的主码。

a是联系集的属性。

选择候选码时需要注意映射关系。对于都可以选择的主码根据语义进行选择。

3.ER图

矩形Rectangles表示实体集

菱形Diamonds表示关系集

线将属性连接到实体集,将实体集连接到关系集。

椭圆Ellipse表示属性

双椭圆表示多值属性

虚线Dashed椭圆表示派生属性

下划线表示主键属性

基数约束:Cardinality Constraints

—>表示1、—表示多,箭头指向1

===表示全部参与

基数限制表示参与度

顾客最少可以不借或者无限借,loan参与度最小最大都是1,0…*部分参与,1…1全部参与

三元关系最多只有一个箭头。

表示任何职员任何支行只能有一个岗位

可以表示:每个A都有唯一B和C、每个AB都有唯一C而且每个AC都有唯一B

可以使用角色role指定实体如何通过关系集进行交互

4.设计

不要用一个实体的主码作为另一个实体集的属性

多个客户拥有同一笔贷款,需要单独建立属性,避免loan产生复制。

三元组转化,三元组只能有一个箭头

一对多的情况下A->B,可以将AB的关系转换成B(一)是A(多)的属性

一对一可以放在任意一侧多对多只能放在关系集中。

三元转换成二元:创建集合E,放置特殊标识符,将R的属性交给E,对R中每一个关系(a,b,c),创建E中一个新实体ei,把(ei,a)、(ei,b)、(ei,c)添加到Ra,Rb,Rc中

缺点:需要为E创建标识符,n元关系集可能展示的更清晰,三元关系的约束不一定能转换成二元关系的约束。

5.弱实体集

弱实体集week entity set:没有主码的实体集(所有属性都无法形成主码)

弱实体集依赖于标识实体集。

标识实体就是弱实体集和强实体集关联。

表示为双菱形

分辨符:用于区分弱实体集的实体的一组属性

虚线下划线是分辨符(弱实体集中),分辨符强实体集主码构成弱实体集的主码

弱实体集必须通过多对一并且全部参与到强实体集,中间的关系集就是标识实体集

payment的主码就是(loan_number、payment_number)

6.其他ER

特殊化specialization:属性继承,通过ISA(三角形)特殊化为其他实体集。

一般化Generalization:自底向上将多个实体结合合并成更高的实体集。

ISA可以作为超类superclass和子类subclass。

实体可以通过约束进行分类,条件condition-defined(判断是否符合某个条件),不相交Disjoint和重叠Overlapping,total必须属于低层实体集合和partial不必属于低层实体(高层实体的属性是否需要属于低层实体)。

高层实体high-level entity:父类实体

底层low实体:子类

聚合:两个实体集之间

10个实体集,7个联系,3个m:n,4个n:1, : 一共13个表(10+3)

7.模式

模式schema:主码实体集关系集表示为数据库内容的关系模式

E-R图可以使用一组模式表示

每个实体集和关系集都有唯一指定名称模式,每个模式都有许多列(有唯一列名)

强实体集减少为相同属性的模式,弱实体集变成一个包含强实体集主码的列的

多对多关系表示为两个实体集的主码的属性以及关系集描述性属性

多对一和一对多关系集可以向多的一侧添加一的主键

对一对一关系集,选择任意一方作为多来添加到其他表中

如果多是partial的,多的一端可能为空

对应于将弱实体集与其标识的强实体集连接起来的关系集的模式是冗余的

对于复合属性需要将属性进行展开

实体E的多值属性M通过单独模式EM表示。EM具有E的主码和M的属性。多值属性的每个值映射到EM上关系的独立元组。

8.特殊化表示成模式

1.方法1

高层实体建立一个模式,底层实体用高层实体的主码和自己的属性作为模式

缺点:获取需要访问两个模式

2.方法2

每个实体都形成一个模式,包含自己的属性和继承的属性

如果所有特殊化是total的,那么person模式就不需要了。

3.聚合的表示

创建包含聚合关系的主键、关联实体集的主键、任何描述性属性。

manages (employee_id, branch_name, title, manager_name)

### ER图中箭头的使用及其意义 ER图(实体关系图)是种用于描述数据库中实体之间关系的图形化工具。在不同的符号体系下,ER图中的箭头具有特定的意义。 #### 1. **陈氏符号(Chen's Notation)** 在陈氏符号中,通常不会直接使用箭头来表示关系的方向性,而是通过线条的粗细和形状来区分不同类型的基数关系[^1]。然而,在某些扩展版本中,可能会引入箭头以更直观地表达方向性: - 如果存在箭头,则它通常指向“”的方,表明该关系是从“多”到“”的关联。 - 这种箭头要用于强调依赖关系或导航方向,但在标准的陈氏符号中并不常见。 #### 2. **乌鸦脚符号(Crow's Foot Notation)** 乌鸦脚符号广泛应用于实际项目中,其特点是明确地标记了关系的基数,并可能包含箭头以指示方向性: - **开放圆圈**:表示“可选多”,即允许零个或多条关联记录[^1]。 - **封闭圆圈**:表示“强制多”,即至少需要条关联记录[^1]。 - **直线加箭头**:如果出现箭头,通常是用来指明数据流动的方向或者某个操作的具体目标方。例如,“员工管理部门”这关系可以通过箭头显示管理部门作为被管理的对象。 #### 3. **其他符号系统** 除了上述两种流符号之外,还有基于UML类图或其他定制化的ER图表现形式也可能涉及箭头的应用。这些情况下,箭头往往代表继承、聚合、组合等复杂的关系模式[^3]。 #### 示例代展示 以下是利用MySQL Workbench创建简单ER图时如何定义字段属性个例子: ```sql CREATE TABLE department ( dept_id INT PRIMARY KEY AUTO_INCREMENT COMMENT '部门ID', name VARCHAR(50) NOT NULL UNIQUE COMMENT '部门名称' ); CREATE TABLE employee ( emp_id INT PRIMARY KEY AUTO_INCREMENT COMMENT '员工ID', full_name VARCHAR(100) NOT NULL COMMENT '全名', dept_id INT, FOREIGN KEY (dept_id) REFERENCES department(dept_id) ON DELETE SET NULL COMMENT '所属部门' ); ``` 此SQL语句片段展示了两个表之间的外键约束设置过程,其中`FOREIGN KEY`体现了两者的逻辑链接方式,而具体的可视化呈现则需借助专门的设计工具完成[^4]。 ### 结论 综上所述,虽然传统意义上的ER图未必总是含有明显可见的箭头标记,但随着技术发展及需求变化,现代实践中已逐渐接纳此类增强型视觉提示手段以便更好地传达信息层次与功能特性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值