【发布时间】:2015-09-21 22:53:49
【问题描述】:
我正在学习数据库表中的键和完整性。我有这个数据库:
我想知道这些表是否表现出实体完整性?如果是,为什么并且还表现出参照完整性?
还有每个表的超级键和辅助键是什么。我对这个概念感到困惑。
【问题讨论】:
标签: database referential-integrity
我正在学习数据库表中的键和完整性。我有这个数据库:
我想知道这些表是否表现出实体完整性?如果是,为什么并且还表现出参照完整性?
还有每个表的超级键和辅助键是什么。我对这个概念感到困惑。
【问题讨论】:
标签: database referential-integrity
它们显示实体完整性和引用完整性。
概念
超级键,如主键 (PK),用于将每条记录独立标识为唯一行。超级键是通过组合多个列而仍然保持唯一性形成的,它可以包括超过最小数量的列以创建唯一区别。候选键是一组使用区分唯一键所需的最少列的列。
本质上,超级键、候选键和主键用于区分具有相似或相同值的记录。
辅助键是未选择为主键的候选键。
外键用于“引用”单独的表以防止数据重复。
如果所有外键都有效,则数据库具有引用完整性。例如,如果 TRUCK 表将 FK 存储到不存在的 BASE_CODE 中,则数据库将不具有引用完整性。
如果我们要从 TRUCK 表中删除 TRUCK_NUM、TRUCK_MILES、TRUCK_BUY_DATE 和 TRUCK_SERIAL_NUM,数据库将失去实体完整性,因为并非所有行都可以区分为唯一的。只要表中的每条记录都有唯一的 ID,那么数据库就具有实体完整性。
具体答案
没有记录有重复的主键,因此数据库具有实体完整性。
所有外键都存在,引用可以被取消引用到实际记录,因此表具有引用完整性。
表的超级键可以是导致记录之间唯一区别的任何字段的组合(即,组合 truck_num、truck_miles、truck_buy_date 和 truck_serial_num 将构成一个超级键,同样,仅组合 truck_numb、truck_serial 将还创建一个有效的超级密钥)。 Super Keys vs. Candidate Keys
通俗地说,超键是表中的一组属性,其 values 可用于唯一标识一个元组。候选键是 识别元组所需的最小属性集;这也是 称为最小超键。 Wikipedia - Superkey
辅助键是表的未选择候选键。对于您给定的示例,已选择 TRUCK_NUM 作为主键。但是,存在其他候选键并且可能已被选择来代替 TRUCK_NUM。其中包括 TRUCK_SERIAL、TRUCK_BUY_DATE 和 TRUCK_MILES_NUM,因为这些字段都没有重复值。由于它们未被选为主键,因此它们被视为辅助 [候选] 键。
【讨论】: