我正在为一家印刷公司构建一个web应用程序,并试图确定我的数据库的最佳设计。
我有一张桌子。每一个都有许多证据。然而,有两种不同的证明:电子证明和物理证明。此外,如果是电子证明,我需要存储图像源,如果是物理证明,我需要存储跟踪号。
每一个证据都有许多与之相关的评论。
如果我能有一个orders
表和一个order
表就好了,但是根据证明类型跟踪图像源和跟踪号的最佳方法是什么?
我考虑过为proofs
和comments
创建单独的表,但这需要创建单独的electronic_proofs
表和physical_proofs
表。
另一个选择是有一个electronic_proof_comments
表,在这种情况下,我可以有一个physical_proof_comments
表。然而,在我看来,这需要三个支持表,proofs
、comments
和proof_types
。
你对解决这个问题的最好方法,或者更好的方法有什么想法吗?
最佳答案
正如在另一个答案中提到的,您只需要一个表,只需根据类型将其中一个字段留空。然而,我的回答的不同之处在于将订单详细信息与证明相关联,而不是将证明与订单详细信息(或示例中的订单项)相关联。这样做可以让你在每个订单细节有多个证据。
如果我是你,我会这样做的:
命令
订单号(pk)
客户ID(FK)
等。。。
订单详细信息
orderdetailsid(主键)
订单号(FK)
产品ID?(FK)
等。。。
证据
校对(pk)
orderdetailsid(FK)
校样
ImagePath(仅路径,不图像)
追踪号码
等。。。
评论
注释ID(pk)
校对(FK)
评论
等。。。
将prooftype分解到它自己的表中可能也是明智的,但是没有prooftype也可以工作。如果要这样做,您需要创建一个prooftype表,并将“proofs”表中的“prooftype”字段更改为引用新“prooftype”表中的“prooftypeid”字段的外键。
希望这有帮助!祝你好运!
关于sql - 我应该如何针对这种订购情况设置数据库表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9591651/