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



我有下面发布的表。这种关系是一对多的。单个站点可能具有不同的操作,并且单个操作一次应用于单个站点。因此表Site的主键将是表operation中的外键。但我想要的是,selectedSiteIDtreatmentGeometrythresholdisVisualizeAreaOfCoverageisVisualizeAverageHeights之间的组合表operation应该是唯一的。换句话说,在表operation中,分配给列selectedSiteIDtreatmentGeometrythresholdisVisualizeAreaOfCoverageisVisualizeAverageHeights的值应该是唯一且不能重复的。请告诉我怎样才能做到这一点。

表格

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)
);

最新更新