sql - 如果主键不是 NULL,那么引用它的外键是否也应该指定为 NOT NULL?

标签 sql sql-server tsql database-design

假设我有类似的东西

CREATE TABLE Foo (
    id INT NOT NULL PRIMARY KEY IDENTITY(1,1),
    .
    .
    .
);

CREATE TABLE Bar (
    .
    .
    foo_id INT REFERENCES Foo(id),
    .
    .
);

我应该/我应该有

foo_id INT NOT NULL REFERENCES Foo(id)

还是隐含在它所引用的值保证为 NOT NULL 的事实中?

最佳答案

Bar 上的外键列可以是 NULL,如果 Bar 记录可能存在而没有该值。

the fact that the value it's referencing is guaranteed to be NOT NULL

如果 Bar 中的值是 NULL 那么它根本没有引用 Foo 中的记录。它可以引用一条记录,但如果它允许NULL则不必这样做。

关于sql - 如果主键不是 NULL,那么引用它的外键是否也应该指定为 NOT NULL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35118300/

相关文章:

mysql - MySQL中SELECT一个文本列的场景

sql - 需要有关 Merge 语句的帮助

php - 使用 PHP 搜索重复记录 : on Database using SQL, 或 file.txt?

TSQL 更改表为删除和更新的级联添加约束

sql - 如何使用 Postgresql 查找组中最旧的记录?

PHP-MySql : fetch item from three tables and order by timestamp

sql - T-SQL 计数问题

sql-server - 如何创建引用复合主键中一列的外键

sql - 如何返回表的列名?

sql - 允许较新的 SQL 语法优雅地回退到旧版本?