【发布时间】:2012-04-08 23:18:28
【问题描述】:
所以我们都知道 Rails 的 STI(单表继承)很棘手,因为它会导致数据模型混乱和数据库不理想。
然而 PostgreSQL 似乎非常漂亮地处理继承!
有没有办法在利用 Postgres 继承而不是痛苦的宽表和“类型”列的同时获得 rails 干净整洁的 STI API?
【问题讨论】:
-
“所以我们都知道 Rails 的 STI(单表继承)很糟糕,因为它会导致数据模型混乱和数据库不理想。” --- 我不接受这个前提。
-
好吧,也许这有点笼统。但是当您的子模型没有很多不适用于其他子模型的属性时,这往往是一个好主意。否则你结束加上充满可空列的超宽表。从 Rails 的角度来看可能没问题,但在数据库上运行原始 SQL 时可能会有点难看,也许 PostgreSQL 的继承并没有更快,但至少它对我隐藏了所有这些! :P
-
因为 Postgres 的继承非常无缝,我不认为只有一个
type列就足够了?从我所看到的继承来看,SELECT *将返回所有关联的列(我猜所有未关联的列也是:/...但是您的数据库结构会更干净。
标签: ruby-on-rails postgresql inheritance activerecord