软考-软件设计师:数据库技术基础-关系数据库的规范化:候选键、如何确定候选键 作者:马育民 • 2025-04-30 23:42 • 阅读:10000 # 候选码/候选键建 (多组) 唯一标识一个记录的字段(可以有多个) 如:学号、身份证号 # 找出候选键 **提示:** 不能被其他属性推导的属性,称为 **入度为0的属性** 1. 将关系模式的函数依赖关系用“有向图”的方式表示。(**建议不做**) 2. 找出 `入度为0` 的所有属性,能 **推导出其他所有属性**,则该属性集为候选键。 3. 若 `入度为0` 的所有属性,不能推导出其他所有属性,而是 **需要加入一些中间结点**(既有入度,也有出度的结点),才能推导其他所有属性,此时的属性集合为候选键。 ### 例子 [](https://www.malaoshi.top/upload/0/0/1GW12eA2rSU8.png) ### 例子1答案 1. 找出 **入度为0** 的属性:`A,B,C,D` 2. 这4个属性可以推导出所有属性 **结论:**所以候选键是 `A,B,C,D` ### 例子2答案 B **技巧:**有选项,直接用各个选项往里面套: - A → BC:A可以推导出所有属性 - B → C,B → A:B 可以推导出所有属性 说明有 **两组候选码** ### 例子3 关系模式 `CSZ(CITY,ST,ZIP)`,其属性组上的函数依赖集为:`F={(CITY,ST)→ ZIP,ZIP → CITY}` 其中CITY表示城市,ST表示街道,ZIP表示邮政编码。 1. 找出 **入度为0** 的属性:`ST` 2. ST属性不能推导出所有属性 3. 加入 **一些中间节点**,得到: - CITY,ST:可以推导出 ZIP,即:推导出全部属性 - ZIP,ST:ZIP可以推导出 CITY,即:推导出全部属性 所以有两组候选码:`CITY,ST`、`ZIP,ST` 该关系模式中的 **所有属性都是候选码**,此时是 **全码/ALL-Key** # 题 若给定的关系模式为R,U={A,B,C},F={AB→C,C→B}则关系R()。 A、有2个候选关键字AC和BC,并且有3个主属性 B、有2个候选关键字AC和AB,并且有3个主属性 C、只有一个候选关键字AC,并且有1个非主属性和2个主属性 D、只有一个候选关键字AB,并且有1个非主属性和2个主属性 ### 答案 1. 找出 `入度为0` 的属性:A、B、C 2. A、B、C 这3个属性,无法 **单独** 推导出所有属性 3. 加入中间节点: - AB能推导出C,即:推导出所有属性 - AC能推导出B,即:推导出所有属性 结论:有两组候选关键字 AB、AC,3个主属性 B # 题 给定关系模式R(U,F),其中:U为关系模式R中的属性集,F是U上的一组函数依赖。假设U={A1,A2,A3,A4},F={A1 → A2,A1A2 → A3,A1 → A4,A2 → A4},那么关系R的主键应为()。函数依赖集F中的()是冗余的。 A、A1 B、A1A2 C、A1A3 D、A1A2A3 A、A1→A2 B、A1A2→A3 C、A1→A4 D、A2→A4 ### 分析第一问 将各个选项代入题干,看哪个选项符合 - A:A1是 `入度为0` 的属性,能推导出 A2,A1A2能推导出A3,A1能推导出A4,即:推导出所有属性,正确 - B:不用A2 - C:A3不是 `入度为0` 的属性,错 - D:A1A2A3:不用A2A3 ### 分析第二问 将各个选项代入题干,看哪个选项符合 - A、A1→A2:必不可少 - B、A1A2→A3:必不可少 - C、A1→A4:由于 `A1 → A2`,`A2 → A4`,根据 [传递律](https://www.malaoshi.top/show_1GW12dp7HTFH.html "传递律"),推导出 `A1 → A4`,所以 C 正确 - D、A2→A4:**注意:**有 D ,那么 C 就冗余 ### 答案 B D # 题 给定关系模式 `R`,其中U为属性集,F是U上的一组函数依赖,那么Armstrong公理系统的伪传递律是指() A、若X→Y,X→Z,则X→YZ为F所蕴涵 B、若X→Y,WY→Z,则XW→Z为F所蕴涵 C、若X→Y,Y→Z为F所蕴涵,则X→Z为F所蕴涵 D、若X→Y为F所蕴涵,且Z≤U,则XZ→YZ为F所蕴涵 ### 答案 - A:合并 - B:正确 - C:传递 - D:曾广 原文出处:http://malaoshi.top/show_1GW12eMPmlhh.html