【发布时间】:2021-05-16 00:05:51
【问题描述】:
请问您是否可以使用约束来设置限制,以便一名成员(clen)只能为一个俱乐部(klub)效力?我的意思是这不会发生,例如: id_member = 1 && id_club = 1; ...., id_member = 1 && id_club = 2; 我在这里所拥有的似乎并不完全适合我,我突然想到它并不能解决这个问题。
ALTER TABLE member ADD CONSTRAINT unq_member_and_club UNIQUE(id_member, id_club);
是否可以通过创建脚本中的完整性约束来解决这个问题,或者是否使用触发器来解决这个问题?我是我的创建脚本的一部分。
架构
创建脚本
CREATE TABLE club (
id_club SERIAL NOT NULL,
nazev VARCHAR(256) NOT NULL,
datum_zalozeni VARCHAR(256) NOT NULL
);
ALTER TABLE club ADD CONSTRAINT pk_club PRIMARY KEY (id_club);
ALTER TABLE club ADD CONSTRAINT uc_club_nazev UNIQUE (nazev);
CREATE TABLE coach (
id_member INTEGER NOT NULL
);
ALTER TABLE coach ADD CONSTRAINT pk_coach PRIMARY KEY (id_member);
CREATE TABLE member (
id_member SERIAL NOT NULL,
id_club INTEGER NOT NULL,
jmeno VARCHAR(256) NOT NULL,
prijmeni VARCHAR(256) NOT NULL,
narodnost VARCHAR(256) NOT NULL,
datum_narozeni VARCHAR(256) NOT NULL
);
ALTER TABLE member ADD CONSTRAINT pk_member PRIMARY KEY (id_member);
CREATE TABLE owner (
id_member INTEGER NOT NULL
);
ALTER TABLE owner ADD CONSTRAINT pk_owner PRIMARY KEY (id_member);
CREATE TABLE player (
id_member INTEGER NOT NULL,
cislo VARCHAR(256) NOT NULL,
post VARCHAR(256) NOT NULL
);
ALTER TABLE player ADD CONSTRAINT pk_player PRIMARY KEY (id_member);
ALTER TABLE coach ADD CONSTRAINT fk_coach_member FOREIGN KEY (id_member) REFERENCES member (id_member) ON DELETE CASCADE;
ALTER TABLE member ADD CONSTRAINT fk_member_club FOREIGN KEY (id_club) REFERENCES club (id_club) ON DELETE CASCADE;
ALTER TABLE owner ADD CONSTRAINT fk_owner_member FOREIGN KEY (id_member) REFERENCES member (id_member) ON DELETE CASCADE;
ALTER TABLE player ADD CONSTRAINT fk_player_member FOREIGN KEY (id_member) REFERENCES member (id_member) ON DELETE CASCADE;
enter code here
enter code here
【问题讨论】:
标签: postgresql foreign-keys relational-database