RDBMS参考。诚信:一个父母太多的孩子?

问题描述 投票:0回答:1

我有一个一般性的设计问题。考虑这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。完成的实体组合)

谢谢!

rdbms referential-integrity
1个回答
0
投票

您可以为每个目标表在todo表中添加可为空的外键列。因此您的表将如下所示:

Table Todo:
   RID fk (nullable)
   VID fk (nullable)
   MID fk (nullable)

type列不再需要,因为您可以检查哪一列用外键填充。显然,您必须添加CHECK约束以确保必须正确设置一个外键。

© www.soinside.com 2019 - 2024. All rights reserved.