时间:2022-12-08 04:30:01 | 来源:信息时代
时间:2022-12-08 04:30:01 来源:信息时代
约束分析 : 数据库应用分析的一项重要任务,其目的是对数据库中的数据完整性语义约束条件进行分析,以保证数据的正确性、一致性和相容性,确保数据库系统能够真实地反映现实世界。
约束条件反映了现实世界问题的语义以及数据间内在的联系和制约条件,是数据库完整性控制的核心,它们作为模式的一部分存入数据库,以增强业务规则,限制数据库中的数据。
约束条件一般可以采用完整性约束规则来表示。完整性约束规则可以用五元组(D,O,A,C,P)来形式化的表示。其中,D(data)表示约束作用的数据对象; O(operation)表示对数据库的操作类型,如插入、删除、修改等; A(assertion)表示数据对象必须满足的表示断言或语义约束,它是规则的主题;C(condition)表示断言A作用的数据对象值的谓词;P(procedure)表示违反完整性规则时触发执行的操作过程。对数据D进行O类型操作又可以分为以下三种情况: 断言A不成立,允许操作执行;断言A成立,C为真,允许操作进行; 断言A成立,C为假,则执行过程P。
常见的约束类型有:
(1)非空值(not null)约束: 在默认情况下,一个实体可以不存在,即允许取空值。而非空值约束则要求某个实体必须存在,不能为空值。
(2)键码: 键码也可称为键、关键字等,是用于唯一地标识一个客观存在的实体的属性。键码可以是单个属性,也可以是属性组合。对于某些实体还可能存在多个可以唯一地标识实体的属性,这些属性都可以作为键。在E-R图(实体-联系图)中,键码为实体集的范围内可以唯一地标识一个实体的属性或属性集。键码具有一个很重要的特性: 即一个实体集中的任何两个实体在构成键码的属性集上的取值不可能是相同的,否则键码就名不副实,就无法唯一地标识一个实体。如果一个实体中的两个实体在构成键码的属性集上取值相同,则认为它们是同一个实体。
对键码约束进行分析需要完成如下两个基本任务: 首先需要找出可以唯一标识实体的所有属性以及属性组。因为键码是实体的属性,反映了实体的语义,所以分析实体的键码时,需要分析实体的客观存在语义,还有分析者以及应用系统对实体强加的主观语义。然后在所有键码中,分析并确定实体的超键、候选键、主键。超键指的是构成可以在一个实体集中唯一地标识一个实体集的一个或多个属性的集合。通常情况下,一个实体集中可能有多个超键。候选键则指的是可以唯一标识实体的最小超键,即任意真子集都不为超键的超键称为候选键。一个实体集中可能存在多个候选键。主键是从候选键集中所选取的一个键。一个类(实体集)只能具有一个主键。在E-R模型中,通过对主键属性名加下划线来表示主键。
(3)单值约束:要求实体的某个属性只能取唯一的值,不能出现重复的值。实体的单值约束要求属性满足以下两个条件之一: ①如果该属性为非空,则其值必须存在; ②如果该属性为空,则允许其值任选。而构成键码的属性本身要求属性值是唯一的,而且构成键码的属性必须有值存在(not null)。
(4)参照完整性约束:指的是一个实体中的属性是另外一个实体的键,那么这个属性的值需要满足参照实体的键的要求,即: ①要求由某个对象引用的值在数据库中确实存在; ②属性值也可以为空值(null); ③参照完整性约束还要求对属性的操作满足一定的规范,常见的操作规范有如下的两种: 禁止删除被引用的对象及禁止级联删除/修改。
(5)域约束:要求某个属性的值必须处于特定的范围内或者取自特定的值集合。
(6)其他常规约束:包括要求在数据库中成立的任意断言。
此外,根据数据库中数据所处的状态,约束条件还可以分为静态约束和动态约束。所谓静态约束是指对数据库每一确定状态的数据所应满足的约束条件,它反映数据库中数据在静止时的约束,这是数据库合理性的约束,是数据库最重要的完整性约束。上述的约束条件就属于静态约束。动态约束是指数据库从一种状态转变为另一种状态时新、旧值之间所应满足的约束条件,它反映数据库中数据变动时的约束。
依据上述的叙述,约束分析的主要任务就是在数据库应用分析阶段确定数据库应用系统中的数据所蕴涵的各种约束条件,并以某个规则表示这些约束条件,在数据库模式中进行定义。