2.1 关系模型(关系完整性约束)

2.1 关系模型(关系完整性约束)

关系的三类完整性约束

♥   实体完整性和参照完整性

  • 关系模型必须满足的完整性约束条件称为关系的两个不变性,应该由关系系统自动支持
    ♥   用户定义的完整性
  • 应用领域需要遵循的约束条件,体现了具体领域中的语义约束

1. 实体完整性
2. 参照完整性
3. 用户自定义完整性

1. 实体完整性

♥   实体完整性(Entity Integrity)

  • 关系的主属性不能取空值
  • 空值就是“不知道”/“不存在”/“无意义”的值
    例:
    选修(学号,课程号,成绩)
    “学号、课程号”为主码
    “学号”和“课程号”两个属性都不能取空值

  1. 实体完整性
    2. 参照完整性
  2. 用户自定义完整性

2. 参照完整性

2.1 关系间的引用
♥   在关系模型中实体及实体间的联系都是用关系来描述的,自然存在着关系与关系间的引用。
[例 2.1] 学生实体、专业实体
学生(学号,姓名,性别,专业号,年龄)
专业(专业号,专业名)
♥   学生关系引用了专业关系的主码“专业号”
♥   学生关系中的“专业号”值必须是确实存在的专业的专业号
[例 2.2] 学生、课程、学生与课程之间的多对多联系
学生(学号,姓名,性别,专业号,年龄)
课程(课程号,课程名,学分)
选修(学号课程号,成绩)
♥   学生关系引用了专业关系的主码“专业号”
♥   学生关系中的“专业号”值必须是确实存在的专业的专业号
[例 2.3] 学生实体及其内部的一对多的联系
学生(学号,姓名,性别,专业号,年龄,班长)

学号姓名性别专业号年龄班长
801张三0119802
802李四0120
803王五0119802
804赵六0220805
8051钱七0219

“学号”是主码,“班长”是外码,他引用了本关系的“学号”,“班长”必须是确实存在的学生的学号
2.2 外码(Foreign Key)
♥   设F是基本关系R的一个或一组属性,但不是关系R的码。如果F与基本关系S的主码Ks相对应,则称F是R的外码
♥   基本关系R称为参照关系(Referencing Relation)
♥   基本关系S称为被参照关系(Referenced Relation)或目标关系(Target Relation)
[例 2.4] 中学生关系的“专业号”与专业关系的主码“专业号”相对应

  • “专业号”属性是学生关系的外码

  • 专业关系是被参照关系,学生关系为参照关系
    学生与专业的对应关系
    [例 2.5]
    选修关系的“学号”与学生关系的主码“学号”相对应,选修关系的“课程号”与课程关系的主码“课程号”相对应

  • “学号”和“课程号”是选修关系的外码

  • 学生关系和课程关系均为被参照关系

  • 选修关系为参照关系
    在这里插入图片描述
    [例 2.6] 中“班长”与本身的主码“学号”相对应

  • “班长”是外码

  • 学生关系即使参照关系也是被参照关系
    在这里插入图片描述
    ♥   关系R和关系S不一定是不同的关系
    ♥   目标关系S和主码Ks和参照关系的外码F必须定义在同一个(或一组)域上
    ♥   外码并不一定要与相应的主码同名
    当外码与相应的主码属于不同关系是,往往取相同的名字,以便于识别

3. 参照完整性

♥   参照完整性规则
若属性(或属性组)F是基本关系R的外码它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须为:

  • 或者取空值(F的每个属性值均为空值)
  • 或者等于S中某个元组的主码值
    [例 2.7] 中学生关系的“专业号”属性只取两类值:
    (1)空值,表示尚未给该学生分配专业
    (2)非空值,这是该值必须是专业关系中某个元组的“专业号”值,表示该学生不可能分配一个不存在的专业
    [例 2.8] 中 选修(学号课程号,成绩)
    “学号”和“课程号”可能的取值:
    (1)选修关系中的主属性,不能取空值
    (2)只能取相应被参照关系中已经存在的主码值
    [例 2.9] 学生实体及其内部的一对多的联系
    学生(学号,姓名,性别,专业号,年龄,班长
    “班长”属性值可以去两类值:
    (1)空值,表示该学生所在班级尚未选出班长
    (2)非空值,该值必须是本关系中某个元组的学号值

  1. 实体完整性
  2. 参照完整性
    3. 用户自定义完整性

3. 用户自定义完整性

♥   针对某一具体关系数据库的约束条件,反应某一具体应用所涉及的数据必须满足的语义要求
♥   关系模型应提供定义和检验这类完整性的机制,以便用统一的系统的方法处理他们,而不需由应用程序承担这一功能
例:
课程(课程号,课程名,学分)

  • “课程号”属性必须取唯一值
  • 非主属性“课程名”也不能取空值
  • “学分”属性只能取得{1,2,3,4}

上一篇:2.1 关系模型
目    录:《数据库系统概论》
下一篇:2.2 关系代数1——传统集合操作

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值