sql制作表中的自我关系

时间:2014-12-04 17:38:17

标签: sql postgresql

我想创建一个包含文章的数据库,但每篇文章都可以参考相关文章。所以我从一篇文章到另一篇文章都有一个N:M的关系。现在我不知道如何实现它。这就是我想要的:

Related_articles:

Article_number_1(整数),Article_number_2(整数)

主键:{article_number_1,article_number_2}

外键:article_number_1(参考:文章),article_number_2(参考:文章)

但是如何指定article_number_1和article_number_2都引用表格文章中的article_number?这就是我的想法:

create table related_articles (
    article_number_1 integer,
    article_number_2 integer,
    primary key(article_number_1, article_number_2),
    foreign key(article_number_1) references article,
    foreign key(article_number_1) references article,
)

现在我知道这两行外键是不正确的,但我不知道如何告诉我的数据库这两个属性指向表文章的相同属性。有人可以提供帮助吗?

1 个答案:

答案 0 :(得分:1)

references之后,您需要一个完整的引用,即table_name(column_name)。在您的示例中,它将类似于:

create table related_articles (
    article_number_1 integer,
    article_number_2 integer,
    primary key(article_number_1, article_number_2),
    foreign key(article_number_1) references article(article_number),
    foreign key(article_number_2) references article(article_number),
)

如果article_number是表article中的标识符。