0

在我的域中:

  • 用户有很多账单
  • Bills 有很多 BillItems(因此用户通过 Bills 有很多 BillItems)
  • 每个 BillItem 都是以下之一:
    • 称呼
    • 短信(短信)
    • 彩信(彩信)
    • 数据

以下是每个 BillItem 的属性(有些是常见的):

替代文字 http://dl.dropbox.com/u/2792776/screenshots/2010-04-13_2146-1.png

我的问题是我是否应该使用单表继承(即,一个带有“type”列的“bill_items”表)或多态性(每个 BillItem 类型的单独表)对这种安排进行建模,以及为什么。

4

1 回答 1

2

我会选择多态关联,因为已经有足够多的字段不适用于所有/大多数项目。STI 只会浪费大量空间,但忽略优化,它也是一个非常严格的设计,因为当需要更多字段时,扩展该设计的最自然方式是将它们添加到表中。

另一方面,多态关联仅指定所有实现者必须遵循的契约。在这种情况下,合同只规定一个项目必须是可计费的,并允许每个单独的项目类型独立发展。如果在这些不同的类之间共享逻辑,最好将其转换为模块并包含它。

于 2010-04-14T04:32:10.033 回答