database - 冗余关系?

标签 database database-design relational-database table-relationships

我正在尝试设计一个数据库模型,但我有一个问题。

我需要代表这个:

一个订单可以有零个或一个 QAP。
一个订单可以有一个或多个电子报告。
一份电子报告必须有一个 QAP。

为了表示这一点,我有这个模型:

enter image description here

如果 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/

相关文章:

objective-c - 核心数据 : Traverse managed objects relationships with an abstract entity in-between

Yii2如何检查两个模型是否已经链接

mysql - 如何在此表上正确设置 2 个外键约束以实现 2 个表之间的多对多关系?

sql - 有史以来最糟糕的 SQL?

php - 这是一个安全的 OO php 数据库连接还是浪费代码

database-design - 一般 MongoDb 数据库设计和索引性能 - 一个还是多个集合?

performance - 对多列的唯一约束是否有性能问题-Oracle

php - 为每个注册的用户制作一个表格(实用吗?)

database - 没有数据的关系有 super 键?

mysql - 按制造商获取所有相关类别,5 个表