我有以下五个表:
逻辑如下:
泛型PRODUCT可以有一个或多个FEATUREs。有不同的PROVIDERs 提供相同的产品,但具有不同的细节,同样的FEATUREs,也具有不同的细节。
问题是,使用这个 ERD,我可以创建一个PRODUCT带有FEATUREf1的p1和一个PRODUCT带有FEATUREf2的p2 。然后我创建PROVIDERpv1。现在我可以PROVIDER_PRODUCT用PROVIDERpv1 和PRODUCTp1创建一个pvp1 。但是当我创建一个PROVIDER_FEATUREpvp1 时,我应该只被允许添加FEATUREf1,因为这是FEATURE通过PROVIDER_PRODUCT表链接到 p1 的那个。但是我也可以添加一个FEATUREf2。
如何创建一个约束防止进入用户PROVIDER_FEATURE即是其中一部分FEATURE即是其中一部分PRODUCT,但事实并非PRODUCT对PROVIDER_PRODUCT是对PROVIDER_FEATURE?我需要在存储过程中解决这个问题,还是有更优雅的方法来强制执行?
+-------------------+ +--------------------+
| | | |
| PRODUCT +-----> | FEATURE |
| | | | …Run Code Online (Sandbox Code Playgroud)