我正在尝试设计一个数据库模型,但我有一个问题。
我需要代表这个:
一个订单可以有零个或一个 QAP。
一个订单可以有一个或多个电子报告。
一份电子报告必须有一个 QAP。
为了表示这一点,我有这个模型:
如果 orden 没有 QAP,用户必须选择一个以将其添加到电子报告中。如果订单有 QAP,用户无需选择一个将其添加到电子报告中,因为所有电子报告都会有订单的 QAP。
用户将收到一个 Orden,然后他将填写电子报告。我对订单不感兴趣,我对用户填写的电子报告感兴趣,QAP 有需要填写的信息。
我的问题是如果订单没有 QAP,电子报告可能有不同的 QAP。
例如Order1没有QAP,但是有两个E-Report:
- E-Report1 有 QAP1,并且
- E-Report2 有 QAP2。
这个数据库设计是否正确?
我不确定Order表和E-Report表中的repeat qapId列是否正确。
最佳答案
由于 EReports 在强制订单获得 QAP 之前可以有不同的 QAP,因此无法使用声明性参照完整性(单独)来表示您的约束。您现在拥有的模型是您需要使用的模型,结合一些程序逻辑来强加您的规则,即如果他们的订单有 EReports 必须共享相同的 QAP。
关于database - 冗余关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10671291/