【发布时间】:2012-09-21 14:26:08
【问题描述】:
我使用 single table inheritance 的概念当然是出于 OOP 的考虑。
例如,PostLike 和 TopicLike 继承自 Like 类。
我发现这种方法有两个问题:
- 我得到的不是两张表(PostLike 和 TopicLike),而是“一张大表”的赞。
- 此表有一个名为 dtype 的额外列,它支持记录识别(即类似的类型)。从长远来看,这可能会大量浪费磁盘空间。不是吗?
我不是数据库专家,因此我想了解您对这个数据库设计以及这两个问题是否至关重要的见解。
【问题讨论】:
-
Martin Fowler 推荐 STI 而不是 CTI。当 TB 驱动器的价格为 60 美元时,您不必担心单个 smallint 或 tinyint 字段的空间需求。
-
您能否发布指向 Martin Fowler 推荐的链接,@NeilMcGuigan?
-
@KirdApe 找不到适合您的链接,但我记得读过 Fowler 先生的一篇文章,指出他推荐 STI 作为最佳首选,尤其是对于敏捷开发。他并不是说 CTI 不好,只是说它更复杂而且速度有点慢。
标签: java database-design jpa playframework-2.0 ebean