gpt4 book ai didi

sql - RDBM 和 SQL 数据库中主键、自增和 UUID 的最佳实践

转载 作者:行者123 更新时间:2023-12-04 17:43:10 28 4
gpt4 key购买 nike

我们正在为用户实体设计一个表。唯一重要的要求是用户实体(例如他们的个人资料)应该有一个永久的 URL。网上有很多关于 int/long vs UUID 的内容。但我仍然不清楚。

  • 考虑到配置文件包含私有(private)信息这一事实,在 URL 中嵌入可预测的 ID 并不是一个好主意。我对吗?
  • 为了满足第一个,我可以将主键作为 UUID 并将其嵌入到 URL 中。但是有两个问题。我是否应该担心以 UUID 作为主键的性能损失?索引,插入,选择,加入?

  • 话虽如此,以下哪一项更好(相对于上述)?
    CREATE TABLE users(
    pk UUID NOT NULL,
    .....
    PRIMARY KEY(pk)
    );

    或者
    CREATE TABLE users(
    pk INT NOT NULL AUTO_INCREMENT,
    id UUID NOT NULL,
    .....
    PRIMARY KEY(pk),
    UNIQUE(id)
    );

    最佳答案

    这实际上是一个选择问题,从我的角度来看,这个问题可以提出基于意见的答案。我总是做的,即使它是多余的,我在自动增量列上创建主键(我称之为技术键)以使其在数据库中保持一致,允许“主键”在设计阶段出现问题时更改,并且还允许在任何其他表中的外键约束指向键的情况下消耗更少的空间,并且我使候选键唯一且不为空。

    除非您决定这样做,否则您通常不会向最终用户显示技术 key 。这对于您仅在数据库级别出于任何您可能需要的目的(例如修改日期、创建日期、版本、更改记录的用户等)而保留的其他技术列可能是相同的。

    在这种情况下,我会选择您的第二个选项,但稍作修改:

    CREATE TABLE users(
    pk INT NOT NULL AUTO_INCREMENT,
    id UUID NOT NULL,
    .....
    PRIMARY KEY(pk),
    UNIQUE(id)
    );

    关于sql - RDBM 和 SQL 数据库中主键、自增和 UUID 的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52414414/

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