gpt4 book ai didi

mysql - 多对多数据库设计,第三张表?

转载 作者:可可西里 更新时间:2023-11-01 07:48:13 27 4
gpt4 key购买 nike

我是 MySQL 的初学者,到目前为止我只需要处理“多对一”表链接。我现在需要一个“多对多”链接,但我不确定该怎么做。据我所知,我需要第三张 table 。

基本上我有一张满是公园的表格和一张满是文章链接的表格。在显示单个公园详细信息的网页上,我需要查询以查找该公园的任何附加文章。通常我会在另一个表中使用 park_id 列并使用该列进行链接,但这里的问题是每篇文章都可能链接到许多公园。

示例查询为:

SELECT * FROM tpf_features  
Where park_id = 7

但一篇文章的 park_id 可能为 3、7、13、23。

有人能给我指出正确的方向来建立这种关系并正确查询吗。

谢谢

最佳答案

您应该使用第三个表并关联它们的 ID:(仅使用 id 创建表)

Create table parks( 
park_id integer,
primary key (park_id)
);

Create table articles(
article_id integer,
primary key (article_id)
);

CREATE TABLE cross_table(
article_id integer,
park_id integer,
Primary Key (article_id,park_id),
Foreign Key (article_id) REFERENCES articles(article_id),
Foreign Key (park_id) REFERENCES parks(park_id)
);

然后,当您想查找有关与公园相关的文章的信息时,您会这样做:

SELECT a.* 
FROM cross_table c, articles a
WHERE c.article_id = a.article_id
AND c.park_id = 7;

这将返回与 park_id = 7 相关的所有文章的所有信息。

主键,确保每篇文章都有一个唯一的id,每个公园都有一个唯一的id,并且它们在cross_table中只关联一次。

关于mysql - 多对多数据库设计,第三张表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18006680/

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