问题标签 [class-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 投票
2 回答
4298 浏览

mysql - MySQL inheritance?

What would be the best way to design this MySQL database?

I have cars, fuels, and motor oils. Each car can use any number of fuels and any number of motor oils. What would be the best way to design this database?

So, one car can have one or many fuels, and one or many motor oils.

So I would need to have cars, fuels, and motor_oils tables in my database. Now since fuels and motor_oils have some similar properties like price, date_produced etc. Would it be smart for me to create another table called lets say products?

When using OOP language I would have Product entity, Fuel and MotorOils would extend Product and this way have properties defined in Product.

How would I design this in Mysql database? Is there such thing as inheritance in MySQL? I know that relation database does not have inheritance, and that there is a way to mimic this in MySQL, just need someone to explain better how is this done?

0 投票
0 回答
375 浏览

database - 数据库设计,连接不同实体的公共数据

我们有客户、经纪人、公司等实体。它们具有不同的属性,并且必须位于不同的表上。但是他们可以有共同的东西,在我们的例子中是联系信息(实体->联系是一对多的关系)。最好的方法是什么。如果没有完美的设计,如果最重要的是编写尽可能少的代码,那最好。

案例1:所有实体都有一个'common' auto-inc entityId(它们共享主键,所以你不能有一个id=1的客户和一个id=1的公司) 在此处输入图像描述

案例 2:'contact' 存储有关它所指实体的信息。(客户、公司、经纪人不共享主键)

在此处输入图像描述

案例 3:3 个联系表,每个实体一个。

有更多的方法可以连接这些表,这是一个经常发生的问题,我不是特别喜欢任何解决方案,所以帮助我决定。

0 投票
2 回答
577 浏览

nhibernate - 如何防止 Nhibernate 获取派生类?

我正在使用 Nhibernate,并且在获取具有多个派生类的基类(每个类映射不同的表)时遇到问题。当我查看请求时,Nhibernate 会加入每个派生表,这会对性能产生巨大影响......

这是我的课程的简化视图:

一个人有一个动物列表,我只想要他们的名字。这个例子并不完美,而且更复杂(银行程序),但它很好地反映了我的问题。我知道它可以以不同的方式完成等等,但它是一个遗产,所以我别无选择......

提前致谢。

0 投票
1 回答
1905 浏览

forms - Symfony2:将基于表继承结构的集合添加到 FormView

我正在开发一个使用类表继承(http://docs.doctrine-project.org/en/2.0.x/reference/inheritance-mapping.html#class-table-inheritance)的 Symfony2/Doctrine 应用程序在咨询中管理投诉。每个咨询可以有许多投诉(OneToMany),每种不同类型的投诉都有不同的结构和外观。投诉是一个集合,使用 JS 动态添加。

在这一点上,我能够持久化投诉并将它们链接到咨询,方法是在持久化之前将它们重铸为控制器中的适当类型。我遇到了一些问题,我计划将其迁移到表单事件(http://symfony.com/doc/current/cookbook/form/dynamic_form_generation.html)或类似性质的东西以简化流程.

然而,此时我遇到的问题是,我无法使用 FormView 在视图中显示现有的投诉,因为表单构建器要求我设置要显示的集合的类型。如果每个咨询只有一种类型的投诉,那很好,但它们可以有多种类型,并且在表单构建器中设置类型会将我限制为那种类型。

在没有类型的情况下,我是否可以采取一些方法来阻止 FormView 转换为字符串,或者以某种方式在每个投诉的基础上动态检测和分配类型(使用 $complaint->getComplaintType(),也许)?

0 投票
2 回答
379 浏览

nhibernate - NHibernate 中具有不同命名 Id 列的继承映射

我有三个共享很多列的表,所以我想使用继承来映射它们并使我的数据层更加 OOP、DRY 等等。在 NHibernate 手册中提到的所有三种继承映射策略(每个类层次结构的表、每个子类的表和每个具体类的表)中,超类(或公共接口)使用所有派生子类通用的 Id 进行映射。但是我的表上没有一个主键列被称为相同的。知道我怎么能映射这个?

在图表中:

TAXTYPE_1

  • clcpnd -> 不同名称的 Id 列
  • clcnmb -> 常见但名称不同的列
  • clcprc -> 特定列,此表唯一

TAXTYPE_2

  • rndind -> 不同名称的 Id 列
  • rndamb -> 常见但名称不同的列
  • rndorc -> 特定列,此表独有

TAXTYPE_3

  • dasfnd -> 不同名称的 Id 列
  • dastmb -> 通用但名称不同的列
  • dascrc -> 特定列,此表唯一

(是的,我的专栏就是这样命名的。旧系统。无法更改。现在请杀了我)

编辑:我已经使架构更清晰。另外,我想让我的观点更清楚一点:这三个表属于同一类型,我希望能够抽象一个实现公共字段的超类型,然后将细节写入每个子类。所以我有一个TaxType 类和一个TaxType1、TaxType2 和TaxType3 子类,它们中的每一个“都是”TaxType。此外,这将使我的其他层更易于使用,因为我将使用单个 TaxType 存储库等进行查询。感谢 Jamie Ide 让我意识到这个问题是多么糟糕。

0 投票
1 回答
174 浏览

database - SQL Server 2008 - 是否可以将一个表中的主键与另一个表中的通用字段相关联?

我目前正在从事一项工作,在尝试关联两个表时遇到问题,其中一个表由于泛化而成为子类。

表 A 有一个主键 StaffID,我想将其与通用表(表 B)中的外键相关联。表 B 的超类(表 C)具有 staffID 字段,因此泛化应该将其从表 C 带到表 B。

但是,当使用图表视图设置 FK 关系时,当我查看下拉字段时,我只能看到表 B 中的属性,而没有看到超类(表 C)属性,因此看不到人员 ID。

为了给情况提供更多的上下文,有两种类型的人员,一种可以在泛化的所有表中创建数据,因此通过人员ID直接链接到超类,但是另一种类型的人员只能将数据添加到其中一个子类。

提前致谢

0 投票
0 回答
299 浏览

ruby-on-rails-3 - ruby on rails 的多表类继承

我这里需要为以下模型建立一个多类继承模型。基本上我正在构建一个可扩展的联系人目录。从基类 Contact 我打算派生其他类,即:

每个模型对应一个不同的表 - 我假设在父类和子类之间会有一个 has_one belongs_to 关系但是我想知道是否有一个可以缓解它的宝石。或者,如果我必须自己做,我将如何实际完成它。

例如,contact.name 实际上是 person.first_name+' '+person.last_name 代表个人或 company.company_name 代表公司。如何构建我的数据库和关联以使其正确?

0 投票
2 回答
7957 浏览

database-design - 避免循环依赖

我正在开发一个旅行管理应用程序。有问题的设计如下所示:

旅行中的每个人都被指定为旅行者。每个旅行者都有一本护照。现在,Traveler 可以是 MainMember 或 SubMember,这取决于他是否是一家之主。MainMember 决定诸如 TourPackage、他的旅行家庭的总金额等内容。SubMember 在旅行时依赖于 MainMember。因此,如果 MainMember 被删除,它的所有 SubMember 也必须被删除。

所以,旅行者有护照。(一对一关系) Traveler 是 MainMember 或 SubMember。(Traveler-MainMember 和 Traveler-SubMember 之间的一对零/一)一个 MainMember 可能有多个 SubMember。(一对多)一个 SubMember 只有一个 MainMember。(多对一)

我目前的 ERD 如下所示。

旅行者 ER 图

如您所见,三个表 - Traveler、MainMember 和 SubMember - 形成了循环依赖关系。不过,我不确定这是否会损害我的申请。如果我删除一个作为 MainMember 的 Traveler,那么 1. Traveler 中的一条记录被删除。2、删除其相关的MainMember记录。3、删除依赖于MainMember的SubMember记录。4. 子会员的旅行者记录被删除。

虽然这似乎不是问题,但作为 Traveler-MainMember 删除将始终只删除 Traveler-SubMember。不过,我对此有不好的预感。

谁能指导我更好的设计?

更新 -

在等待回复的同时,我根据@Daveo 的回复想出了另一个设计。基本上,Traveler 包含自引用外键。SubMember 记录将使用它来识别他们的父母。

这是 ERD。

带有自引用表的 ERD

现在,正如@Branko 所指出的那样,由于我之前的设计中没有循环依赖的问题,我想知道哪种设计更好?

另外,哪种设计更适合通过 Hibernate 实现?我认为第二种方法在通过 Hibernate 实现时可能会导致复杂性。

对于您喜欢的设计,我还将感谢有关实现模式(Hibernate 实体中的继承等)的一些指示。

0 投票
2 回答
1929 浏览

ruby-on-rails-3 - 多表继承 Rails 和 activerecord

我正在尝试使用 ActiveRecord 实现多表继承。看起来所有可用的宝石都很老了。我错过了什么吗?是否有任何“本机”方法可以使用 activerecord 实现这一点?我正在使用 Rails 3.2.3 和 activerecord 3.2.1

0 投票
1 回答
1985 浏览

symfony - 使用 Symfony2 的 Doctrine 类表继承

我有 2 个 Symfony 包。AdminBundle 将始终安装。可能会或可能不会安装 PageBundle。

我想定义一个名为 AdminModule 的基本实体(名称、控制器类、描述、启用),以及一个简单地从 AdminModule 继承的 PageModule(实体控制器将实现特定的接口)。

我认为,我遇到的问题是 AdminModule 注释@ORM\DiscriminatorMap({"page" = "\PageBundle\Entity\PageModule"})需要在 AdminBundle 上定义 - 但可能没有安装 PageBundle。

我相信必须有错误类型的继承结构(?)但是我不清楚我可以采取哪些替代方法?感谢您的任何帮助或指导:)