Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
sql生成表中的自关系_Sql_Postgresql - Fatal编程技术网

sql生成表中的自关系

sql生成表中的自关系,sql,postgresql,Sql,Postgresql,我想建立一个包含文章的数据库,但每篇文章都可以引用相关文章。从一篇文章到另一篇文章,我有一个N:M关系。现在我不知道如何实现它。这就是我想要的: 相关文章: 第1条(整数)、第2条(整数) 主键:{article_number_1,article_number_2} 外键:文章编号1(参考文献:文章),文章编号2(参考文献:文章) 但如何指定article_number_1和article_number_2都引用表article中的article_number?我是这样想的: create ta

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

相关文章:

第1条(整数)、第2条(整数)

主键:{article_number_1,article_number_2}

外键:文章编号1(参考文献:文章),文章编号2(参考文献:文章)

但如何指定article_number_1和article_number_2都引用表article中的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,
)

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

引用之后,您需要一个完整的引用,即
表名(列名)
。在您的示例中,它类似于:

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\u number
是表
article

中的标识符,我猜第二个FK应该在article\u number\u 2上是吗?如果将FK定义作为列定义的一部分,则只能省略列名:
article\u number 1整数引用article,