Armstrong公理

1. Armstrong 公理的三条规则

Armstrong 公理系统包括以下三条规则:

(1)自反律(Reflexivity)
  • 定义:如果 Y⊆XY⊆X,则 X→YX→Y。

  • 比喻:就像“你拥有一个完整的蛋糕,那么你自然拥有蛋糕的每一块”。

  • 例子

    • 如果 X={A,B}X={A,B},Y={A}Y={A},那么 {A,B}→{A}{A,B}→{A}。

    • 因为 YY 是 XX 的子集,所以 XX 可以决定 YY。

(2)增广律(Augmentation)
  • 定义:如果 X→YX→Y,则 XZ→YZXZ→YZ。

  • 比喻:就像“如果你有一把钥匙可以打开一扇门,那么你再多拿一把钥匙,仍然可以打开那扇门”。

  • 例子

    • 如果 {A}→{B}{A}→{B},那么 {A,C}→{B,C}{A,C}→{B,C}。

    • 因为 AA 决定 BB,所以即使加上 CC,AA 和 CC 仍然可以决定 BB 和 CC。

(3)传递律(Transitivity)
  • 定义:如果 X→YX→Y 且 Y→ZY→Z,则 X→ZX→Z。

  • 比喻:就像“如果你知道如何从家到学校,又知道如何从学校到图书馆,那么你自然知道如何从家到图书馆”。

  • 例子

    • 如果 {A}→{B}{A}→{B} 且 {B}→{C}{B}→{C},那么 {A}→{C}{A}→{C}。

    • 因为 AA 决定 BB,而 BB 决定 CC,所以 AA 可以决定 CC。


2. Armstrong 公理的推论

除了三条基本公理,Armstrong 公理系统还有一些重要的推论,这些推论可以帮助我们更方便地推导函数依赖。

(1)合并规则(Union Rule)
  • 定义:如果 X→YX→Y 且 X→ZX→Z,则 X→YZX→YZ。

  • 比喻:就像“如果你有一把钥匙可以打开门 A,又有一把钥匙可以打开门 B,那么你自然可以同时打开门 A 和门 B”。

  • 例子

    • 如果 {A}→{B}{A}→{B} 且 {A}→{C}{A}→{C},那么 {A}→{B,C}{A}→{B,C}。

(2)分解规则(Decomposition Rule)
  • 定义:如果 X→YZX→YZ,则 X→YX→Y 且 X→ZX→Z。

  • 比喻:就像“如果你有一把钥匙可以同时打开门 A 和门 B,那么你自然可以分别打开门 A 和门 B”。

  • 例子

    • 如果 {A}→{B,C}{A}→{B,C},那么 {A}→{B}{A}→{B} 且 {A}→{C}{A}→{C}。

(3)伪传递规则(Pseudo-Transitivity Rule)
  • 定义:如果 X→YX→Y 且 YZ→WYZ→W,则 XZ→WXZ→W。

  • 比喻:就像“如果你知道如何从家到学校,又知道如何从学校和地铁站到图书馆,那么你自然知道如何从家和地铁站到图书馆”。

  • 例子

    • 如果 {A}→{B}{A}→{B} 且 {B,C}→{D}{B,C}→{D},那么 {A,C}→{D}{A,C}→{D}。


3. 形象化的例子

场景:学生选课系统

假设有一个关系模式 R(StudentID,CourseID,Grade,Name)R(StudentID,CourseID,Grade,Name),其中:

  • StudentIDStudentID 是学生学号。

  • CourseIDCourseID 是课程编号。

  • GradeGrade 是成绩。

  • NameName 是学生姓名。

已知函数依赖:

  1. {StudentID}→{Name}{StudentID}→{Name}(学号决定姓名)。

  2. {StudentID,CourseID}→{Grade}{StudentID,CourseID}→{Grade}(学号和课程编号决定成绩)。

推导过程
  1. 自反律

    • {StudentID,CourseID}→{StudentID}{StudentID,CourseID}→{StudentID}。

    • 因为 {StudentID}{StudentID} 是 {StudentID,CourseID}{StudentID,CourseID} 的子集。

  2. 增广律

    • 从 {StudentID}→{Name}{StudentID}→{Name},可以推导出 {StudentID,CourseID}→{Name,CourseID}{StudentID,CourseID}→{Name,CourseID}。

  3. 传递律

    • 如果 {StudentID}→{Name}{StudentID}→{Name} 且 {Name}→{Age}{Name}→{Age}(假设姓名决定年龄),那么 {StudentID}→{Age}{StudentID}→{Age}。

  4. 合并规则

    • 如果 {StudentID}→{Name}{StudentID}→{Name} 且 {StudentID}→{Age}{StudentID}→{Age},那么 {StudentID}→{Name,Age}{StudentID}→{Name,Age}。

  5. 分解规则

    • 如果 {StudentID}→{Name,Age}{StudentID}→{Name,Age},那么 {StudentID}→{Name}{StudentID}→{Name} 且 {StudentID}→{Age}{StudentID}→{Age}。

  6. 伪传递规则

    • 如果 {StudentID}→{Name}{StudentID}→{Name} 且 {Name,CourseID}→{Grade}{Name,CourseID}→{Grade},那么 {StudentID,CourseID}→{Grade}{StudentID,CourseID}→{Grade}。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值