【问题标题】:Keys and integrity in truck database卡车数据库中的密钥和完整性
【发布时间】:2015-09-21 22:53:49
【问题描述】:

我正在学习数据库表中的键和完整性。我有这个数据库:

我想知道这些表是否表现出实体完整性?如果是,为什么并且还表现出参照完整性?

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

【问题讨论】:

    标签: database referential-integrity


    【解决方案1】:

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

    概念

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

    本质上,超级键、候选键和主键用于区分具有相似或相同值的记录。

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

    外键用于“引用”单独的表以防止数据重复。

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

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

    具体答案

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

    • 没有重复的卡车号码
    • 没有 BASE_CODE 重复
    • 没有重复的TYPE_CODE

    所有外键都存在,引用可以被取消引用到实际记录,因此表具有引用完整性。

    表的超级键可以是导致记录之间唯一区别的任何字段的组合(即,组合 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,因为这些字段都没有重复值。由于它们未被选为主键,因此它们被视为辅助 [候选] 键。

    Secondary Keys Explained

    【讨论】:

    • 我需要解释实体和参考完整性部分
    • 最后几行。您必须了解概念才能理解答案。
    • 查看 TRUCK_NUM 下的值,是否有重复项?查看 BASE_CODE 下,看到任何重复项?在 TYPE_CODE 下查看是否有重复项?如果是这样,则 Db 不具有实体完整性。
    • 在 TRUCK_NUM 表下,检查 BASE_CODE 的所有值是否存在。对 TYPE_CODE 执行相同的操作。如果您发现其中一个表中不存在的代码,则数据库不具有引用完整性。空白是可以的,它只是意味着特定记录可能不需要引用另一个表(这是情景),如果需要值,那么如果存在空白,则 Db 不具有引用完整性。
    • 你确定PK是超级键吗?我对此表示怀疑。还有什么是候选键?他们也是FK吗?
    猜你喜欢
    • 2015-01-31
    • 1970-01-01
    • 2020-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-12
    • 1970-01-01
    相关资源
    最近更新 更多