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

时间:2015-07-04 07:07:04

标签: database referential-integrity

我正在学习数据库表中的密钥和完整性。我有这个数据库: enter image description here

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

每个表的超级密钥和辅助密钥是什么。我对此概念感到困惑。

1 个答案:

答案 0 :(得分:0)

它们显示实体完整性和参照完整性。

<强> CONCEPT

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

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

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

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

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

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

特定助手

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

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

存在所有外键,并且可以将引用解引用到实际记录,因此该表具有引用完整性。

表的超级键可以是任何字段的组合,这些字段会导致记录之间的唯一区别(即组合truck_num,truck_miles,truck_buy_date和truck_serial_num会产生一个超级键,同样,只合并truck_numb,truck_serial会还创建一个有效的超级密钥)。 Super Keys vs. Candidate Keys

  
    

非正式地,超级键是表中的一组属性     值可用于唯一标识元组。候选键是a     识别元组所需的最小属性集;这也是     称为最小超级钥匙。 Wikipedia - Superkey

  

辅助键是表的未选择候选键。对于您的示例,已选择TRUCK_NUM作为主键。但是,存在其他候选密钥,可以选择代替TRUCK_NUM。这些包括TRUCK_SERIAL,TRUCK_BUY_DATE和TRUCK_MILES_NUM,因为这些字段都不会重复一个值。由于它们未被选为主键,因此它们被视为次要[候选]键。

Secondary Keys Explained