作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我想设计一个名为 arguments
的表,其属性 name
链接到名为 的表中的另一个属性
。name
名称
我看到了两种用 SQL 表达它的方法:
通过在表上创建约束:
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));
通过即时限定属性:
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/
我是一名优秀的程序员,十分优秀!