单表继承

rob*_*ntw 4 database-design ruby-on-rails single-table-inheritance

我对DB设计问题的回答提出了一种叫做单表继承的东西.我已经对此进行了一些搜索,但我似乎无法找到关于它的更清晰的信息.

基本上我从中可以理解的是,你有一个包含所有字段的大表,还有一个类型字段 - 然后你的ORM层使用type字段为你提供不同的对象视图.那是对的吗?

更重要的是,单表继承是一种"认可的"数据库设计技术吗?我的意思是说使用它是"明智的"吗?使用它也是安全的,还是会引起问题?

另一个问题是它在rails中的效果如何?我从rails找到了一些引用 - 但它是否以非传统的方式做事?

任何帮助非常感谢.

jim*_*jim 5

这是个好主意吗 ?这取决于.它违反了规范化,因为表没有单一用途.当您第n次扩展基类时会发生什么?您必须向表中添加列.大多数现代数据库都没有问题,因为你可以修改表,但是重构和删除类呢.现在你有了没有目的的列.

经验法则 - 如果大部分设计已经完成,那么它可能是安全的.如果设计经常变化 - 您还有其他问题,需要锁定用例/用户要求.(是的,不是真正的XP友好)

我不知道Rails效果.