【发布时间】:2021-01-29 16:25:51
【问题描述】:
我正在创建一个多租户应用程序,并将tenant_id 添加到我的租户将访问的所有表中。所有的表也将有一个递增的代理键。我需要声明代理键的唯一约束还是多余的?
CREATE TABLE tenant (
primary key (tenant_id),
tenant_id bigint generated always as identity
);
CREATE TABLE person (
primary key (tenant_id, person_id)
person_id bigint generated always as identity,
tenant_id bigint not null,
unique (person_id), -- Do I need this?
foreign key (tenant_id) references tenant
);
【问题讨论】:
-
person_id应该是表person中的主键。 -
您必须声明约束。虽然“作为身份”似乎表示为键或唯一列,但它没有。它仅表示它仅表示该字段的构建方式以及对其的一些限制。
标签: postgresql primary-key multi-tenant