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

c# - 省略联结表,如何插入一行而不查询数据库中该行引用的实体?

假设我们有一个简单的模式:

在早期版本的 EF 中,我记得连接表被添加到模型中(或者它可能总是被省略,我正在考虑一个有额外列的表)。在 EF 6 中,表格被省略,模型如下所示:

英孚模型

有没有办法在不首先查询数据库以获得适当的实体的情况下向联结表添加行?例如,如果我想创建一个新项目,我可能会从前端获取一个员工 ID 列表;我必须查询数据库以获取员工,然后将它们添加到项目的员工集合中,然后再次访问数据库进行保存。有没有办法只调用一次数据库就可以做到这一点?

更新

这是我要解决的示例(伪代码):

如果模型中存在连接表,我可以简单地执行以下操作:

0 投票
1 回答
99 浏览

php - 从联结表中选择一定数量的行

我有 3 张桌子:

有27个类别,每个商店至少有一个类别。cat_store 是联结表。我想要实现的是按字母顺序获取所有类别的列表,并在每个类别名称下按名称列出前 10 个访问过的商店。像这样的东西:

目前我有一个包含所有类别名称的数组。然后在一个 foreach 循环中,我得到每个类别的商店。这意味着 28 个查询。

有没有办法用更少的查询来实现这一点?

提前致谢!PS请原谅我的英语不好。

0 投票
1 回答
598 浏览

mysql - MySQL 连接表外键

我有几个表:companycustomercompany_has_customertransaction

company_has_customer是一个多对多联结表,使用companycustomer作为其 PK。

在整个数据库的几乎所有情况下,companycustomer都用于标识一条记录(例如在transaction表中)。

我的问题是我是否应该在transaction表中创建外键以分别指向company_has_customer或指向两个表(company, customer)?

我认为,最好将这些 FK 发送到参照完整性,company_has_customer以确保transaction仅在公司与客户之间存在关系时才插入记录。是否有任何标准或约定来支持我的预感?

0 投票
2 回答
2956 浏览

mysql - 将值插入到从父表引用的子表中

我昨晚整晚都在试图破解这个但没有运气,所以我希望你们能提供帮助,因为我完全没有想法:

我有两个父表,我想从中填充一个 Junction 表:

新娘:

教堂:


我试图通过间接引用每个父表中的唯一名称来填充连接表婚姻的 ID 变量。此外,我希望包括MarriedName确定新娘是否不止一次结婚:

婚姻:

我正在尝试执行以下伪代码之类的操作(尽管我很确定这无论如何都不是明智的做法,因为有这么多子查询必须很慢):

您的任何帮助/见解/更正将不胜感激!

0 投票
1 回答
360 浏览

php - Php Yii 与连接表的关系

在我的项目中的一个视图中,我需要显示使用来自两个表的数据的表,但其中一个是连接表。

我有两张表UserSkill。这两者之间的关系是多对多的,所以我创建了联结表StudentSkills

这个联结表不仅像往常一样具有id_userid_skill,而且还具有对于给定的一对 id 唯一的百分比值 - 这就是为什么它在联结表中的原因,即使您不应该将其他任何东西放在那里作为一个好的做法。

在视图中的所述表中,我需要显示包含来自技能表的名称和来自证书用户的StudentSkills联结表的百分比的行。

这是我的看法:

这是我在 Skill $model 中的搜索和关系:

当我尝试渲染页面时出现错误:Trying to get property of non-object

我知道我的代码有问题,很可能与关系有关,但我找不到任何东西。

有人可以帮助解决这个问题而不必创建新表吗?

谢谢

0 投票
2 回答
1749 浏览

mysql - MySQL多对多:插入表然后插入联结表?

我有 3 个表personsplacesperson_place

每个人可以有很多喜欢的地方,就像每个地方可以被很多人/人“喜欢”一样。

假设用户喜欢一个新地方(通过某个网页)。

我应该如何插入新地点然后获取它的 id 以添加 person_place 行?

谢谢你。

0 投票
1 回答
111 浏览

many-to-many - 代理键的正确使用?

假设一个特定的国家有很多景点(纪念碑、公园、博物馆),当然一个特定的景点可以存在于许多州。

就逻辑 ERD 模型而言,M:N 关系之间应使用联结表。

但是,简单地使用两个相邻表的 PK 作为连接表的 PK 就足够了吗?

也就是说,您有一个 COUNTRY、SIGHTS 和 SIGHT_TYPE 表,其中 SIGHTS 是联结表。假设一个特定的国家可以有多个博物馆(即 MUSEUM 是一个 SIGHT_TYPE),这意味着 SIGHTS 表中的每条记录都不能唯一标识,不是吗?

即假设 MUSEUM 的 SIGHT_TYPE_ID 为 2,GERMANY 的 country_id 为 22。对于多个博物馆,如果上述情况属实,您不会发生这种情况吗?22 2 - 博物馆 A 22 2 - 博物馆 B

因此,在这种情况下,使用代理键(例如 SIGHT_ID)作为唯一标识符是绝对必要的吗?

换句话说,通常使用两个相邻表的 PK 作为连接或组合表的 PK,但是这些情况是否例外?

谢谢

0 投票
1 回答
111 浏览

sql - 修改涉及联结表的 SQL 查询的响应

我有两个表链接在这样的联结表中:

我想用他们的用户登录返回所有事件。到目前为止,我做了以下事情SQL request

它返回:

但我希望它返回如下内容:

一行用于一个事件和一个用户登录的数组(或列表)。

所以我的问题是:是否有可能做到这一点SQL以及如何做到这一点?

编辑:我用Postgresql.

0 投票
1 回答
1406 浏览

php - 在联结表中插入值

我在数据库中有三个表:

因为,很多旅行可以有很多地方,所以我有一张如上所述的连接表。

现在,如果用户在行程中插入地点,这些地点将被添加到places表中,并且行程将与trips_places_asc表中的地点相关联。

所以,如果我写这样的查询:

那么,如何在 Junction 或 Association 表中存储trip_id和?我必须触发两个查询吗?请帮忙。place_idtrips_places_asc

注意:关于 SO 的问题有很多,例如this onethis one。但是,他们都没有接受答案,甚至没有接受答案。所以,请不要标记为重复。

0 投票
2 回答
143 浏览

mysql - 外键引用联结表中的所有记录或没有记录

这似乎是一个理想的功能,但我似乎无法弄清楚当外键是主键(复合键)的一部分时我会怎么做。

该表是一个简单的联结表,用于多对多关系引用User.idAccess.id用户有权访问的引用函数:

因此,每个用户和每个访问级别都可以有许多条目。为了简化“超级用户”的操作,我希望有一个NULL值,access这意味着他们可以访问每个页面(这是我能弄清楚如何输入未引用access表中行的值的唯一方法)。问题是 MySQL 不允许将NULL值作为主键的一部分。

是否有解决NULL主键问题的方法,或者是否有另一种方法可以引用外键中的每一行(或无行)?我能想到的唯一其他方法是禁用外键或必须为表中的每个 access.id 添加一行。其中任何一种都是不可取的。