问题标签 [single-table-inheritance]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
7 回答
2546 浏览

ruby-on-rails - 单表继承

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

基本上我似乎从中了解到的是,您有一个包含所有字段的大表以及一个类型字段 - 然后您的 ORM 层使用类型字段为您提供不同的对象视图。那是对的吗?

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

另一个问题是这在 Rails 中的效果如何?我从 Rails 中找到了一些对它的引用——但它是否会因为以非常规的方式做事而导致问题?

非常感谢任何帮助。

0 投票
6 回答
14215 浏览

python - Django中的单表继承

Django 中是否明确支持单表继承?上次我听说,该功能仍在开发和辩论中。

是否有我可以同时使用的库/黑客来捕获基本行为?我有一个混合不同对象的层次结构。具有 Employee 类、员工类型的子类和 manager_id (parent_id) 的公司结构的典型示例将是我正在解决的问题的一个很好的近似值。

就我而言,我想代表一个员工可以管理其他员工同时由不同的员工管理的想法。Manager 和 Worker 没有单独的类,这使得它很难跨表传播。子类将代表员工的类型——程序员、会计师、销售等,并且独立于谁监督谁(好吧,我想它在某些方面不再是典型的公司)。

0 投票
7 回答
12341 浏览

ruby-on-rails - 如何在 Rails STI 派生模型中禁用验证和回调?

给定一个模型

和一个派生模型(底层数据库表有一个type字段 - 这是简单的 rails STI)

DerivedModel将以良好的 OO 方式继承所有行为BaseModel,包括validates_presence_of :parent_id. 我想关闭验证DerivedModel,并防止触发回调方法,最好不要修改或以其他方式破坏BaseModel

最简单、最可靠的方法是什么?

0 投票
3 回答
527 浏览

ruby-on-rails - 在具有单表继承的 Rails 应用程序中使用 memcached?

我有一个使用 STI 处理不同类型用户的 Rails 应用程序,例如:

我想使用 memcached,但我不断收到可怕的“未知类/模块”错误。我已经尝试预加载我所有的 ActiveRecord 模型,但无济于事。第一个请求正常工作,但第一个从 memcached 错误中提取出来。我也按照这些说明无济于事。

单表继承是否可以使用 memcached?

0 投票
1 回答
1899 浏览

entity-framework - 实体框架:如何使用 rowversion 字段启用每个类继承一个表?

为什么我不能在子类中定义同名的成员?每个类继承一个表rowversion timestamp,每个表中都有一个字段。似乎实体设计者应该允许这样做并使用new属性上的关键字来实现它。解决方法是什么?如果我不能使用,如何在具有不同值的继承链中指定相同的字段new?对于具有 rowguid、modifiedbys、modifieddates 等的其他数据库,这可能是正确的。

编辑:我想这样做的合乎逻辑的方法是重命名对该字段的引用,即PersonRowversionStudentPerson.

我是否错过了一块可以自动跟踪这些字段的 EF?

0 投票
3 回答
2737 浏览

ruby-on-rails - Ruby on Rails 单表继承 (STI) 和单元测试问题(使用 PostgreSQL)

我正在使用带有单个“帐户”表的 STI 模型来保存用户和技术人员的信息(即用户 < 帐户,技术人员 < 帐户)。从功能的角度来看,一切都有效,但是在运行单元测试时事情会爆炸:

... 8)错误:test_the_truth(UserTest):ActiveRecord::StatementInvalid:PGError:错误:关系“技术人员”不存在:从“技术人员”中删除......

本质上,标准框架不承认 Technicians 和 Users 表(或 PostgreSQL 称之为“关系”)不存在,事实上,应该将其别名为 Accounts。

有任何想法吗?我对 RoR 比较陌生,我不知道如何解决这个问题而不把 STI 一起撕掉。

0 投票
2 回答
6087 浏览

java - 使用 Java 和 Ruby 实现 JSON 中的多态性或继承

对于上下文,我们将大部分数据存储为 JSON 字符串。这与后端的 Hadoop 配合得非常好,并且在前端的 Ruby 中很容易处理。我的数据类型符合继承的自然模式。

为简单起见,假设我有一个 Pet 类和一个喂宠物的进程 FeedPet。我还有一个进程WalkDog,它只适用于Dog,它是一种宠物。我的数据是经过组织的,因此我永远不必担心试图遛一只不是狗的宠物。

我想做的是让 Pet 和 Dog 扩展 Pet,Dog 有一个额外的方法“getLeash()”,但我不知道如何将它映射到 JSON。

相反,我有一个带有物种数据哈希图的 Pet 类,因此 WalkDog 进程将调用 pet.getSpeciesData("leash") 而不是 dog.getLeash()。

我可以创建一个 Dog extends Pet,并且可以使用 Jackson 库将其序列化为 JSON。JSON 对象将有一个 leash 字段。但假设我想喂饱所有的宠物。所有宠物都有一个 getFood() 方法。因此 FeedPet 进程将对象反序列化为 Pet。但这失去了皮带领域。

WalkDog 进程可以做到这一点,因为它知道它的所有输入都将是 Dog,因此它可以将其作为 Dog 读取并将其作为 Dog 写回。

有什么方法可以将 java 对象序列化为 JSON,以便我可以保留它们的类型?我在想像 Rails 单表继承这样的东西,但它必须是 JSON 库可以理解的东西。

0 投票
3 回答
2586 浏览

mysql - MySQL / Rails 性能:一张表,多行 vs. 多表,少行?

在我的 Rails 应用程序中,我有几个处理资产(附件、图片、徽标等)的模型。我正在使用 attachment_fu ,到目前为止,我有 3 个不同的表用于将信息存储在我的 MySQL 数据库中。

我想知道如果我使用 STI 并将所有信息仅放在一个表中,使用类型列并具有不同的继承类,它是否会对性能产生影响。它会更 DRY 并且更容易维护,因为它们都共享许多属性和特征。

但更快的是什么?很多表,每张表的行数少,还是只有一张表多行?还是根本没有区别?我必须每秒处理大量信息和许多查询。

感谢您的意见!

0 投票
3 回答
8305 浏览

ruby-on-rails - has_many 和单表继承

我在两个实体 Feeds 和 Posts 之间有一个 has_many 关系。我也有特定类型的帖子、视频和照片。这是使用单表继承在数据库中构建的。

现在我的 Feed 模型指定了 Feed 和 Posts 之间的 has_many 关系(包括子类型)

有没有更好、更传统的方法来指定这个?还是我拥有的东西尽可能简单?

0 投票
2 回答
802 浏览

ruby-on-rails - Rails 单表继承

对于单表继承,如何强制 Rails 使用整数列作为“类型”列而不是字符串?