gpt4 book ai didi

mysql - 多对多关系默认为 "all"

转载 作者:行者123 更新时间:2023-11-29 18:06:53 25 4
gpt4 key购买 nike

我必须有表A和B。我还有一个关联表A_B,用于存储表A和B之间的关系。在表A中,有一些记录我想与表B中的所有记录相关联(甚至是以后可以添加)。

假设我有 A1、A2、A3 和 B1、B2 和 B3。

我想要 A1 与 B1 和 B3 相关

A2 与 B1 和 B2 相关

A3 与所有 B 相关

然后 A_B 表将如下所示:

A1, B1
A1, B3
A2, B1
A2, B2
A3, B1
A3, B2
A3, B3

如果我添加 B4,我将需要在 A_B 表中添加一条新记录以将其与 A3 关联。如何在不需要 A_B 表的情况下定义“A3 与所有 B 相关”?我正在考虑在 A 中添加一个标志( bool 值 is_lated_to_all),但我认为它看起来不对(我最终可能会得到数百个 is_lated_to_all = false)

有什么方法可以利用关系来做到这一点吗?

编辑

添加更多上下文:

Table A 存储合作伙伴,Table B 存储网站。有些合作伙伴与特定网站相关,有些合作伙伴与所有网站相关(有些合作伙伴可能与任何网站都不相关)。

最佳答案

如果添加 bool 值,它将不再是传统的多:多映射表。可能 FOREIGN KEYs 将不再起作用。

但是您当然可以为其编写代码 - 但是,您需要有特殊的代码:

if flag is set, do ...
else do ...

这可能会变成两个SELECTUNION。或者它可能会变成别的东西。 (如果不了解这个映射表的用途,我就无法预测。)

同时,那些与没有网站相关的合作伙伴可能可以通过根本不在表中来处理。 (这可能需要第三个 if/then 和/或 UNION。)

关于mysql - 多对多关系默认为 "all",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47757335/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com