【问题标题】:When unique value can’t be used practically as a primary key in a database当唯一值实际上不能用作数据库中的主键时
【发布时间】:2019-03-16 01:53:14
【问题描述】:

我无法回答以下问题...

通过示例说明一个场景,其中属性在不同的行中具有唯一值,但它实际上不能用作数据库关系/表中的主键。

【问题讨论】:

  • 如果唯一的列是 1000 个字符长,那么将其用作主键可能是不明智的,因为 1000 个字符的外键充其量是笨拙的。
  • 请阅读How to Ask,点击谷歌搜索'stackexchange homework'和投票箭头鼠标悬停文本。展示您的能力以及您的研究的相关摘要。
  • @JonathanLeffler 这就是索引的用途。
  • 什么是“价值”? (它是否包括 NULL?)“不同行中的唯一值”是什么意思? (SQL 意义上的 2 个 NULL 都是唯一的,或者数学意义上的 NULL=NULL?)“PK”是什么意思? (关系区分CK还是SQL区分UNIQUE NOT NULL?)“实际上”是什么意思? (“在 SQL DBMS 中”?)这是什么上下文? (教科书名称、版本和部分会有所帮助。)(如果您不知道单词的含义,那么您在使用它们时就不会提出问题。)如果这是上下文的一部分,最好用 SQL 标记它,但是即使“值”是否包含 NULL 也必须明确说明。

标签: sql database-design primary-key unique-key


【解决方案1】:

如果建议的具有唯一值的列是nullable 并且还包含null 值,则它不能是实际的主键。因为主键不能是null

【讨论】:

    【解决方案2】:

    当数据按主键排序存储时,非顺序 GUID 不适合作为主键。新行的插入不会附加到表中,但必须插入到中间,这意味着必须移动数据以腾出空间。

    这就是为什么还可能存在顺序 GUID 的原因。

    【讨论】:

      【解决方案3】:

      “随机”是唯一的,但实际上我不会使用它。

      【讨论】:

        猜你喜欢
        • 2019-09-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-03-26
        • 2012-04-01
        • 1970-01-01
        相关资源
        最近更新 更多