单表到自身的SQL连接表 [英] SQL Join Table for Single Table to Self

查看:0
本文介绍了单表到自身的SQL连接表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

我有一个名为OutterWare的表(类似于夹克等),并且我希望在OutterWare的实例之间创建多对多关系。

我想知道创建连接表来对此关系建模的最佳方法是什么,并且考虑到AtoBBtoA相同这一事实。到目前为止,我有这样一个表(这只是一个普通的连接表):

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)); 

Demo

这篇关于单表到自身的SQL连接表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆