问题标签 [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 回答
2325 浏览

database - 增强的实体关系建模

我必须从这个案例中得出增强的实体关系建模:

佐治亚理工图书馆 (GTL) 拥有大约 16,000 名成员、100,000 种图书和 250,000 册(平均每本书 2.5 册)。任何时候都有大约 10% 的书被借出。图书馆员确保会员想借的书在会员想借的时候随时可用。此外,图书馆员必​​须知道在任何给定时间每本书有多少本在图书馆内或在外借。在线提供书籍目录,按作者、标题和学科领域列出书籍。对于图书馆中的每个标题,目录中都保存了一个书籍描述,从一个句子到几页不等。当成员请求有关书籍的信息时,参考图书馆员希望能够访问此描述。图书馆工作人员包括主任馆员、部门副馆员、参考馆员、

书籍可以借出 21 天。会员一次只能拿出五本书。会员通常会在三到四个星期内归还书籍。大多数成员都知道在向他们发送通知之前他们有一周的宽限期,因此他们会尝试在宽限期结束之前归还书籍。大约 5% 的会员必须被提醒归还书籍。大多数逾期图书会在到​​期日后的一个月内归还。大约 5% 的逾期图书要么被保留,要么永不归还。图书馆最活跃的成员被定义为一年中至少借书十次的人。前 1% 的成员分担 15% 的借款,前 10% 的成员分担 40% 的借款。

要成为图书馆的会员,申请人需要填写一份表格,其中包括他们的 SSN、校园和家庭邮寄地址以及电话号码。图书馆员发行一张带有编号的机器可读卡片,上面印有会员的照片。这张卡可以用四年。卡到期前一个月,会向会员发送更新通知。该研究所的教授被认为是自动成员。当一名新教员加入研究所时,他或她的信息会从员工记录中提取出来,并将一张借书证邮寄到他或她的校园地址。教授可以每隔三个月检查一次书籍,并有两周的宽限期。给教授的续约通知会发送到他们的校园地址。

图书馆不借出一些书籍,如参考书、善本、地图等。图书馆员必​​须区分可以借出的书和不能借出的书。此外,图书馆员还列出了一些他们有兴趣获得但无法获得的书籍,例如稀有或绝版的书籍以及丢失或毁坏但尚未更换的书籍。图书馆员必​​须有一个系统来跟踪无法借出的书籍以及他们有兴趣获得的书籍。有些书可能有相同的标题;因此,标题不能用作识别手段。每本书都有其国际标准书号 (ISBN),这是分配给所有书籍的唯一国际代码。如果两本书使用不同的语言或具有不同的装订(精装或平装),则具有相同标题的两本书可以具有不同的 ISBN。同一本书的版本具有不同的 ISBN。建议的数据库系统必须设计为跟踪成员、书籍、目录和借阅活动。

绘制图书馆数据库的 EER 图。

**我的问题:1)主要实体是书籍,员工,会员,借阅。借用和会员之间的关系是什么?

2)“图书馆活跃会员的定义是在一年中至少借书十次的人。前1%的会员借阅15%,前10%的会员借阅40% 。” 是否有必要对会员和活跃会员进行建模?

3)员工和借款之间的关系是一对多对吗?

4)谁会为会员发送通知。我们可以认为它是工作人员吗?**

5)借款与员工的关系是什么?我认为工作人员需要检查规则。

0 投票
1 回答
221 浏览

sql - 使用 DB、SQL:表“继承”分离决策

假设我有一个数据库,其中一个实体(即表)从另一个实体继承,例如:

  • Table 1,命名person(name,surname)
  • Table 2, 命名car_owner

在这种情况下,car_owner 继承person,即 a car-owner ISa person。我现在必须决定是否应该:

  1. 创建表car_owner,即使它除了 in 之外没有额外的列person,尽管将来这可能会改变 => 这样做会导致car_owner= table with columns (id,person_id),在person_id哪里FKperson

或者

  1. 现在只留下person表格,只做(1) when/if关于 a 的额外信息car-owner将出现 => 请注意,如果我这样做,从其他表格FK到 a实际上将是s 到表格car-ownerFKperson

我正在处理的表具有不同的名称和语义,并且(1)(2)之间的选择不清楚,因为car_owner可能永远不会弹出对额外列的需求。

从概念上讲,(1)似乎是正确的选择,但我想我要问的是,如果我改用(2) ,我以后可能会遇到任何严重的问题

0 投票
1 回答
183 浏览

sql-server - 如何解决多个级联路径?

在我的数据库中,我有一个PersonMember表。该Member表有 2 个外键,它们都引用表中的同一列People。约束如下所示:

我得到的错误如下:

Introducing FOREIGN KEY constraint 'FK_Members_People_2' on table 'Members' may cause cycles or multiple cascade paths. Specify ON DELETE NO ACTION or ON UPDATE NO ACTION, or modify other FOREIGN KEY constraints.

我将如何解决这个问题?

基本上这是我想要得到的行为:

  • 当 PersonID 引用的记录被删除时。我需要它来删除其他表中的所有子记录。(有8个子表)
  • 当 EnquiryTakenBy 引用的记录被删除时。我需要将 EnquiryTakenBy 设置为 null。

编辑:表结构如下:

0 投票
0 回答
419 浏览

database - PostgreSQL 类继承 Json

所以使用 Postgres 我可以使用 json-type 列。因此,对于经典的关系数据库,我使用Class Table Inheritance,这似乎很麻烦。相反,我现在可以使用 Postgres 并将我的不同子类序列化为 json 并将它们存储在一个公用表中。

这种方法是否有任何相当大的缺点或者它是否很好用(至少对于“简单”用例)?

0 投票
1 回答
452 浏览

php - Doctrine Class Table Inheritance - 急切加载子类引用

考虑下图: 在此处输入图像描述

在 aUser有多个BlogPost的情况下,anEventBlogPost具有 的属性的类型Venue

我有以下实体类:

我现在想构建一个查询来获取给定的用户事件并急切地加载事件场所。我得到的最接近的是:

这给了我一个相当可预测的错误:

删除对VenueI 的引用会让所有 users 都Event很好,但是我将不得不依赖延迟加载来获取Event's 的其余属性。

我已经看到了我映射Events的建议User

尝试这样做时,生成的 SQL 会尝试执行以下操作:

列在哪里而不是user_id列在哪里,因此出现以下错误:BlogPostEvent

我应该如何映射类表继承引用?正如我所描述的,有没有办法实现急切加载?

我知道我已经从类、它们的映射和生成的 SQL 中省略了一些细节。如果某些细节有助于深入了解这一点,请大喊大叫。

编辑

这不同于具有多对一关系的单表继承 (STI)作为类表继承而不是单表继承。此外,我对子类的属性的细节感兴趣,想象一下在那个例子中Video是否有额外的参考。

0 投票
1 回答
1003 浏览

ruby-on-rails - 没有将 nil 隐式转换为字符串。dbview_cti

我使用dbview_cti gem 来制作类表继承 (CTI)。我有两个类Person(抽象类)和Client(继承Person)。

问题:

当我尝试 makerake db:migrate时,控制台会写入此错误:

模范人物

模型客户端

迁移 create_people

迁移 create_clients

有关错误的更多详细信息:

知道哪里错了吗?

0 投票
1 回答
381 浏览

ruby - Rails 4:如何实现类表继承?

如何在 Rails 4 中正确实现 CTI?我尝试使用dbview_cti但这个 gem 创建了一个具有继承属性的视图,而不是继承的表。我将不胜感激解释和示例。大多数教程都基于 STI。

0 投票
0 回答
315 浏览

ruby-on-rails - 客户端的未定义方法“set_primary_key”

我在使用Class-Table-Inheritance gem 时遇到问题。当我尝试签入控制台时,继承控制台的正确性返回此错误:

NoMethodError:客户端的未定义方法“set_primary_key”(调用“Client.connection”建立连接):类

我为客户端定义了主键,但仍然有错误。

模型客户端

部分迁移文件 CreatePeople

迁移文件 CreateClients 的一部分

如何解决这个问题?

0 投票
1 回答
187 浏览

php - 如何删除子表行但将其父行保留在学说 orm 2 中的类表继承中?

我有两个实体,Item 和 SpecialItem

SpecialItem 扩展了 Item,其中 Item 是具有价格属性的普通购物商品,而 SpecialItem 是具有额外折扣属性的特价商品。

我正在使用类表继承

项目:

特殊物品:

如果我创建了一个 SpecialItem 并将其持久化(现在它在表 item 中有一行,在 table specialitem 中有一行具有折扣值),现在我决定删除折扣,因此特殊项目现在将成为普通项目。

如何仅删除与折扣相关的行而不是整个项目并更改 DiscriminatorColumn 以反映父类型 Item ?

0 投票
1 回答
114 浏览

single-table-inheritance - 我们如何处理具有唯一具有每种类型数据的艺术品类型的数据库模式?

艺术品.jpg

我正在尝试开发艺术品解决方案,但在如何将其编码到数据库模式中时遇到了类别类型问题。我刚刚开始了解父键和外键的概念。

艺术品属于照片、乐谱、绘画、雕塑等类别类型。我所做的是为艺术品创建一个表和一个类别类型表,并将外键链接到主艺术品表。如果照片具有特定或独特的信息,例如照片格式和照片拍摄日期,该怎么办。为了规范这一点,我们是否需要一个单独的表格来容纳照片信息?

如何转换图表模式?请参阅附件的 artifact.jpg 以获取图表。我不仅将艺术作品表链接到类别,每个类别类型还将有一个单独的表来引入独特的信息,例如照片的照片格式、作曲家姓名和乐谱的长度(分钟)。请帮助阐明这一点。谢谢你。