问题标签 [multi-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.
django - 在 Django 中的多表继承的情况下,基础模型的多态查询是否可能?
即我们有
我想以Place
某种方式查询:
但是因为q[x]
我不想有Place
类实例,Restaurant
而是Cafe
(真正存储的),所以我可以调用模型类的一些多态方法。可能的?
ruby-on-rails - 我应该如何为不同的文档类型建模?
我正在构建一个 Ruby On Rails API 来帮助管理构建文档——有许多不同类型的文档都有不同的字段,所以我目前有一个模型。
但是,我也希望能够引用这些文档,因为每个文档可以有任意数量的关联文档,这些文档可以是任何文档类型。我希望能够写出类似的东西
我所需要的只是相关文档的名称、ID 和类型(本质上是为了让人们可以轻松地在前端的相关文档之间导航)
这是单表继承的用例吗?有没有办法用多态关联来做到这一点?由于前端用例是链接列表,我应该只存储链接吗?
postgresql - 在基于 postgres 数据库的数据仓库中实现继承的最佳方法
我正在开发一个多步数据管道,应该优化以下过程:
1) 从NoSQL数据库 ( MongoDB ) 中提取数据。
2)将数据转换并加载到关系(PostgreSQL)数据库中。
3)使用Postgres数据库建立数据仓库
我手动编写了一个脚本来处理步骤 1) 和 2),这是一个中间 ETL 管道。现在我的目标是使用Postgres数据库构建数据仓库,但我对 DW 设计有一些疑问。下面是关系数据库的维度模型:
有 2 个主表,Occurrence和Canonical,从中继承了一组其他表(分别以红色和蓝色绘制)。请注意,有 2 个子数据类型ObserverNodeOccurrence和CanonicalObserverNode与另一个表具有额外的多对多关系。
我对如何在数据仓库中实现继承进行了一些研究,并认为最佳实践是将家庭数据类型(超级表和子表)合并到一个表中。这样做意味着添加额外的属性和大量的空值。我的新维度模型如下所示:
问题1:您认为这是解决这个问题的最佳方法吗?如果不是,那会是什么?
问题 2:有针对本地数据仓库的软件推荐吗?(内部部署是必须的,因为它包含敏感数据)
django - 从基础模型继承模型的 FK 关联查询优化
我有创建(或接收)交易的用户。我拥有的交易层次结构是一个多表继承,Transaction
作为基本模型包含所有交易类型之间的公共字段,例如用户(FK)、金额等。我有几种交易类型,它们扩展了Transaction
具有特定类型的模型数据。
为了这个例子,可以在下面找到说明我的问题的简化结构。
然后我在继承模型的.save()
方法中设置每个事务的类型。这一切都很好。
当我想获取用户的交易时,问题就出现了。具体来说,我需要子模型实例(存款、转账和取款),而不是基本模型(交易)。我还需要用户自己创建的交易和他们收到的转账。对于前者,我使用django-model-utils
's wonderful IneritanceManager
,效果很好。除了当我在传输子模型的接收者 FK 字段上包含过滤时,数据库查询增加了一个数量级。
如上所示,我在 Transactionuser
列和 Transferrecipient
列上放置了索引。但在我看来,如果可能的话,我可能需要一个关于 Transaction 子类型的索引。我试图通过在 Transactiontype
字段上放置索引并将其包含在查询中来实现此效果,如下所示,但这似乎没有效果。此外,我使用.select_related()
用户对象,因为它们在序列化中是必需的。
查询的结构如下:
所以我的问题是,为什么在查询中包含 时,数据库查询存在数量级差异Transfer.recipient
?我错过了什么吗?我在做傻事吗?或者有没有办法可以进一步优化?
django - Django 多表继承子类的空查询集
我有以下型号:
当我这样做时,SecondaryUser.objects.create(...)
我得到了一个预期的实例:
这有一个 id 和预期的填充字段。我还可以查询基类并使用 django 生成的 1-1 字段进行继承来访问子类的字段:
User.objects.get(email='test@etest.com').secondaryuser.<some_field>
但是,当我这样做时,SecondaryUser.objects.all()
它会返回一个空的查询集。并且模型管理员SecondaryUser
显示了一个空列表视图(即使我SecondaryUser
在管理员创建视图中创建了一个新实例)。
我觉得我遗漏了一些明显的东西,我需要能够在管理员中列出 SecondaryUser 实例。User
类不能是抽象的。
编辑:已确认他们在数据库中:
ruby-on-rails - 如何在 Rails 中使用多态的 belongs_to 关联设置 MTI?
为了创建一个简短的、自包含的、正确的(可编译的)示例,假设我想做以下事情。
我有一个博客网站。有两种类型的帖子,TextPost
和LinkPost
。还有两种类型的用户,User
和Guest
。我想用and实现多表继承,我的意思是(希望我正确使用了这个术语):TextPost
LinkPost
- 在模型级别,我将拥有
Post
和。并将继承自.TextPost
LinkPost
TextPost
LinkPost
Post
- 在数据库级别,我将为 和 的“叶”模型提供表
TextPost
,LinkPost
但不为Post
.
每种类型都Post
可以属于 aUser
或 a Guest
。所以我们有一个多态的belongs_to
情况。
我的问题是如何实现这些目标。
我尝试了以下方法,但它不起作用。
控制台输出: