繁体   English   中英

SQL连接表以将单个表转换为Self

[英]SQL Join Table for Single Table to Self

我正在尝试在Postgres中创建一个表,以表示同一表的行之间的多对多关系。

我有一个名为外套的表(例如外套等),并且我想在外套实例之间建立多对多关系。

我想知道最好的方法是创建一个连接表以对此关系建模,同时考虑到ABBA相同的事实。 到目前为止,我有这个(这只是一个普通的联接表):

CREATE TABLE outerwear_outerwear_join (
    a_outerwear_id integer REFERENCES outerwear,
    b_outerwear_id integer REFERENCES outerwear,
    PRIMARY KEY(a_outerwear_id, b_outerwear_id)
);

但这又不能说明以下事实:翻转列的顺序不应更改行的值/唯一性。

使用leastgreatest函数创建一个UNIQUE INDEX

CREATE UNIQUE INDEX unq_test_a_b 
  ON outerwear_outerwear_join ( LEAST(a_outerwear_id, b_outerwear_id), GREATEST( 
a_outerwear_id, b_outerwear_id)); 

演示版

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM