我正在设计表关系。我有一个问题。
父母:一张桌子
孩子:B表
Table: A
PK: id
---
Table: B
PK: id
Column: A_id(NOT NULL), desk, chair...
Option: CONSTRAINT `fk_B_A_id` FOREIGN KEY (`A_id`) REFERENCES `A` (`id`)
ON DELETE NO ACTION ON UPDATE CASCADE
我的情况是,B
表有时有A_id
,有时没有A_id
。
所以我试图在表不需要该0
值A_id
时插入。但是表没有 id 。结果发生错误。B
A_id
A
0
我在想两种解决方案:
A_id
可以有null
。- A表创建时,虚拟数据(A.id=0)插入到A表中。
如果您有其他想法,请告诉我。
谢谢你。
如果孩子
B
反对的关系A
不是强制性的,那么只允许NULL
在外键列上。这样做很常见。不要使用默认记录(如
ID = 0
)来匹配实际上不应该存在的记录,这会给您带来更多解决方案的麻烦(该记录将包含哪些数据?NOT NULL
列会发生什么情况?)