我有一个一般性的设计问题。考虑这3个表:
Table Restaurants:
RID pk auto_increment
etc...
Table Vacations:
VID pk auto_increment
etc...
Table Movies:
MID pk auto_increment
etc...
现在,我们想创建一个列表,列出这3个不同表中选定记录的“ COVID结束时要做的事情”。该列表可能包含这些表中记录的任何混合。然后想到的是:
Table Todo:
Type [ one of R, V, M ]
ID [ the ID of the parent item ]
但是您将如何对此事物实施参照完整性?即,我们如何确保从“餐厅”中删除餐厅后,餐厅也将从“待办”中删除?
((我知道如何使用触发器来完成这些事情;很好奇是否存在可以通过纯RDBMS ref。int。完成的实体组合)
谢谢!
您可以为每个目标表在todo
表中添加可为空的外键列。因此您的表将如下所示:
Table Todo:
RID fk (nullable)
VID fk (nullable)
MID fk (nullable)
type
列不再需要,因为您可以检查哪一列用外键填充。显然,您必须添加CHECK
约束以确保必须正确设置一个外键。