【问题标题】:Two related tables and primary key independence issue两个相关表和主键独立问题
【发布时间】:2017-07-21 00:17:19
【问题描述】:

我想知道,如果我们有两个表共享一个共同的列,并且在第一个表中,该列是主键,但在第二个表中,另一个被选为主键......那么 SQL 是否会处理共同的列?第二个表中的列只是另一个普通列?因此,如果根据公共列信息搜索第二个表,则不存在优化,即两个相关表之间的主键是完全独立的?

【问题讨论】:

  • 从逻辑上讲,两个表不可能“共享一列”。即使存在外键约束,它们也只是具有共同的。物理上,DBMS 可以将实际值存储一次,并将外键值存储为指针。您想到了哪种 SQL 产品?

标签: sql primary-key


【解决方案1】:

是的,它们是独立的:主键对于表来说是完全唯一的。

它们不跨表共享,即使列的类型相同,但可以将一个表的主键共享为另一个表的外键。

没有执行优化,因为您提到的第二列不是该表中的主键。并且默认情况下,数据库会根据主键创建一个索引,从而改进在表数据中的查找。

【讨论】:

  • 我认为这个问题与主键发生的搜索优化有关,因为它们已被索引。
【解决方案2】:

如果在各自表中的两列之间建立了适当的 PK - FK 关系,则应优化任何连接。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-26
    • 1970-01-01
    • 2020-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多