gpt4 book ai didi

mysql - DBLint 规则 31 意味着

转载 作者:行者123 更新时间:2023-11-30 23:12:24 28 4
gpt4 key购买 nike

DBLint 用于检查数据库状态。有46条规则。在 www.dblint.org 上对每条规则都有一些简单的解释,但对规则 31 的描述如下:

定义的主键不是最小键:主键是最小的 super 键。如果定义的主键不是最小超键,则意味着可以识别具有较少属性的行。当其他表需要引用它时,使用 super 键而不是主键就更没有吸引力了。每个引用表都需要保存比实际需要更多的信息,从而导致使用更多空间和效率更低的索引。

这对我来说不是很清楚。如果有人能解释一下,谢谢!

最佳答案

如果主键中列的子集也可用于唯一标识行,则主键是超键。

示例:

假设您有一个包含公司所有员工的表。每个人都有一个 ID,但您还要求每个人都有一个唯一的别名,该别名由登录名、电子邮件等三个字母组成。该表可以是:

create table employee
(
empID int not null auto_increment,
alias nvarchar(3) not null unique,
forname nvarchar(256) not null,
lastname nvarchar(256) not null,
constraint employee_pk primary key (empID, alias)
)

在此表中,主键是 empID 和人员的三个字母别名的组合,但 empID 和别名都必须是唯一的,因此主键是一个 super 键。仅使用列的子集就足够了,例如,将 empID 作为主键来唯一标识单个行,因此这将是一个最小的 super 键。

关于mysql - DBLint 规则 31 意味着,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19311418/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com