【发布时间】:2017-03-10 20:11:49
【问题描述】:
所以我有一张状态表。
CREATE TABLE public.states(
state_code char(2) NOT NULL
);
我有几种不同的方式将这些州分组到区域中,所以我想出了这个模式:
CREATE TABLE public.region_type (
region_type_name varchar NOT NULL PRIMARY KEY
)
CREATE TABLE public.regions (
region_id serial NOT NULL PRIMARY KEY,
region_type_name varchar NOT NULL ,
region_name varchar NOT NULL,
/* Keys */
CONSTRAINT regions_region_name_unq
UNIQUE (region_name),
CONSTRAINT regions_region_type_fk
FOREIGN KEY (region_type_name)
REFERENCES region_type(region_type_name)
)
CREATE TABLE public.region2state (
region_id int4 NOT NULL,
state_code char(2) NOT NULL
)
现在,这没有给我的一件事是我想保证每个状态只与特定 region_type 的一个区域相关。
例如TX 可以位于“PADD 3”区域(“PADD”类型)和“西南”区域(“内部”类型),但我想保证没有人不小心将 TX 放入 PADD 3 和 PADD 2(均为 PADD 类型)。
我如何保证?
【问题讨论】:
标签: sql database postgresql postgresql-9.4