本文介绍了如何使行在一对多关系中是唯一的的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有下面张贴的表格。这是一对多的关系。单个站点可以有不同的操作,并且一次在单个站点上应用单个操作。因此,表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
UNIQUE的整个记录,只需将外键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)
);
这篇关于如何使行在一对多关系中是唯一的的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!