我有以下張貼的表格。這種關系是一對多的。單個站點可以有不同的操作,并且單個操作一次應用于單個站點。因此,表的主鍵Site將是表中的外鍵operation。但我想擁有的是,之間的組合selectedSiteID,treatmentGeometry,threshold,isVisualizeAreaOfCoverage,isVisualizeAverageHeights在表operation應該是unique.in換句話說,在表中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)
);
uj5u.com熱心網友回復:
由于selectedSiteID是在初級Site和外鍵operation你不需要重復treatmentGeometry上operation。你只是整個記錄的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)
);
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/366102.html
標籤:sql PostgreSQL的 邮局
上一篇:按最大日期選擇值
