Questions tagged «subtypes»

有关组织为类型和子类型的数据的问题。

3
通过互斥子类在类型/子类型设计模式中实现子类型的子类型
介绍 为了使该问题对将来的读者有用,我将使用通用数据模型来说明我面临的问题。 我们的数据模型由3个实体,这应标明的A,B和C。为了使事情简单,它们的所有属性都是int类型。 实体A具有以下属性:D,E和X; 实体B具有以下属性:D,E和Y; 实体C具有以下属性:D和Z; 由于所有实体都具有相同的属性D,因此我决定采用类型/子类型设计。 重要提示:实体是互斥的!这意味着实体是A或B或C。 问题: 实体A和B具有另一个公共属性E,但是该属性在实体中不存在C。 题: 如果可能的话,我想利用上述特征进一步优化设计。 老实说,我不知道如何执行此操作,也不知道从哪里开始尝试,因此不知道该帖子。

4
最好的设计从单个列引用多个表?
拟议方案 首先,这是我提议的架构示例,供我在整个帖子中参考: Clothes ---------- ClothesID (PK) INT NOT NULL Name VARCHAR(50) NOT NULL Color VARCHAR(50) NOT NULL Price DECIMAL(5,2) NOT NULL BrandID INT NOT NULL ... Brand_1 -------- ClothesID (FK/PK) int NOT NULL ViewingUrl VARCHAR(50) NOT NULL SomeOtherBrand1SpecificAttr VARCHAR(50) NOT NULL Brand_2 -------- ClothesID (FK/PK) int NOT NULL PhotoUrl VARCHAR(50) …

4
如何为两个表的MySQL建模
我有一些表用于存储数据,并取决于完成工作的人的类型(工人,民事人员),我想将其存储在event表中,现在这些人抢救出了一只动物(有一个animal表)。 最后,我想有一张桌子来存储一个人(工人,土木工人)救了一只动物的事件,但是弓箭我应该添加一个外键或者如何知道id完成这项工作的土木工人或工人的价值? 现在,在这种设计中,如果我只有一个人(又称民事人员),我不知道如何关联哪个人做这项工作,我只会将这个civil_id谷值存储person在最后一张表中的列中……但是如何知道是土木还是工人,我是否需要其他“中级​​”表? 如何在MySQL中反映下图的设计? 额外细节 我通过以下方式对其进行建模: DROP TABLE IF EXISTS `tbl_animal`; CREATE TABLE `tbl_animal` ( id_animal INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT, name VARCHAR(25) NOT NULL DEFAULT "no name", specie VARCHAR(10) NOT NULL DEFAULT "Other", sex CHAR(1) NOT NULL DEFAULT "M", size VARCHAR(10) NOT NULL DEFAULT "Mini", edad VARCHAR(10) NOT …

3
对每个音乐艺术家都是乐队或独奏演员的场景进行建模
我必须为涉及音乐艺术家描绘的业务环境设计一个实体关系图(ERD),下面将详细介绍。 方案说明 一个艺术家有一个名称,且必须要么一组 或一个独奏演员(但不能同时)。 甲组是由一个或多个独奏表演者,并具有会员数(其应该从数计算独奏表演构成组)。 一个独奏演员可能是一个会员众多的群体或无的集团,并可以播放一个或多个仪器。 题 如何构建一个ERD来代表这种情况?我对它的“或”部分感到困惑。

2
我应该如何为“非此即彼”的关系建模?
假设我有一个名为Software的实体,并且有两个子类型FreeSoftware和NonFreeSoftware。NonFreeSoftware实体具有购买日期,供应商等属性。FreeSoftware实体具有许可证,源代码url等属性。 因此,如果我想为另一个实体OperatingSystem建模,应该怎么做?与软件之间存在“是”关系,而与FreeSoftware和NonFreeSoftware之间存在“或者”关系。 我认为我在分析此层次结构时缺少一些东西。

2
如何为可以具有不同属性集的实体类型建模?
在用Users和Items之间的一对多(1:M)关系重新创建数据库时遇到了一些麻烦。 是的,这很简单。但是,每个项目都属于某个类别(例如Car,Boat或Plane),并且每个Category具有特定数量的属性,例如: Car 结构体: +----+--------------+--------------+ | PK | Attribute #1 | Attribute #2 | +----+--------------+--------------+ Boat 结构体: +----+--------------+--------------+--------------+ | PK | Attribute #1 | Attribute #2 | Attribute #3 | +----+--------------+--------------+--------------+ Plane 结构体: +----+--------------+--------------+--------------+--------------+ | PK | Attribute #1 | Attribute #2 | Attribute #3 | Attribute #4 | +----+--------------+--------------+--------------+--------------+ …

4
父类别/子类别决定类别之间:完全不相交或不完全重叠
我正在建立一个库存数据库,用于存储IT硬件,例如台式计算机,笔记本电脑,交换机,路由器,移动电话等。被放入子类型表中。我的困境是在以下两种设计之间进行选择: 在顶视图中,所有设备共享相同的子类型。例如,台式计算机和便携式计算机将在下表中记录:设备,网络设备。交换机将在以下位置记录:设备,网络设备。路由器将在以下位置记录:设备,网络设备,WANDevice。我们跟踪位置的任何设备都会在“位置”中有一条记录。我在此设置中想到的一些利弊: 优点:基于公共字段(例如主机名或LocationID)选择记录更加容易。 优点:没有空字段。 缺点:特定设备的CRUD操作中应包含的表并不明显,并且可能会使以后的DBA感到困惑。 在底图中,所有设备都有其自己的子类型(此处未显示更多类的设备)。在这种情况下,很明显哪些表记录被插入或选择。台式计算机和便携式计算机可以在“计算机”等中使用。对于此设置,我想到了一些利弊: 优点:很明显,哪些表用于子类型的CRUD操作。 优点:CRUD操作只需使用一张表。 缺点:基于公共子类型字段选择记录需要合并所有表,例如,按主机名或LocationID进行搜索。 在这两种情况下,ClassDiscriminator字段都放在子类型表中,以与CHECK约束一起使用,以控制可以插入哪些类型。 是否有任何建议的设计更好,还是完全出于见解并取决于数据库的预期目的? 编辑:我有一个特定的问题有关表“ NetworkDevice”的重叠性质。该表用于保存具有主机名和/或IP地址的任何设备的网络信息,无论它是计算机,交换机还是路由器。该表的重叠性质是否会引起问题,还是可以通过这种方式实现? 预先感谢您提供任何输入。请询问是否需要其他信息。

4
不知道如何将变量实体转换为关系表
简介和相关信息: 以下示例说明了我面临的问题: 动物有种族,可以是猫或狗。猫可以是暹罗语或波斯语。狗可以是德国牧羊犬或拉布拉多犬。 动物是一个强大的实体,而其种族是可以具有两个提供的值(猫或狗)之一的属性。 这两个值都很复杂(我在这里仅添加了dog / cat的类型来说明问题,但也可能有cat / dog的名字和其他东西)。 问题: 我不知道如何为该示例创建关系表。 我为解决问题所做的努力: 我尝试使用Chen的符号来绘制ER图,该图代表了问题,但作为一个初学者,我不知道我是否做对了。这是我得到的: 如果我画错了,我深表歉意,如果是的话,请纠正我。我不仅希望获得“免费的解决方案”,而且希望学习如何处理该问题,以便将来自己解决。 我唯一想到的就是创建两个单独的表,一个用于猫,一个用于狗。同样,“ 动物”表中的“ 种族”属性将仅存储猫或狗的值。像这样: Animal< # Animal_ID, race, other attributes > Cat < # Cat_ID, $ Animal_ID, breed > Dog < # Dog_ID, $ Animal_ID, breed > 我对解决方案确实感觉很不好,我担心这是错误的,因此出现以下问题。 问题: 如何将示例转换为ER图? 如何将ER图转换为关系表? 如果需要更多信息,请发表评论,我将尽快更新我的帖子。也可以随意添加适当的标签,因为我在这里还很陌生。 谢谢。

1
具有两种可能的所有者/父类型的实体的数据库架构?
我正在将PostgreSQL与Sequelize用作我的ORM。 我有一种类型User。第二种类型是Group,可以通过GroupMemberships表与任何数量的用户相关联。Users也可以拥有任意数量的Groups。 我的第三种类型Playlist可以属于UserOR或a group。为这种类型设计模式的最佳方法是什么,使其既可以具有所有者的一种,又可以具有所有者的任何一种? 我的第一遍创建了两个关联,但是一次只能填充一个。这可能可行,但似乎很麻烦,并且使查询变得困难。 附加信息 这是我对MDCCL通过评论发布的澄清请求的回复: (1)如果一个播放列表是由给定资集团,可以说,这个播放列表是关系到一个一对多的用户,只要他们是会员这样的小组,对不对? 我相信这在技术上是正确的,但是这种一对多的关联并不明确存在。 (2)因此,一个特定的播放列表是否可以同时由一对多的组拥有? 不,Playlist一对多不可能拥有一个Groups。 (3)一个特定的播放列表是否可能由一对多组拥有,同时又由不是该组成员的一对多用户拥有? 没有,因为在(2)一到,许多从Playlist到Group应该不存在。此外,如果a Playlist由a Group拥有,则不由a拥有User,反之亦然。一次仅一个所有者。 (4)用来唯一标识组,用户和播放列表的属性是什么? 它们每个都有代理主键(id)和自然键(尽管不是主键)。这些是slug用于Group和Playlist,username用于User。 (5)能在特定播放列表遭受所有者的变化? 尽管我不打算将其作为一项功能(至少最初是这样),但我认为这可能会发生。 (6)Group.Slug和Playlist.Slug属性的含义是什么?它们的值是否稳定到足以定义为主键,或者它们经常更改?这两个属性的值以及User.Username必须唯一,对吗? 这些slug是各自实体的唯一,小写,带连字符的版本title。例如,group带有title“测试组”的a将具有slug“测试组”。重复项将附加增量整数。每当他们title改变时,这都会改变。我相信这意味着他们不会做出出色的主键吗?是的,slugs并且usernames在各自的表中是唯一的。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.