卡车数据库中的密钥和完整性

Keys and integrity in truck database

我正在学习数据库 table 中的密钥和完整性。我有这个数据库:

我想知道 table 是否表现出实体完整性?如果是,为什么它们也表现出参照完整性?

还有每个 table 的超级键和辅助键是什么。对这个概念感到困惑。

它们同时显示实体完整性和引用完整性。

概念

超级键,如主键 (PK),用于将每条记录独立标识为唯一行。超级键是通过组合多个列而形成的,同时仍然保持唯一性,它可以包括超过最小数量的列以创建唯一区别。候选键是使用区分唯一键所需的最少列的一组列。

本质上,Super Keys、Candidate Keys、Primary Key就是用来区分值相似或相同的记录。

辅助键是未被选为主键的候选键。

外键用于'reference'分隔table以防止数据重复。

如果所有外键都有效,则数据库具有参照完整性。例如,如果 TRUCK table 将 FK 存储到不存在的 BASE_CODE,则数据库将不具有参照完整性。

如果我们从 TRUCK table 中删除 TRUCK_NUM、TRUCK_MILES、TRUCK_BUY_DATE 和 TRUCK_SERIAL_NUM,数据库将失去实体完整性,因为并非所有行都可以区分为唯一的。只要 table 中的每条记录都有唯一 ID,那么数据库就具有实体完整性。

具体答案

没有记录有重复的主键,因此数据库具有实体完整性。

  • 没有重复的卡车编号
  • 没有 BASE_CODE 重复
  • 否 TYPE_CODE 重复

所有外键都存在,引用可以解除对实际记录的引用,因此 table 具有引用完整性。

table 的超级键可以是导致记录之间唯一区分的任何字段的组合(即组合 truck_num、truck_miles、truck_buy_date 和 truck_serial_num 将成为一个超级密钥,同样,仅组合 truck_numb,truck_serial 也将创建一个有效的超级密钥)。 Super Keys vs. Candidate Keys

Informally, a superkey is a set of attributes within a table whose values can be used to uniquely identify a tuple. A candidate key is a minimal set of attributes necessary to identify a tuple; this is also called a minimal superkey. Wikipedia - Superkey

辅助键是 table 的未选择的候选键。对于您给出的示例,已选择 TRUCK_NUM 作为主键。但是,存在其他候选键,并且可以选择它们来代替 TRUCK_NUM。其中包括 TRUCK_SERIAL、TRUCK_BUY_DATE 和 TRUCK_MILES_NUM,因为这些字段中的 none 会重复一个值。由于它们未被选为主键,因此它们被视为辅助 [候选] 键。

Secondary Keys Explained