📅  最后修改于: 2023-12-03 15:23:41.694000             🧑  作者: Mango
增强型 ER 模型(Enhanced Entity-Relationship Model)是在传统的实体关系模型(Entity-Relationship Model)基础上增加了各种属性,从而更好地反映了实际情况并满足了实际需求。增强型 ER 模型常见的扩展有:子类型、继承、聚集、多值、实体的历史记录等特性。
增强型 ER 模型支持继承,允许将一些属性或关系从父实体继承到子实体中,这样能够避免数据冗余。继承是面向对象编程思想中的一种方法,非常方便程序员开发,也简化了数据库设计。
多值属性是指一个实体可以拥有多个取值的属性。在实际应用中,有多数属性都可以考虑为多值属性,例如一个人可以有多个电话号码、多个邮箱地址等。在传统的 ER 模型中,这种情况是无法处理的,但在增强型 ER 模型中,这种情况得到很好的支持。
聚集是指将多个实体聚集为一个整体实体,相当于我们所说的“组合”。在增强型 ER 模型中,聚集关系可以作为一种独立的关系类型来处理,很好地表示出不同实体之间的聚合关系。
在一些应用场合下,需要对数据进行时间上的记录,在增强型 ER 模型中,可以通过将实体定义成有时间属性来很好地处理这种需求。例如,对客户的订单可以进行时间记录,这样就能够查询某一特定时间内的订单情况。
下面是一个增强型 ER 模型的示例,包含了几个常见的扩展特性:
erDiagram
customer {
id INT(11) PK
name VARCHAR(50)
email VARCHAR(100)
contact_no VARCHAR(20)
gender ENUM('Male', 'Female')
}
order {
id INT(11) PK
order_date DATETIME
total_amount DOUBLE(10, 2)
customer_id INT(11) FK
}
product {
id INT(11) PK
name VARCHAR(50)
price DOUBLE(10, 2)
description VARCHAR(255)
}
order_item {
id INT(11) PK
order_id INT(11) FK
product_id INT(11) FK
quantity INT(11)
price DOUBLE(10, 2)
}
shipment {
id INT(11) PK
shipment_date DATETIME
receiver_name VARCHAR(50)
receiver_contact VARCHAR(50)
address VARCHAR(255)
order_id INT(11) FK
}
payment {
id INT(11) PK
payment_date DATETIME
amount DOUBLE(10, 2)
order_id INT(11) FK
}
product_review {
id INT(11) PK
product_id INT(11) FK
customer_id INT(11) FK
rating INT(11)
comment TEXT
}
customer_history {
id INT(11) PK
customer_id INT(11) FK
name VARCHAR(50)
email VARCHAR(100)
contact_no VARCHAR(20)
gender ENUM('Male', 'Female')
updated_at DATETIME
}
上面的示例中,包含了实体之间的关系,以及几个扩展特性,例如订单项中的多值属性、订单的时间属性、产品评论中的继承关系、客户历史记录中的历史属性等。
增强型 ER 模型是传统实体关系模型的扩展,能够更好地满足复杂应用场景的需求。程序员应该熟悉增强型 ER 模型的概念和特性,根据具体场景合理运用,提高数据库设计的质量和效率。