解释 DBMS 中的连接依赖关系
连接依赖关系是一种类似于函数依赖关系或多值依赖关系的约束。当且仅当相关关系是一定数量投影的连接时,连接依赖关系才成立。这种类型的约束称为连接依赖关系。
让我们考虑一类特殊的连接依赖关系,它有助于捕获分层数据结构中存在的数据依赖关系。
示例 1

上述层级组织结构仅指示病房和当前入住病房的患者信息与医院有关,而不与医院现有的设施有关。由于医院有多个病房,函数依赖关系不足以描述医院与病房或设施之间的数据依赖关系。
在这种情况下,多值依赖关系,
医院->->->病房或
医院->->->->设施成立。
使用一阶层次分解可以让我们以更自然的方式表示层次数据结构中存在的数据依赖关系。
因此,我们可以将医院数据库存储为以下无损连接:−
Hospital_facility(hospital, facility),
Hospital_ward(hospital, ward, patient, complaints, treatment, doctor)
示例 2
如果关系 R 等于 R1,R2,.....Rn 的连接,其中 Ri 是 R 属性集的子集,则关系 R 满足连接依赖关系。
关系 R
| Dept | Subject | Name |
|---|---|---|
| CSE | C | Ammu |
| CSE | C | Amar |
| CSE | Java | Amar |
| IT | C | bhanu |
此处,
部门 ->-> 学科
部门->-> 姓名
上述关系符合 4NF 规范。如果主键包含三个或更多字段,则 4NF 关系中可能会出现异常。主键为 (dept, subject, name)。有时将一个关系分解为两个较小的关系并不能消除冗余。在这种情况下,可以使用 5NF 将关系分解为三个或更多关系。
上述关系表明,部门提供许多选修科目,供各种各样的学生选修。学生有选择科目的意愿。因此,需要所有三个字段来表示信息。
上述关系未显示非平凡的 MVD,因为属性 subject 和 name 是依赖的;它们是相互关联的(存在功能函数 subject->name)。该关系不能分解为两个关系 (dept, subject) 和 (dept,sname)。
因此,该关系可以分解为以下三个关系 −
R1(dept, subject)
R2(dept, name) 和
R3(subject, name),并且可以证明分解是无损的。
R1
| Dept | Subject |
|---|---|
| CSE | C |
| CSE | Java |
| IT | C |
R2
| Dept | Name |
|---|---|
| CSE | Ammu |
| CSE | Amar |
| IT | bhanu |
R3
| Subject | Name |
|---|---|
| C | Ammu |
| C | Amar |
| Java | Amar |
| C | bhanu |

