我有下面发布的表。这种关系是一对多的。单个站点可能具有不同的操作,并且单个操作一次应用于单个站点。因此表Site
的主键将是表operation
中的外键。但我想要的是,selectedSiteID
、treatmentGeometry
、threshold
、isVisualizeAreaOfCoverage
、isVisualizeAverageHeights
之间的组合表operation
应该是唯一的。换句话说,在表operation
中,分配给列selectedSiteID
、treatmentGeometry
、threshold
、isVisualizeAreaOfCoverage
、isVisualizeAverageHeights
的值应该是唯一且不能重复的。请告诉我怎样才能做到这一点。
表格:
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)
);
由于selectedSiteID
是Site
上的主键,也是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)
);