【发布时间】:2012-03-24 09:37:08
【问题描述】:
我正在为一家印刷公司构建一个 Web 应用程序,并试图为我的数据库确定最佳设计。
我有一个orders 表。每个order 都有很多证明。但是,有两种不同的证明:电子证明和物理证明。此外,如果是电子证明,我需要存储图像源,如果是物理证明,我需要存储跟踪号。
每个证明都有许多与之关联的 cmets。
如果我只有一张proofs 表和一张comments 表就好了,但是根据证明类型跟踪图像来源和跟踪号的最佳方法是什么?
我考虑过为electronic_proofs 和physical_proofs 创建单独的表,但这需要单独创建electronic_proof_comments 表和physical_proof_comments 表。
另一种选择是拥有一个proofs 表,在这种情况下,我可以拥有一个comments 表。但是,在我看来,这需要三个支持表,proof_types、image_sources 和 tracking_numbers。
对解决此问题的最佳方法或更好的方法有什么想法吗?
【问题讨论】:
-
引用:“我考虑过为electronic_proofs 和physical_proofs 创建单独的表,但这需要单独的electronic_proof_cmets 表和physical_proof_cmets 表。”为什么不这样做?似乎是最简单的解决方案 imo。
-
@Msonic:你可以使用polymorphic association。
-
@Msonic 似乎有更好的方法可以解决这个问题。我觉得这样做会因为需要大量表而变得过于混乱
标签: sql ruby-on-rails database database-design database-schema