这个问题在这里已经有答案了:
如何在数据库中表示继承(8个答案)
10个月前关门了。
我在用postgresql实现这个设计时遇到了一个问题
我需要什么
用户
身份证件
名称
用户名
...
组
身份证件
名称
链接
你是公共的吗
...
现在我需要Map到这个
信息
身份证件
发件人\u id
接收器id
...
发件人既可以是用户,也可以是组。对于收件人,这是我的代码
CREATE TABLE "table_a" (
"id" uuid DEFAULT uuid_generate_v4 (),
"name" varchar(32),
"a_val" int,
PRIMARY KEY (id)
);
CREATE TABLE "table_b" (
id uuid DEFAULT uuid_generate_v4 (),
"name" varchar(32),
"b_val" int,
PRIMARY KEY (id)
);
CREATE TABLE "table_z" (
"id" serial PRIMARY KEY,
"p_row" uuid
);
ALTER TABLE "table_z" ADD FOREIGN KEY ("p_row") REFERENCES "table_a"("id");
ALTER TABLE "table_z" ADD FOREIGN KEY ("p_row") REFERENCES "table_b"("id");
1条答案
按热度按时间6tr1vspr1#
以postgresql为例,在一个表中对用户和组进行建模。
如有必要,添加
boolean
属性is_group
或者类似的。check约束可以保证适当的列是
NOT NULL
对于用户和组。