MySQL表依赖项

xtupzzrd  于 2023-05-28  发布在  Mysql
关注(0)|答案(1)|浏览(154)

我正在设计一个MySQL数据库,我有三个表:A、B和C。表A描绘了房屋的特定房间的设计,并且表B参考了房间设计的不同可能性(可能的场景)。表C包含可适用于每种可能性的具体设计要素:
表A
| ID|姓名|说明|
| - -----|- -----|- -----|
| 厨房|厨房|厨房设计|
| 浴室|卫生间|浴室设计|
表B
| ID|说明|A参考|
| - -----|- -----|- -----|
| 厨房_1|木地板厨房|厨房|
| 厨房_2|大理石地板厨房|厨房|
| 浴室_1|大理石地板浴室|浴室|
表C
| ID|说明|A参考|参考B|
| - -----|- -----|- -----|- -----|
| 楼层_1|大理石地板|厨房|厨房_2|
| 楼层_2|木地板|厨房,浴室|厨房_1,浴室_1|
我需要有关如何在MySQL上构建此架构的建议,并具有以下约束:
1.如果表C.Reference_to_A =表B.reference_to_A,则表C的每一行只能与表B相关联(通过Reference_to_B列)
1.我想知道是否有可能在一列中有多个对另一个表的引用,我猜不可能。如果没有,我会很感激另一个在数据库大小方面有效的选择。

fhity93d

fhity93d1#

你有一个引用颠倒了:表B还应该有一个外键来引用它使用的楼层类型。
表B
| ID|说明|A参考|参考C|
| - -----|- -----|- -----|- -----|
| 厨房_1|木地板厨房|厨房|楼层_1|
| 厨房_2|大理石地板厨房|厨房|楼层_2|
| 浴室_1|大理石地板浴室|浴室|楼层_2|
那么在表C中就不需要任何外键引用了。
表C
| ID|说明|
| - -----|- -----|
| 楼层_1|大理石地板|
| 楼层_2|木地板|
在这种情况下,您不必尝试将值放入给定行的引用列中(实际上,在关系数据库中这不是一个好主意)。多重性来自表B中的多个行。

相关问题