我有两张桌子;一种用于存储thing,一种用于存储relationship两个thing对象之间的。
认为:
AB == BA. 存储两者都是多余的A != B. 一个thing与自身的关系是没有用的AB是昂贵但幂等的CREATE TABLE thing (
id INT PRIMARY KEY
);
CREATE TABLE relationships (
thing_one INT REFERENCES thing(id),
thing_two INT REFERENCES thing(id),
relationship INT NOT NULL,
PRIMARY KEY (thing_one, thing_two),
CHECK (thing_one != thing_two)
);
Run Code Online (Sandbox Code Playgroud)
为了确保我们不会INSERT AB和BA:
CREATE UNIQUE INDEX unique_pair_ix
ON relationships (
least(thing_one, thing_two),
greatest(thing_one, thing_two)
);
Run Code Online (Sandbox Code Playgroud)
是否有比示例更好或更有效的方法来存储/建模此数据? …