问题标签 [concrete-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 投票
5 回答
10889 浏览

django - 我应该以任何方式避免 Django 中的多表(具体)继承吗?

许多经验丰富的开发人员建议不要使用Django 多表继承,因为它的性能很差:

  1. Django gotcha:由Django 的核心贡献者Jacob Kaplan-Moss的具体继承。

    几乎在所有情况下,从长远来看,抽象继承都是一种更好的方法。我见过不少网站在具体继承引入的负载下崩溃,所以我强烈建议 Django 用户对具体继承的任何使用都抱有很大的怀疑态度。

  2. Daniel Greenfield ( @pydanny )的两勺Django

    多表继承,有时称为“具体继承”,被作者和许多其他开发人员认为是一件坏事。我们强烈建议不要使用它。

    不惜一切代价,每个人都应该避免多表继承,因为它会增加混乱和大量开销。代替多表继承,在模型之间使用显式 OneToOneFields 和 ForeignKeys,以便您可以控制何时遍历连接。

但是没有多表继承,我不能轻易

  1. 在另一个模型中引用基础模型(必须使用 GenericForeignKey 或反向依赖);

  2. 获取基本模型的所有实例

    (随时添加更多)

那么在 Django 中这种继承有什么问题呢?为什么显式 OneToOneFields 更好?

JOIN 对性能有多大影响?是否有任何基准可以显示性能差异?

不允许select_related()我们控制何时调用 JOIN?


我已将具体示例移至一个单独的问题,因为这个问题变得过于广泛,并添加了一系列使用多表继承的原因。

0 投票
0 回答
362 浏览

python - SQLAlchemy ORM 用于 6 个分片数据库中的每一个上的 12 个重复表

情况:

我有一组 12 个相同结构的表(按月份表示数据),它们存在于不同数据库的 6 个分片中的每一个上。我需要在任何给定月份的任何这些数据库中获取一组样本数据。

数据库由记录id决定,表由记录中某日期值的月份决定。

问题:

为此设置 SQLAlchemy ORM 的最佳方法是什么?

最初我只需要一次查询一个月的数据,所以我设置了一个 ShardedSession 将我的 Data 类映射到十二个数据表之一,而忽略了我不需要的那些表的存在。现在我需要在任何给定时间选择 3 个不同月份的随机数据集。有没有办法可以将同一个类映射到相同结构的 3 个不同的表上,以便它们都被视为一个?这样我就可以从这 3 个月中随机选择记录。

我以前问过一个类似的问题,并在这里发布了我想出的解决方案: SQLAlchemy Classical Mapping Model to sharded Postgres databases 我正在使用 Classical Mapping Model,我不确定这是否是最好的,但这是我唯一的方法可以弄清楚如何使事情正常进行。

我已经阅读了一些关于具体表继承和实体名称的内容,但上次我尝试无法让实体名称解决方案工作。

任何指针将不胜感激!谢谢!

0 投票
3 回答
1688 浏览

c++ - 如何从模板类创建具体类

假设我有一个模板类:

假设我想在ArrayString哪里创建具体类T=std::string。实现这一目标的正确方法是什么:

定义

类型定义

遗产

我不确定所有建议是否有效。无论如何,我试图找出最适合哪种做法。

0 投票
0 回答
87 浏览

php - 选择什么样的教义传承?

我无法确定哪种 Doctrine 继承适合我的项目。

目标是让虚拟机 (VM) 拥有多个软件(PHP、MySQL 等......)。
这些软件中的每一个都有一个独特的类,以及一些共同的领域。我首先尝试在 VM 类中加入与每个软件类的关系,并且效果很好:

但是现在我想使用一个抽象类“软件”,我的所有软件都将从中继承,并且在我的 VM 类中只有一个 $software 属性。这样,将来添加从 Software 继承的新软件类会更容易。
我的抽象类“软件”链接到虚拟机(VM)类:


我试图@ORM\SuperMappedClass在我的 Software 类上添加注释,但后来我没有找到访问子类的方法。对于这种特殊情况,这是最好的学说继承吗?具体表继承会是更好的选择吗?我什至不知道具体继承是否可能,因为文档中没有详细说明。

0 投票
1 回答
259 浏览

hibernate - Hibernate - 每个具体类策略的表 - 每个表的单独 ID

在我的应用程序中,我有一个会议对象,其属性存储在会议表中。我必须创建一个新对象,比方说“meetingNEW”有一些不同的属性,但大多数都是常见的。

我正在考虑使用每个具体类策略的表,但我想为这两个表设置单独的 id,而不是从超类继承它。是否可以?我只找到具有共同 id 的示例。

我的想法是:MeetingType -> 抽象超类

Meeting 以 Meeting_id 作为 PK 扩展 MeetingType(表)

MeetingNEW 扩展 MeetingType 与 meetingNEW_id 作为 PK(表)

谢谢

0 投票
1 回答
1351 浏览

java - Hibernate - 具有联合策略的每个子类的表 - 加载时需要加载 ID

我有以下结构:

在数据库中,我有 2 个表:C_MEETING 和 C_ACCREDITATION,它们都包含 TEMPORARY_CONTAINER_ID 作为 PK。

当我尝试查询时:

我看到了正确的结果query.getResultSize()

但是当我尝试用query.list()

我收到此错误:

从昨天开始我就被困在这里:(

谢谢

0 投票
1 回答
856 浏览

mysql - SQL Concrete Vs Class Table Inheritance query speed on one subtype

I am weighing up between Concrete and Class Table Inheritance (see example below). Class Table certainly has a lot of benefits, in particular for my scenario, super table columns are guaranteed consistent across the full data set. However I have next to no need to query every subclass at once, instead all queries will be on one subclass at a time (of which there are at least 9 subclasses).

Thus with my row count looking like it will be very large, would it be much sizable quicker to query one Concrete table with less rows ie: (as per example below)

Or would the foreign key relationships be effectively quick enough that any query speed difference in looking up the very large super table is negligible in Class Table Inheritance: (as per example below)

An Example of Concrete Inheritance: A completely seperate table for each type with columns in common repeated in each table>

An Example of Class Table Inheritance: One super class, many sub classes. Each subclass id references a superclass id.

0 投票
1 回答
105 浏览

design-patterns - 如何建模子实体可以包含不同数据的具体表关系,其中数据属于相同的泛型?

我正在考虑将具体表继承用于一个用例,并且需要帮助确定我是否需要使用识别与非识别关系,以及是否需要准确地构造我的表。

我的用例

我有一个 HTML 表单对象,其中的表单在很多方面都是相同的,即它是一个大型表单,对于不同的产品是相同的,除了product_options,它根据确切的不同而不同product_type。我想将表单数据保存到表中,以便存储/检索。我想我想使用 Concrete Table 实现,并且需要反馈是否可以这样做。

这是我的想法:

在此处输入图像描述

假设我想检索“A”类型产品的信息,我

  1. 读取 selection_for,检索product_type
  2. 基于product_type我阅读了相应的选项表

这个好像有点复杂……

我也在使用 Doctrine ORM 在后台驱动数据库,因此这种数据操作可能很难通过 ORM API 实现,但我想先考虑这个选项。

问题:

  • 我的设计会按原样工作吗?可以改进吗?我是否正确实施了混凝土表设计?
  • 我对产品选项表使用识别关系还是非识别关系?

我也可以像这样做一个替代图表:

在此处输入图像描述

如果这些外键之一不为 NULL,那么我读取该键,然后读取相应的表以检索数据。

问题:

与第一种方法相比,第二种方法有什么优点或缺点吗?

0 投票
1 回答
126 浏览

java - 使用反射方法在抽象类中创建具体对象

假设我有一个名为 Model 的抽象类,具有以下静态方法:

一个具体的类扩展了它:

那么,是否有可能使用静态上下文 Person.all()返回一个列表Person而不是列表Model

你知道,通过使用模板,或反射方法,如getClass().getClassName()getClass().getDeclaredMethod()等。

我之所以这么问,是因为我在 PHP 库中看到了这一点,并且我正在 java 中创建一个类似的库。

0 投票
1 回答
43 浏览

inheritance - 在pyomo中获取一个实例来继承另一个实例的约束

我正在尝试创建一个继承另一个实例约束的实例,同时添加一些新约束。

有没有办法将前一个实例的约束“复制”到新的约束中?

这是代码中的一个片段

non_solved_instances[0]包含“原始”实例,我希望将其约束继承给bnb_instance

干杯!