gpt4 book ai didi

java - SQL:多对多解析和交叉实体

转载 作者:搜寻专家 更新时间:2023-10-30 23:04:56 25 4
gpt4 key购买 nike

对于多对多关系,交集表用于将其解析为两个一对多关系。我的问题是我目前有 2 个表,“播放列表”和“歌曲”。每首歌曲出现在多个播放列表中,每个播放列表可以包含多首歌曲。要解决此问题,请添加第三个表“songlog”以解决多对多问题。

我明白了这么多,但是,当涉及到向数据库中添加值时,我有点困惑。例如,我如何使用交集表将一些(例如 4 首)歌曲添加到播放列表中?另外,我将如何添加哪些歌曲在哪个播放列表中的详细信息?我是不是弄错了,这是真正的多对多,还是我完全找错了树?

我很困惑,所以对这个设计领域的清晰和基本的解释可能会有所帮助!非常感谢。

最佳答案

让我们稍微分解一下这个问题。

你有歌曲。

CREATE TABLE Songs
(
SongID int,
SongName varchar(50)
);

您已获得播放列表信息。 (播放列表的名称,创建者等等)。

CREATE TABLE PlaylistDef
(
PlaylistID int,
PlaylistName varchar(50)
);

您有播放列表中的歌曲。歌曲可以在多个播放列表中。

CREATE TABLE Playlist
(
PlaylistID int,
SongID int
);

让我们填充表格:

INSERT INTO Songs
(SongID, SongName)
VALUES
(1, 'A'),
(2, 'B'),
(3, 'C'),
(4, 'D'),
(5, 'E');

INSERT INTO PlaylistDef
(PlaylistID, PlaylistName)
VALUES
(1, 'a'),
(2, 'b');


INSERT INTO Playlist
(PlaylistID, SongID)
VALUES
(1, 1),
(1, 2),
(1, 3),
(1, 4),
(2, 2),
(2, 3),
(2, 4),
(2, 5);

然后您现在可以运行类似这样的程序来查看特定的播放列表。

SELECT * FROM Playlist WITH (NOLOCK) WHERE PlaylistID = 2

它会返回这个:

PLAYLISTID  SONGID
2 2
2 3
2 4
2 5

这有帮助吗?

关于java - SQL:多对多解析和交叉实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27626160/

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