我是否需要为 `bigint generated always as identity` 声明唯一约束?

Do I need to declare a unique constraint for `bigint generated always as identity`?

我正在创建一个多租户应用程序并将 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
);

table 的主键应该是唯一标识 table 行的最小列集。所以这应该是 person_id,因为它是专门为此目的创建的。

如果您需要加快基于 tenant_id.

的搜索,请在 tenant_id(tenant_id, person_id) 上添加另一个(非唯一)索引