gpt4 book ai didi

sql - 建表时在哪里声明外键?

转载 作者:搜寻专家 更新时间:2023-10-30 20:20:34 25 4
gpt4 key购买 nike

我想设计一个名为 arguments 的表,其属性 name 链接到名为 的表中的另一个属性 name名称

我看到了两种用 SQL 表达它的方法:

  1. 通过在表上创建约束:

    CREATE TABLE names (   name text UNIQUE,
    short text UNIQUE,
    comment text);
    CREATE TABLE arguments ( name text UNIQUE,
    comment text,
    FOREIGN KEY (name) REFERENCES names (name));
  2. 通过即时限定属性:

    CREATE TABLE names (   name text UNIQUE,
    short text UNIQUE,
    comment text);
    CREATE TABLE arguments ( name text UNIQUE REFERENCES names (name),
    comment text);

我想知道:

  • 如果两者之一通常被认为比另一个更好,并且
  • 如果它会产生我应该知道的后果。

感谢您的帮助。

最佳答案

这些只是相同最终结果的不同语法。

两者都合适,但根据我的经验,前者是更常见的样式。这可能只是为了让人类的大脑更容易消化所有的信息。首先描述数据,其次描述它与世界其他地方的关系。

不过我想说的是,将 ID 作为唯一标识符和引用更为常见。这允许您更改名称字段中的值,而无需更改其身份和破坏参照完整性。有些数据库可以级联此类更改并更新所有出现的名称,但通常认为标识符与数据分开会更干净。

关于sql - 建表时在哪里声明外键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8432068/

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