我有三张table:employee
,event
,这些是N-N,所以第三个表是employee_event
。
诀窍在于,它们只能在相同的group
内N-N
employee
+---------+--------------+
| id | group |
+---------+--------------+
| 1 | A |
| 2 | B |
+---------+--------------+
event
+---------+--------------+
| id | group |
+---------+--------------+
| 43 | A |
| 44 | B |
+----
employee_event
+---------+--------------+
| employee_id | event_id |
+-------------+--------------+
| 1 | 43 |
| 2 | 44 |
+---------+--------------+
因此,组合employee_id=1
event_id=44
应该是不可能的,因为来自组A的员工不能参加来自组B的事件。如何使用此组合来保护我的数据库?
我的第一个想法是添加列employee_event.group
,这样我就可以将两个分别为employee_id + group
和event_id + group
的FK(复合)添加到表employee
和event
中。
谢谢!
1条答案
按热度按时间rsaldnfx1#
您可以创建一个函数并将其用作表
employee_event
的检查约束。然后在表
employee_event
上添加check
约束。仍然要记住,如果表
employee
和event
发生某些更改,employee_event
中曾经有效的行可能会变为无效,但仍然保持不变。