我正在学习数据库表中的密钥和完整性。我有这个数据库:
我想知道表格是否表现出实体完整性?如果是,为什么并且也表现出参照完整性?
每个表的超级密钥和辅助密钥是什么。我对此概念感到困惑。
答案 0 :(得分:0)
它们显示实体完整性和参照完整性。
<强> CONCEPT 强>
超级密钥与主密钥(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
非正式地,超级键是表中的一组属性 值可用于唯一标识元组。候选键是a 识别元组所需的最小属性集;这也是 称为最小超级钥匙。 Wikipedia - Superkey
辅助键是表的未选择候选键。对于您的示例,已选择TRUCK_NUM作为主键。但是,存在其他候选密钥,可以选择代替TRUCK_NUM。这些包括TRUCK_SERIAL,TRUCK_BUY_DATE和TRUCK_MILES_NUM,因为这些字段都不会重复一个值。由于它们未被选为主键,因此它们被视为次要[候选]键。