我正在为一家打印公司构建一个 Web 应用程序,并试图为我的数据库确定最佳设计。
我有一个订单
表。每个 order
都有很多证据。但是,有两种不同的证明:电子证明和实物证明。此外,如果是电子证明,我需要存储图像来源,如果是实物证明,我需要存储跟踪号。
每个证明都有许多与之相关的评论。
如果我可以只有一个proofs
表和一个comments
表就好了,但是跟踪图像源和跟踪的最佳方法是什么?基于证明类型的数字?
我考虑过为 electronic_proofs
和 physical_proofs
创建单独的表,但这需要创建一个单独的 electronic_proof_comments
表和 physical_proof_comments
表。
另一种选择是使用单个proofs
表,在这种情况下我可以使用单个comments
表。但是,正如我所见,这需要三个支持表,proof_types
、image_sources
和 tracking_numbers
。
关于解决此问题的最佳方法或更好方法的任何想法?
最佳答案
正如在另一个答案中提到的,您只需要一个表格,并且只需将其中一个字段留空,具体取决于类型。但是,我的回答的不同之处在于将订单详细信息与证明相关联,而不是将证明与订单详细信息(或他们的示例中的订单项目)相关联。通过这种方式,您可以为每个订单详细信息提供多个证明。
如果我是你,我会这样设置:
订单
- 订单号(PK)
- 客户 ID (FK)
- 等等...
订单详情
- OrderDetailsID (PK)
- 订单号(FK)
- 产品编号? (FK)
- 等等...
证据
- ProofID(PK)
- OrderDetailsID (FK)
- 证明类型
- ImagePath(只是路径,不是图片)
- 追踪号码
- 等等...
评论
- 评论 ID (PK)
- ProofID (FK)
- 评论
- 等等...
将 ProofType 分解到它自己的表中可能也是明智的,但没有它也可以工作。如果要这样做,您需要创建一个 ProofType 表并将“Proofs”表中的“ProofType”字段更改为引用新“ProofType”表中“ProofTypeID”字段的外键。
希望对您有所帮助!祝你好运!
关于sql - 这种订单情况应该如何设置数据库表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9591651/