CK 可以有一个 FK 引用另一个表中的 CK 吗?
部门 (部门,部门名称)
员工 (RegNo,FirstName,LastName,出生日期,Dept_fk,薪水,城市)
Dept_name 是 Department 表的 CK。
当 Dept_name 未设置为 Department 表中的主键时,Dept_fk 是否可以是 Employee 中 CK(Dept_fk 、 FirstName 、 LastName 、 Birthdate)的一部分?
“给定表的 CK(候选键)”的两个定义是:
表中的列集,在功能上确定每个列,并且不包含较小的此类集。
表中的一个列集,其子行值是唯一的,并且不包含较小的此类集。
如果没有我们正在使用的定义所需的信息,我们就无法确定表的 CK。例如所有 FD(功能依赖关系),或者 FD 的规范覆盖或子行值唯一的所有列集等。该信息始终可以在不涉及另一个表的情况下表示。
我们可以选择一个表的 CK 来调用它的“the”PK(主键)。PK 在关系理论中是不相关的。(如果您使用的是 ER 方法,并且它具有有关 PK 与 CK 的规则,那么您应该引用 & amp;标记它。)
部门不能是 Employee 表中候选键(例如:Dept 、 FirstName 、 LastName 、 Birthdate)的一部分,因为在 Department 表中没有将 Department 设置为主键
部门不是在Employee 中,所以它不能是它的 CK 的一部分。但是如果你添加它,它是否是它的 CK 独立于其他表。
如果你问的是你是否可以根据部门 CK 与 PK 之间的区别来做一些事情:PK 总是无关紧要的。
If the“Dept”s are typos for“Dept #”:The merse fact that Dept # is or is not a PK of the Department table has no bearing on the CK of another table.Whether it is a PK vs CK is always relevant.
但是,我仍然可以调用部门候选人键,只是知道部门是部门表中的候选人键?
它是 Department 的 CK。所以在英语中我们可以说它是一个 CK。但是成为一个 CK 就是成为一个特定表的 CK。
也许你的意思是“我仍然可以调用 Dept a CK”的 Employee只是知道....“只有当你表明它是一个。
(也许你应该在这个问题中调用一些东西 FKs?)
PS FD A 列可以出现在多个表中,而它们之间没有 FK。(“参考”仅在您谈论 FK 时有用。)不同的列之间可以有 FK。当且仅当一组列中的所有子行值都出现在另一个(“参考”)列中时,才有 FK。SQL FK 只需要转到超键(CK 的超集),而不是 CK。FK 只能是任何集合中的 PK:
本站系公益性非盈利分享网址,本文来自用户投稿,不代表边看边学立场,如若转载,请注明出处
评论列表(30条)