本文介绍了如何使行在一对多关系中是唯一的的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有下面张贴的表格。这是一对多的关系。单个站点可以有不同的操作,并且一次在单个站点上应用单个操作。因此,表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。您只需将operationUNIQUE的整个记录,只需将外键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)
);

这篇关于如何使行在一对多关系中是唯一的的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-26 08:56