在外键中创建具有两个引用的表

时间:2014-12-03 16:54:24

标签: sql database postgresql

CREATE TABLE Album (
    name          VARCHAR(50),
    lenght    FLOAT,
    genre VARCHAR(30),
    nrSongs INT,

    PRIMARY KEY (name, writer),
    FOREIGN KEY (writer) REFERENCES Musician(name) OR Band(name),
    FOREIGN KEY (Studio) REFERENCES Studio(name)

);

好的,这就是我要做的事情,我有两个名为Musician和Band的表,在名为writer的外键中我想使用音乐家或乐队的名字,但这给了我一个OR语句中的错误,您知道实现此方法的正确方法吗?我无法找到它。 谢谢:))

1 个答案:

答案 0 :(得分:1)

不可能。外键是一个表中的一个字段与另一个表中的另一个字段之间的直接链接。它是1:1。在外键定义中不能有n:1,1:n或n:n映射。

另外,您的整体表定义无效。您没有writer字段,因此您的主键和编写器FK无论如何都会失败。

为了这个特殊目的,为什么不让每个人都成为“乐队”。一个独奏艺术家只是一个碰巧有一个成员的乐队。