SQL Server密钥包含密钥列表

Kub*_*ski 0 sql database sql-server

我有以下代码:

CREATE TABLE SONGS 
( 
       ...
       ISWC VARCHAR(15) PRIMARY KEY
);

CREATE TABLE SESSIONS 
(
       ... 
       RECORDED_SONGS VARCHAR(15),
       FOREIGN KEY (RECORDED_SONGS) REFERENCES SONGS(ISWC)
);
Run Code Online (Sandbox Code Playgroud)

RECORDED_SONGS我想保持ISWCs的会议期间录制了许多歌曲,分隔用逗号.现在我只能存储一个ISWC.我不能改变类型,RECORDED_SONGS因为那样会有不同类型的问题.有可能吗?

Gor*_*off 6

这个评论太长了.

不要将歌曲列表存储在分隔列表中.这是坏的,坏的,坏的,坏的:

  • SQL具有糟糕的字符串处理功能.
  • 您不能声明外键关系.
  • 您无法验证进入字符串的值.
  • SQL有更好的存储列表的方法.

存储它的正确方法是使用联结表,每个会话中每首歌一行:

CREATE TABLE SESSIONSONGS (
   SESSIONID . . .,.
   ISWC VARCHAR(15),
   FOREIGN KEY (ISWC) REFERENCES SONGS(ISWC),
   FOREIGNKEY (SESSIONID) REFERENCES SESSIONS(SESSIONID)
)
Run Code Online (Sandbox Code Playgroud)