问题标签 [associative-table]

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 回答
999 浏览

entity-framework - 将附加列添加到联结表后更新 edmx

我首先使用.Net 4.5,实体框架5,数据库。我的数据库中有一个联结(多对多)表。对于这个例子,假设表格是“StudentsCourses”:

这现在工作得很好。“从数据库生成模型”创建一个 Student 实体,该实体具有指向 Course 实体的导航属性。但问题出在这:

我需要在 StudentCourses 表中添加另一列。让我们将此列称为“CourseYear”。所以我们的连接表现在看起来像这样:

因此,我已将此列添加到数据库并在 edmx 上运行“从数据库更新模型”。我希望看到为 StudentCourses 创建的实体,该实体具有指向 Student 和 Courses 的导航属性。但是没有创建这样的实体。我仍然看到与以前具有相同导航属性的两个表(学生和课程)。

我做了很多阅读和研究,但还没有真正找到明确的答案。有大量关于代码优先的信息,我无法应用于我的场景。有没有办法得到我所追求的?是否像在 StudentCourses 表中添加 PkId 一样简单?SQL 复制阻止我这样做。我认为复合材料就足够了,但也许 EF 需要一个 PK 才能发挥它的魔力?我阅读了一些关于手动设置关系的内容,但找不到任何与我的特定情况相关的内容。可能是我在从数据库更新 edmx 的过程中遗漏了一个简单的步骤。我已经这样做了很多次:添加新表,添加列,删除列等。我遵循与往常相同的步骤,

提前感谢您的帮助。非常感谢。如果有更多信息有帮助,请告诉我。

0 投票
1 回答
78 浏览

java - jOOQ 和桥牌桌

我试图想象如何将 jOOQ 与桥接表一起使用。假设你有

使用 jOOQ 映射此模式时,将有三个记录类TableARecordTableBRecordTableBridgeRecord

如果我想通过为 TableA 插入记录来持久化,我是否应该首先创建并持久化 TableB 记录,然后为 TableB 保留行,然后手动添加 TableBridge 行?没有任何方法可以自动保存桥表中的行吗?

0 投票
1 回答
97 浏览

database - SQLAlchemy 测试数据到关联对象

我正在使用 sqlalchemy 构建数据库,我想测试我的模型。即使我阅读了一些主题并浏览了文档,我也不确定我是否了解如何将数据加载到关联表中。我以这种方式创建了两个类:

然后我创建我的会话并刷新它:

现在我如何填充对象/表CustomerInstance,因为它仅由 2 个 ID 组成?我走对了吗?同样的问题,如何将数据注入到 primary_key 是 FK 的表中?

0 投票
1 回答
161 浏览

database - 何时在单个表中使用多个外键与使用关联表?

我试图了解何时将多个外键包含到表中以及何时使用关联表。

编辑:添加了一个图表,希望它更容易理解。

我有一个设置系统,其中许多设置特定于一个部门或分类。因此,例如,“每队人数”之类的设置可能在 Division 1 A 级与 Division 3 A 级不同。“最低分数”在 Division 1 A 级可能与 Division 1 A 级不同C. 显然也有一些设置与我觉得应该在同一个表中的划分或分类无关。

所以我可以做到这一点的一种方法是将 div/类 ID 作为 FK 放在设置表中。然后,任何不依赖于一个或另一个(或任何一个)的设置对于这些 ID 都将为空。

由于只有一种划分、分类和设置键的组合,所以应该可以,对吧?但这种“感觉”在某种程度上是错误的——几乎就像把一个正在参加的不同项目放在竞争对手的桌子上一样。我也不能保证他们不会想出一些他们希望稍后应用设置的其他类别/类型。所以这让我想做类似的事情:

我认为当他们提出一些新类别(只需创建“类别”和“settings_to_categories”表)时,这将允许更轻松的增长。但是我可能会在设置表([id],“min_score”,5)和多个几乎相同的表(id,label,description)中为相关项目提供一整套几乎重复的记录——所有这些都只是为了创建一个独特的设置记录。

那么当他们说他们想要男性和女性的不同设置时会发生什么?我是否只是在设置表中添加一个额外的字段并将“男性”和“女性”字符串硬编码到记录中,除了特定于性别的设置之外的所有地方都为空?或者在事情的另一端,创建一个只有 2 条记录的单独的“性别”表,并在用户表中使用它?突然,我在:

它开始感觉几乎......过度正常化。虽然也许那只是我。

我只是试图巧妙地设计这个,以便即使某些设置适用于所有 Division 3 玩家,当他们告诉我他们需要更多类别并且应用程序对于 Division 3、A 级、绿色类别、Rogue 的行为应该有所不同时,男性玩家与女性玩家,我不必为了轻松获取/设置不同的设置而过多地重新设计我的数据库或应用程序。

我敢肯定这不是一个新概念。这必须是某处公认的设计模式,但是很难尝试寻找方法和方法来处理您可能有 3(或 5 或 8)种不同方式关联单个数据库实体的情况。

我目前倾向于关联表方法(显着规范化),但我并不是真正的 DBA。那么我是否做出了一个愚蠢的设计决定?这种方法的负面/挑战是什么?仍然不同的方法会更好吗?

0 投票
1 回答
108 浏览

php - OneToMany 关系的关联表

我正在开发一个字幕机器人,其中:

  • 一部电影有多个字幕(取决于质量和语言)

  • 一个系列有多个季节,多个剧集有多个字幕(与电影相同)

这些是我的表(感谢DaveRandom):

在此处输入图像描述

问题是,据我所知,关联表用于多对多关系(如果我错了,请纠正我),我有点卡在这里,尤其是使用 Eloquent 的 belongsToMany 方法:

但问题是,A Subtitle 属于ToOne Episode,而 Episode 可能有很多字幕。我想知道如何将关联表用于这种结构。还是我应该改变结构?

0 投票
1 回答
54 浏览

java - 获取 AUTO INCREMENTED 行并将其插入关联表?

我有两个输入:

并且我想在<form>提交时同时执行以下两个 SQL 插入:

SQL 1:插入'Basket Name'到名为'Baskets';的表中

SQL 2 : 将'fruitID'(ie <option value = "01"> Apple </option>) 插入一个名为的关联表中'Baskets_Fruits'

我的表结构:

篮子表:

篮子 ID -> AUTO_INCREMENT int(11),非空

篮子名称-> varchar(255)

BASKETS_FRUITS表:

basketID_FK -> 篮子表中“basketID”的外键

fruitID_FK -> Fruits 表中“fruitID”的外键

水果表:

fruitID_FK -> AUTO_INCREMENT int(11),非空

水果名称-> varchar(255)

basketID_FK如果basketID引用的是AUTO-INCREMENTED ,我如何获得电流?我不太确定如何编写 SQL 语法来获取 AUTO-INCREMENTED 列的值。

编辑:

我是否做类似的事情:

但是"Foo"and"Bar"语法会是什么样子?

0 投票
1 回答
171 浏览

sql - 基于关联表中的主键删除 - 错误

我正在尝试根据 (3) 表中的主键删除 1 条记录。

这是我正在使用的声明

从客户表中删除具有 VISA 的客户的记录。

这是我得到的错误

ORA-02292: 违反完整性约束 (PLATINUMAUTOGROUP.CDRIVERLICENSENUM_FK) - 找到子记录

我猜CDRIVERLICENSENUM是我拥有的第三张表中的外键。我该怎么做?是否可以在 1 个语句中从 3 个表中删除 1 个记录?

这三个表是

0 投票
1 回答
209 浏览

mysql - 插入具有关联实体的多行

我正在处理的项目中遇到问题。

我有一个与 Node.js 脚本一起使用的 MySQL 数据库(感谢mysql npm 包)。

我有两个实体,AB,具有多对多关系。在它们之间,有一个关联实体表,名为Map_A_B。外键在AMap_A_B以及BMap_A_B之间定义。

这是它的样子:

在此处输入图像描述

我面临的问题是当我尝试插入数据(多行)时。因为我正在执行多行的 INSERT,所以我没有每个表的 id 并且无法填充映射表(假设每个A包含 100 个B)。

以前,我没有关联实体表,而是在B内部有一个外键,可以帮助我存储Aid,这很容易做到。但现在,我不能再这样做了。

我之前做过一些研究,使用 JOIN 我可以毫无问题地选择/删除,我只是对这个多行插入有点迷失......

你知道如何解决这个问题吗?

0 投票
1 回答
470 浏览

spring-data-jpa - 嵌套异常是 org.hibernate.AnnotationException: mappedBy reference an unknown target entity property

基于本教程,我正在尝试使用复合键创建多对多关系最终我收到以下错误

复合键本身具有以下结构:

类电影:

用户:

关联表:

0 投票
1 回答
32 浏览

database - 关联表与数据表

我有三个实体(entity_1、entity_2 和 entity_3),每个实体都可以有多个视频,但一个视频只与一个实体相关(一对多)。现在我想知道为此创建数据库模式的最佳实践。

数据表 解决方案 关联表解决方案

具有关联表的解决方案的优点是仅在视频字段发生变化时才维护视频表。缺点是为数据查询增加了额外的JOIN。它还实现了仅用作一对多的多对多关系。

在这种情况下推荐什么(最佳实践)?