问题标签 [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.

0 投票
1 回答
2500 浏览

mysql - 使用先前插入的值进行双重插入

我有一个使用多表继承的简单数据结构:

.. 和其他特定事件表

特定事件的 id 是与事件 id 相关联的外键约束,它是自动递增的。

所以问题是,如果我想在 Event_B 中创建一条记录,我必须先在 event_B 中创建一条记录,然后使用生成的 ID 作为新查询的输入。我是否可以将两个语句合二为一,或者强制 MySQL 使用某种传播,允许我简单地插入 Event_B 的记录并为我自动生成父事件记录?

是否可以在创建新事件的特定事件表上使用触发器,然后使用生成的 ID 作为表中 id 的默认值?

* 更新 *

我尝试使用以下嵌套 SQL 语句和 last_insert_id() 来解决这个问题(正如这个问题的答案所建议的那样):

当我使用 MySQL 工作台执行它时,它工作得很好。但是,我在 SourceMod 工作,它的 MySQL 扩展似乎不支持嵌套查询。因此,当查询发送到 DB 驱动程序时,它会因语法错误而失败。

我也许可以只执行三个不同的查询,但我不确定这是否会在何时安排查询方面产生竞争条件,因为可能会同时触发很多查询。

我的下一个方法是将它添加为 MySQL 中的 BEFORE INSERT 触发器,因此在 Table_B 上我有以下内容:

但是,我的问题是我正在将一个虚拟值 (10) 插入到父表事件中。我可以将 game_tick 列添加到每个特定的事件类型,但如果可能的话,我想将所有事件的共享值保留在父类型表中。这怎么可能?

正如对以下问题的回答中所提到的,这个想法应该是在父表中拥有公共字段,但我不知道如何使这项工作发挥作用,除非我还将游戏记号存储在其他地方。

0 投票
2 回答
2309 浏览

django - 将 Django 模型父类添加到现有模型中以实现多表继承

Django Docs使用这个例子来演示多表继承:

如果我最初像这样构建 Restaurant 类:

然后在已经创建了一堆 Restaurant 对象之后,我意识到使用 MTI 会更好,有没有一种好方法可以在事后创建父 Place 类并迁移数据?

0 投票
1 回答
1050 浏览

django - django多表继承,从父实例的子访问方法

我正在使用多表继承(又名具体继承),其中我有一个名为 Clients 的非抽象模型 + 数据库表,它涉及有关所有客户端的常见细节。

但客户可以是个人、合作伙伴或公司,我为其创建了继承模型和表格。个人有名字+姓氏,公司有其他具体细节等。

当我想要所有客户端的列表时,我希望能够访问客户端的名称(从子表中的列派生)。

经过大量搜索,我发现本教程成功运行。

基本上,它涉及在 Client 表上插入一列,该列将存储 Child 模型的名称。然后使用该名称,识别适当的子模型并访问适当的子方法。

但是在Multi-Table继承中实现多态似乎是一种稍微麻烦的方式。

我想知道自 2012 年以来,Django 是否引入了更好的方法来处理这个问题,还是这仍然是唯一的方法?

如果需要我的代码示例,请告诉我,但提供的链接已经有一个漂亮的示例。

0 投票
0 回答
556 浏览

postgresql - Postgres camelCased 列名的 Doctrine 2.5.4 鉴别器问题:使用 DQL 别名“r”的“”缺少“鉴别器列”

所以我正在使用现有数据库的多类表继承学说。当我试图查询它抛出

使用 DQL 别名“r”的“Entity\Customer”缺少鉴别器列“customertype”。

当前实体设置如下:

我有一个抽象类 Customer,其中定义了鉴别器列。

商人班...

儿童附属班级...

我知道问题出在鉴别器列上,它的格式为驼峰式,但没有引用格式,但也许任何人都有同样的问题,并为此创建了一个解决方法。

0 投票
0 回答
855 浏览

django - django-rest-framework 同一请求中的多个序列化程序

我知道这里有类似的答案但我的问题不一样。我正在使用多表继承来对 2 种不同类型的实体进行建模,并且它们都可以创建帖子。我的问题是在尝试创建一个同时显示所有帖子的视图时。

所以我有我的实体模型,然后是我的 ETypeA 和 ETypeB 模型,它们看起来像这样:

如您所见,Entity 模型只是为了在 ETypeA 和 ETypeB 之间拥有一个公共主键。这样做的原因是只有一个常见的 Post 模型,如下所示:

现在的问题是,当我创建一个视图来显示帖子时,我只得到发送者的 id,但我需要全部信息。在 SQL 中执行此操作的方式应该是使用 ETypeA 连接结果,然后使用 ETypeB 并在结果之间建立联合(将某些字段保持为空)。然后我应该能够按日期对它们进行排序。如何使用 DRF 视图和序列化程序来做到这一点?

0 投票
2 回答
461 浏览

python - Django - 如何使用 MTI 从父类对象获取子类型对象?

我有一个函数,get_priority()它对父类(块)中的所有对象进行排序,以获得最高的“优先级”对象。现在我想将相关的子类对象获取到超类对象。

Multi-Table Inheritance 上的Django 文档表明我可以通过使用子类的小写名称来做到这一点。例如,如果子类是 Concept,我可以执行以下操作:

但是,子类可以是概念、代码、公式或问题。是对每个子类使用 try/except 的唯一方法,例如:

0 投票
1 回答
175 浏览

django - 有效使用多表继承(一对一关系)

我需要几个以一对一关系从基类继承的模型。与 Django 示例保持一致:

现在,当我在模板(或视图函数)中迭代它们时,如何有效区分各种类型的地方?现在,我只看到这个解决方案(如果我想迭代 Places,而不是单独的子模型):

甚至不确定这将如何转换为模板,但这段代码似乎非常错误且效率低下。

作为一种逃避,我想你可以在 Place 中创建一个选择字段来跟踪哪个子模型是相关的,但这等同于危险的非规范化。

我是不是想多了?你怎么做到这一点?

0 投票
1 回答
170 浏览

java - Hibernate:如何建模继承类型结构并在没有显式转换的情况下进行操作

我有一个使用传入消息的应用程序,解析消息中存在的数据,然后将规则应用于该数据。在Rule实体上,有一列区分规则的类型

我想将规则的结果保存到单独的表或子类中,具体取决于处理它们的规则类型。

我目前正在通过创建一个父@MappedSuperclass(抽象)BaseResult对象和一个 扩展BaseResult的AppleResultOrangeResult @Enitiy来解决这个问题。

我的问题是,鉴于下面的陈述,我如何改进/注释模型中的对象,以便在访问/保留它时不必对每个实例进行 instanceof 检查?现在这是我必须做的,以避免“baseresult 不存在”SQL 语法异常:

我希望有一个比必须执行 if/else 并根据结果显式转换更优雅的解决方案。我正在考虑使用诸如@DiscriminatorValue使用泛型的注释之类的东西,但是这些似乎都要求BaseResult在我的情况下它也是一个实体,但事实并非如此。

0 投票
0 回答
47 浏览

ruby-on-rails - ActiveRecord::ActsAs 路由问题

将旧的 Rails 3 应用程序升级到 Rails 4,由于弃用,多表继承 gem 已更改。现在,使用ActsAs

嵌套路由不起作用产生以下错误:

调用时:

父类:

儿童班:

路线.rb:

任何帮助,将不胜感激。

更新:耙路线

0 投票
0 回答
305 浏览

django - Django - 使用 django admin 进行多表继承

我正在尝试通过自己创建一个博客来学习 django,并且我之前尝试过一些真正简单的步骤,但现在我想做一些稍微复杂的事情。目前,我正在考虑将博客的“故事”划分为“块”。我的想法是有两个子类“TextBlock”和“ImageBlock”,我当前的模型看起来像这样。

我现在想做的是从 django 管理界面创建博客条目。是否可以从主块创建两种类型?还是我需要同时访问 TextBlock 和 ImageBlock?关于我应该如何从这里开始的任何想法?谢谢。