假设我有一个光表 fixture_models :
id | name
--- | -----------
1 | Wall sconce
2 | Ceiling fan
另一个表列出了夹具模型所具有的套接字,称为 fixture_model_sockets :
id | fixture_model_id | socket_type
--- | ---------------- | -----------
1 | 1 | GU-24
2 | 2 | E26
3 | 2 | E26
4 | 2 | E26
壁式壁灯有一个GU-24插座,吊扇有三个E26插座。该表在fixture_model_id上有一个外键约束。
还有灯具:
的表格id | fixture_model_id | location
--- | ---------------- | ----------
1 | 1 | East Wall
2 | 1 | West Wall
3 | 2 | Ceiling
有两个壁灯,东西墙各一个,还有一个吊扇。该表还对fixture_model_id有一个外键约束。
安装灯泡时,应将其记录在灯泡表中:
id | fixture_id | fixture_model_socket_id | type | power
--- | ---------- | ----------------------- | ---- | -----
1 | 1 | 1 | Inc. | 75
2 | 2 | 1 | Inc. | 75
3 | 3 | 2 | LED | 13
4 | 3 | 3 | LED | 13
5 | 3 | 4 | LED | 13
该表有两个外键约束,一个在fixture_id上,另一个在fixture_model_socket_id表上。此外,为了强制执行一次只能在任何一个插槽中安装一个灯泡的事实,它对fixture_id和fixture_model_socket_id具有唯一性约束。
我的问题:如何强制灯泡只能安装在与灯具型号相关的插座中?也就是说,灯泡的fixture_id = 1(属于墙壁壁灯)和fixture_model_socket_id = 2(属于吊扇)是无效的。这是我的架构的问题,还是应该在应用程序级别实施的东西?