问题标签 [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.
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?
database - 数据库设计,连接不同实体的公共数据
我们有客户、经纪人、公司等实体。它们具有不同的属性,并且必须位于不同的表上。但是他们可以有共同的东西,在我们的例子中是联系信息(实体->联系是一对多的关系)。最好的方法是什么。如果没有完美的设计,如果最重要的是编写尽可能少的代码,那最好。
案例1:所有实体都有一个'common' auto-inc entityId(它们共享主键,所以你不能有一个id=1的客户和一个id=1的公司)
案例 2:'contact' 存储有关它所指实体的信息。(客户、公司、经纪人不共享主键)
案例 3:3 个联系表,每个实体一个。
有更多的方法可以连接这些表,这是一个经常发生的问题,我不是特别喜欢任何解决方案,所以帮助我决定。
nhibernate - 如何防止 Nhibernate 获取派生类?
我正在使用 Nhibernate,并且在获取具有多个派生类的基类(每个类映射不同的表)时遇到问题。当我查看请求时,Nhibernate 会加入每个派生表,这会对性能产生巨大影响......
这是我的课程的简化视图:
一个人有一个动物列表,我只想要他们的名字。这个例子并不完美,而且更复杂(银行程序),但它很好地反映了我的问题。我知道它可以以不同的方式完成等等,但它是一个遗产,所以我别无选择......
提前致谢。
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(),也许)?
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 让我意识到这个问题是多么糟糕。
database - SQL Server 2008 - 是否可以将一个表中的主键与另一个表中的通用字段相关联?
我目前正在从事一项工作,在尝试关联两个表时遇到问题,其中一个表由于泛化而成为子类。
表 A 有一个主键 StaffID,我想将其与通用表(表 B)中的外键相关联。表 B 的超类(表 C)具有 staffID 字段,因此泛化应该将其从表 C 带到表 B。
但是,当使用图表视图设置 FK 关系时,当我查看下拉字段时,我只能看到表 B 中的属性,而没有看到超类(表 C)属性,因此看不到人员 ID。
为了给情况提供更多的上下文,有两种类型的人员,一种可以在泛化的所有表中创建数据,因此通过人员ID直接链接到超类,但是另一种类型的人员只能将数据添加到其中一个子类。
提前致谢
ruby-on-rails-3 - ruby on rails 的多表类继承
我这里需要为以下模型建立一个多类继承模型。基本上我正在构建一个可扩展的联系人目录。从基类 Contact 我打算派生其他类,即:
每个模型对应一个不同的表 - 我假设在父类和子类之间会有一个 has_one belongs_to 关系但是我想知道是否有一个可以缓解它的宝石。或者,如果我必须自己做,我将如何实际完成它。
例如,contact.name 实际上是 person.first_name+' '+person.last_name 代表个人或 company.company_name 代表公司。如何构建我的数据库和关联以使其正确?
database-design - 避免循环依赖
我正在开发一个旅行管理应用程序。有问题的设计如下所示:
旅行中的每个人都被指定为旅行者。每个旅行者都有一本护照。现在,Traveler 可以是 MainMember 或 SubMember,这取决于他是否是一家之主。MainMember 决定诸如 TourPackage、他的旅行家庭的总金额等内容。SubMember 在旅行时依赖于 MainMember。因此,如果 MainMember 被删除,它的所有 SubMember 也必须被删除。
所以,旅行者有护照。(一对一关系) Traveler 是 MainMember 或 SubMember。(Traveler-MainMember 和 Traveler-SubMember 之间的一对零/一)一个 MainMember 可能有多个 SubMember。(一对多)一个 SubMember 只有一个 MainMember。(多对一)
我目前的 ERD 如下所示。
如您所见,三个表 - Traveler、MainMember 和 SubMember - 形成了循环依赖关系。不过,我不确定这是否会损害我的申请。如果我删除一个作为 MainMember 的 Traveler,那么 1. Traveler 中的一条记录被删除。2、删除其相关的MainMember记录。3、删除依赖于MainMember的SubMember记录。4. 子会员的旅行者记录被删除。
虽然这似乎不是问题,但作为 Traveler-MainMember 删除将始终只删除 Traveler-SubMember。不过,我对此有不好的预感。
谁能指导我更好的设计?
更新 -
在等待回复的同时,我根据@Daveo 的回复想出了另一个设计。基本上,Traveler 包含自引用外键。SubMember 记录将使用它来识别他们的父母。
这是 ERD。
现在,正如@Branko 所指出的那样,由于我之前的设计中没有循环依赖的问题,我想知道哪种设计更好?
另外,哪种设计更适合通过 Hibernate 实现?我认为第二种方法在通过 Hibernate 实现时可能会导致复杂性。
对于您喜欢的设计,我还将感谢有关实现模式(Hibernate 实体中的继承等)的一些指示。
ruby-on-rails-3 - 多表继承 Rails 和 activerecord
我正在尝试使用 ActiveRecord 实现多表继承。看起来所有可用的宝石都很老了。我错过了什么吗?是否有任何“本机”方法可以使用 activerecord 实现这一点?我正在使用 Rails 3.2.3 和 activerecord 3.2.1
symfony - 使用 Symfony2 的 Doctrine 类表继承
我有 2 个 Symfony 包。AdminBundle 将始终安装。可能会或可能不会安装 PageBundle。
我想定义一个名为 AdminModule 的基本实体(名称、控制器类、描述、启用),以及一个简单地从 AdminModule 继承的 PageModule(实体控制器将实现特定的接口)。
我认为,我遇到的问题是 AdminModule 注释@ORM\DiscriminatorMap({"page" = "\PageBundle\Entity\PageModule"})
需要在 AdminBundle 上定义 - 但可能没有安装 PageBundle。
我相信必须有错误类型的继承结构(?)但是我不清楚我可以采取哪些替代方法?感谢您的任何帮助或指导:)