如何使一行在一对多关系中唯一

how to make a row unique in one to many relation

我在下面发布了 tables。这种关系是一对多的。单个站点可以有不同的操作,并且一次要在单个站点上应用单个操作。 因此,table Site 的主键将是 table operation 中的外键。但我想要的是 selectedSiteIDtreatmentGeometrythresholdisVisualizeAreaOfCoverageisVisualizeAverageHeights 之间的组合 table operation 应该是 unique.in 也就是说,在 table operation 中分配给列的值 selectedSiteID,treatmentGeometry,threshold,isVisualizeAreaOfCoverage,isVisualizeAverageHeights 应该是唯一的,不能重复。 请让我知道我怎样才能做到这一点。

tables:

create table if not exists Site(
selectedSiteID text primary key,
treatmentGeometry geometry,
);
create table if not exists operation(
               threshold smallint,
               isVisualizeAreaOfCoverage boolean,
               isVisualizeAverageHeights boolean,
               primary key (threshold,isVisualizeAreaOfCoverage,isVisualizeAverageHeights)
        );

由于 selectedSiteIDSite 上的主键和 operation 上的外键,因此您无需在 operation 上重复 treatmentGeometry。你只是整条记录operation唯一,只要在主键上加上外键site_selectedsite_id

CREATE TABLE Site(
  selectedSiteID text PRIMARY KEY,
  treatmentGeometry geometry
);

CREATE TABLE operation(
  threshold smallint,
  isVisualizeAreaOfCoverage boolean,
  isVisualizeAverageHeights boolean,
  site_selectedsite_id text REFERENCES site(selectedSiteID), 
  PRIMARY KEY (site_selectedsite_id,
               threshold,
               isVisualizeAreaOfCoverage,
               isVisualizeAverageHeights)
);