实体在 IsA 层次结构中的演化
在实体的建模与分析中,理解实体的各种特性以及它们在层次结构中的演化规律至关重要。下面将详细介绍实体的耐久性、频率特征,以及特殊化、分区等相关概念和约束条件。
1. 实体的特性
1.1 耐久性(Durability)
实体类型的耐久性特征有两种可能的值:瞬时性(instantaneous)和持久性(durable)。
-
瞬时性实体类型
:对于所有的实体 e 和时间 t,如果 E(e,t) 成立意味着 E(e,t + 1) 不能成立,或者 E(e,t) 仅在 t 的某些子区间成立,那么实体类型 E 就是瞬时性的。例如,人的出生(Birth)就是瞬时性实体类型,因为出生事件只在某个瞬间发生。
-
持久性实体类型
:反之,则为持久性实体类型。大多数实体类型都是持久性的,如员工(Employee),一个人可以在连续的多天内都是员工。
对于持久性实体类型 E,实体 e 在 E 中的分类区间是 e 在 E 生命周期内的最大连续时间点集合。对于瞬时性实体类型,实体 e 在 E 中的每个成为 E 实例的时间点都定义为一个分类区间。我们用 Ci(e,E) 表示实体 e 在 E 中的分类区间集合。例如,Ci(B,Birth) = {[t3,t3]},Ci(Joan,Employee) = {[t1,t2], [t4,t6]}。同时,我们使用谓词 IncludedIn(t,ti) 来表示时间点 t 包含在时间区间 ti 内。
1.2 频率(Frequency)
实体类型的频率特征也有两种可能的值:单一性(single)和间歇性(intermittent)。
-
单一性实体类型
:如果所有在某个时间是 E 实例的实体只能在一个且仅一个分类区间内是 E 的实例,那么实体类型 E 就是单一性的。例如,人(Person)通常被认为是单一性的,因为假设一个人一旦不存在,就不会在信息库中重生。
-
间歇性实体类型
:反之,则为间歇性实体类型。例如,员工(Employee)可以是间歇性的,因为一个人可以在多个时间段内受雇。而新娘(Bride)是瞬时性且间歇性的实体类型,因为一个人可以多次成为新娘。
2. 特殊化(Specializations)与特殊化演化约束
特殊化是两个实体类型 E’ 和 E 之间的关系,用 E’ IsA E 表示,其中 E’ 是 E 的子类型,E 是 E’ 的超类型。从时间角度看,特殊化意味着如果实体 e 在时间 t 是 E’ 的实例,那么它在时间 t 也必须是 E 的实例,用一阶逻辑公式表示为:∀e,t (E’(e,t) →E(e,t))。
特殊化存在两个约束条件:
- 如果 E 是瞬时性的,那么 E’ 也必须是瞬时性的。
- 如果 E 是瞬时性且单一性的,那么 E’ 必须是瞬时性且单一性的。
为了确定类型配置的有效演化,我们定义了三种特殊化演化约束:
-
绝对静态约束(Absolute Static)
:如果存在特殊化 E’ IsA E,且所有在某个时间是 E’ 实例的实体在其他任何时间都不能在不是 E’ 实例的情况下成为 E 的实例,那么 E’ 相对于 E 是绝对静态的。形式定义为:∀e (∃t E’(e,t) →∀t’ (E(e,t’) →E’(e,t’))),等价于 ∀e (∃t E’(e,t) →Ci(e,E’) = Ci(e,E))。例如,男人(Man)相对于人(Person)是绝对静态的。
-
相对静态约束(Relative Static)
:如果存在特殊化 E’ IsA E,且所有在某个时间是 E’ 实例的实体,在其在 E 中的某个分类区间 ci 内,不能在不是 E’ 实例的情况下成为 E 的实例,那么 E’ 相对于 E 是相对静态的。形式定义为:∀e (∃t,ti E’(e,t) ∧ti ∈Ci(e,E) ∧Included(t,ti) →∀t’ (Included(t’,ti) →E’(e,t’)))。例如,单身(Single)相对于未婚(Unmarried)是相对静态的。
-
动态约束(Dynamic)
:如果存在特殊化 E’ IsA E,且没有额外的约束条件,那么 E’ 相对于 E 是动态的。例如,未婚(Unmarried)相对于人(Person)是动态的。
这三种约束的严格程度依次为:绝对静态约束 > 相对静态约束 > 动态约束。
下面是这三种约束的关系表格:
| 约束类型 | 描述 | 示例 |
| ---- | ---- | ---- |
| 绝对静态约束 | 实体一旦是子类型实例,在任何时间成为超类型实例时都必须是子类型实例 | 男人(Man)相对于人(Person) |
| 相对静态约束 | 在超类型的某个分类区间内,实体成为超类型实例时必须是子类型实例 | 单身(Single)相对于未婚(Unmarried) |
| 动态约束 | 无额外约束 | 未婚(Unmarried)相对于人(Person) |
3. 分区(Partitions)与分区演化约束
泛化(Generalization)和特殊化是 IsA 关系的两种不同视角。我们用 E Gens E1,…,En 表示将实体类型 E1,…,En 泛化为 E。泛化存在两种常见的静态约束:
-
并集约束(Union Constraint)
:如果泛化 E Gens E1,…,En 中,每个在时间 t 是 E 实例的实体也是至少一个 Ei 的实例,那么该泛化是完整的;否则,是不完整的。
-
不相交约束(Disjointness Constraint)
:如果泛化 E Gens E1,…,En 中,每个在时间 t 是 E 实例的实体最多是一个 Ei 的实例,那么该泛化是不相交的;否则,是重叠的。
分区是既完整又不相交的泛化,用 P = E Partd E1,…,En 表示。每个泛化都可以通过引入辅助实体类型和泛化转换为分区。
分区可以分为纯分区(pure)和混合分区(hybrid):
-
纯分区
:如果分区中所有子类型与超类型之间的特殊化演化约束相同,则为纯分区。
-
混合分区
:反之,则为混合分区。例如,Book Partd BookNotLoanable, BookOnLoan, BookAvailable 可能是混合分区,其中 BookNotLoanable 相对于 Book 是绝对静态的,而其他两个是动态的。
混合分区可以通过引入辅助实体类型和分区转换为纯分区,具体步骤如下:
1. 如果一个或多个子类型 E1,…,Ei 相对于超类型是绝对静态的,将其他子类型 Ei+1,…,En 泛化为一个新的实体类型 E’,E’ 相对于 E 是绝对静态的,并定义新的分区 E’ Partd Ei+1,…,En。
2. 如果一个或多个子类型 E1,…,Ei 相对于超类型是相对静态的,将其他子类型 Ei+1,…,En 泛化为一个新的实体类型 E’,E’ 相对于 E 是相对静态的,并定义新的分区 E’ Partd Ei+1,…,En。
分区演化约束定义了允许的初始状态、有效转换和允许的最终状态。对于相对静态分区和动态分区,我们定义了初始子类型(IS(P))、后继子类型(SS(Ei,P))和最终子类型(FS(P))。例如,对于相对静态分区 P = Unmarried Partd Single, Divorced, Widower,IS(P) = {Single},SS(Single,P) = {Divorced, Widower},SS(Divorced,P) = {Divorced, Widower},SS(Widower,P) = {Divorced, Widower},FS(P) = {Single, Divorced, Widower}。
下面是分区演化约束的 mermaid 流程图:
graph LR
classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px;
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
A([开始]):::startend --> B(确定分区类型):::process
B --> C{相对静态分区?}:::process
C -->|是| D(定义 IS(P)、SS(Ei,P)、FS(P)):::process
C -->|否| E{动态分区?}:::process
E -->|是| D
E -->|否| F(异常处理):::process
D --> G([结束]):::startend
F --> G
4. 有效类型配置(Valid Type Configurations)
实体的类型配置(type configuration)是指在时间 t 实体 e 所属的实体类型集合,用 TC(e,t) 表示。一个实体类型集合 VTC = {E1,…,En} 是有效类型配置,如果存在实体 e 和时间 t 使得 TC(e,t) = VTC。
空集总是一个有效的类型配置。如果实体 e 在某个时间 t 的类型配置为空,我们称该实体在 t 时刻被暂停(suspended);否则,称其为活跃(active)。
当所有特殊化和泛化都转换为分区时,确定概念模式所隐含的有效类型配置集合就很直接。一个实体类型集合 VTC 是有效类型配置需要满足以下条件:
1. 如果 E ∈VTC 且存在分区 P = E Partd E1,…,En,那么 VTC 中必须有且仅有一个 Ei (i = 1,…,n)。
2. 如果 Ei ∈VTC 且存在分区 P = E Partd E1,…,Ei,…,En,那么 E ∈VTC。
3. 如果 Ei,Ej ∈VTC,那么 Ei 和 Ej 之间不存在明确的不相交约束。
例如,给定一个概念模式,可能存在以下有效类型配置:
- VTC1 = {Entity, Product}
- VTC2 = {Entity, Person, Married, Man, ManNonBachelor}
- VTC3 = {Entity, Person, Married, Woman}
- VTC4 = {Entity, Person, Unmarried, Divorced, Man, ManNonBachelor}
- VTC5 = {Entity, Person, Unmarried, Divorced, Woman}
- VTC6 = {Entity, Person, Unmarried, Widower, Man, ManNonBachelor}
- VTC7 = {Entity, Person, Unmarried, Widower, Woman}
- VTC8 = {Entity, Person, Unmarried, Single, SingleNonBachelor, Woman}
- VTC9 = {Entity, Person, Unmarried, Single, Bachelor, Man}
而类型配置 TC = {Entity, Person, Unmarried, Single, SingleNonBachelor, Man, ManNonBachelor} 由于不满足不相交约束,不是有效的类型配置。
通过以上对实体特性、特殊化、分区和有效类型配置的介绍,我们可以更好地理解实体在层次结构中的演化规律,为概念模式验证和信息系统设计提供重要的基础。
实体在 IsA 层次结构中的演化(续)
5. 类型配置的创建与转换
在前面的内容中,我们已经探讨了实体的各种特性、特殊化、分区以及有效类型配置的相关概念。接下来,我们将重点关注实体创建时的类型配置以及类型配置的转换问题,这对于概念模式验证和信息系统设计中的事务前置条件确定非常关键。
5.1 实体创建时的类型配置
当一个实体被创建时,它可能具有的类型配置需要同时考虑静态约束(如并集、不相交约束)和一些分区演化约束。
例如,在前面提到的概念模式中,当创建一个新的实体时,它可能的类型配置受到分区和特殊化关系的限制。如果我们有一个分区 P = Person Partd Child, Young, Adult,并且该分区是动态的,那么新创建的 Person 实体初始类型配置必须是 IS(P) 中的一个子类型,即 {Child}。
下面是一个关于实体创建时类型配置的决策表格:
| 分区类型 | 初始子类型(IS(P)) | 新实体可能的初始类型配置 |
| ---- | ---- | ---- |
| Person Partd Child, Young, Adult(动态分区) | {Child} | {Entity, Person, Child} |
| Unmarried Partd Single, Divorced, Widower(相对静态分区) | {Single} | {Entity, Person, Unmarried, Single} |
5.2 类型配置的转换
类型配置的转换需要考虑所有的实体特性和约束条件,包括耐久性、频率、特殊化演化约束和分区演化约束。
例如,对于一个 Person 实体,其类型配置可能从 {Entity, Person, Child} 转换为 {Entity, Person, Young},这符合 Person Partd Child, Young, Adult 分区的后继子类型规则,即 SS(Child,P) = {Child, Young}。
类型配置转换的规则可以总结如下:
1.
分区规则
:如果存在分区 P = E Partd E1,…,En,实体的类型配置转换必须遵循分区的演化约束,即从一个子类型转换到其允许的后继子类型。
2.
特殊化规则
:如果 E’ IsA E,实体在转换过程中必须保持特殊化关系,即如果实体是 E’ 的实例,那么它也必须是 E 的实例。
3.
耐久性和频率规则
:实体的耐久性和频率特性会影响其类型配置的转换。例如,瞬时性实体类型的转换可能只在特定的时间点发生。
下面是一个类型配置转换的 mermaid 流程图:
graph LR
classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px;
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
A([开始]):::startend --> B(获取当前类型配置):::process
B --> C(检查分区和特殊化关系):::process
C --> D{是否满足分区演化约束?}:::process
D -->|是| E{是否满足特殊化演化约束?}:::process
D -->|否| F(转换失败):::process
E -->|是| G(更新类型配置):::process
E -->|否| F
G --> H([结束]):::startend
F --> H
6. 总结与应用
通过对实体的耐久性、频率特征,特殊化、分区以及类型配置的详细分析,我们可以更好地理解实体在 IsA 层次结构中的演化规律。这些知识在概念模式验证和信息系统设计中具有重要的应用价值。
在概念模式验证方面,我们可以利用有效类型配置的规则来检查概念模式的合理性,确保所有可能的类型配置和转换都是有效的。例如,通过检查类型配置是否满足分区的并集和不相交约束,以及特殊化关系的一致性。
在信息系统设计方面,我们可以根据实体的特性和约束条件来确定事务的前置条件。例如,在创建一个新的实体时,我们可以根据分区的初始子类型规则来限制实体的初始类型配置;在进行类型配置转换时,我们可以根据分区和特殊化的演化约束来验证转换的合法性。
以下是一个简单的应用示例:
假设我们正在设计一个员工管理系统,员工(Employee)是一个间歇性的实体类型,并且存在分区 P = Employee Partd FullTime, PartTime。当新招聘一个员工时,我们可以根据分区的初始子类型规则来确定该员工的初始类型配置,例如,如果 IS(P) = {FullTime, PartTime},那么新员工可以是全职或兼职员工。在员工的工作状态发生变化时,例如从全职变为兼职,我们可以根据分区的后继子类型规则来验证这种转换是否合法。
综上所述,深入理解实体在 IsA 层次结构中的演化规律对于提高概念模式的质量和信息系统的可靠性具有重要意义。通过合理应用这些知识,我们可以更好地设计和管理复杂的信息系统。

447

被折叠的 条评论
为什么被折叠?



