を修正するために、私は、このERダイアグラムを持っている: 私はSQLの翻訳を行ってきた、と私はすべての関係をこのように書かれている:PostgreSQLは、トリガー
CREATE DOMAIN origine
AS VARCHAR(6) DEFAULT NULL
CHECK (value ='upload' or value = 'link');
CREATE TABLE progetto.Utente (
ID_Utente VARCHAR(4) check (ID_Utente like ‘U%’),
PRIMARY KEY (ID_Utente),
Username VARCHAR(20) NOT NULL UNIQUE
);
CREATE INDEX progetto.IDX_Utente_ID_Utente
ON progetto.Utente (ID_Utente);
CREATE TABLE progetto.Bacheca (
ID_Bacheca VARCHAR(4) check (ID_Bacheca like ‘B%’),
ID_Proprietario VARCHAR(4) NOT NULL,
PRIMARY KEY (ID_Bacheca),
FOREIGN KEY (ID_Proprietario) references progetto.Utente (ID_Utente)
on update cascade
on delete cascade,
Titolo VARCHAR(20) NOT NULL,
N_follower INT
);
CREATE TABLE progetto.Immagine (
ID_Img VARCHAR(4) check (ID_Img like ‘I%’),
PRIMARY KEY (ID_Img),
Origine origine,
Descrizione VARCHAR(20) default NULL,
Bacheca VARCHAR(4) NOT NULL,
FOREIGN KEY (Bacheca) references progetto.Bacheca (ID_Bacheca)
on update cascade
on delete cascade,
Possessore VARCHAR(4) NOT NULL,
FOREIGN KEY (Possessore) references progetto.Utente (ID_Utente)
on update cascade
on delete cascade
N_pin INT NOT NULL,
N_like INT NOT NULL,
N_preferiti INT NOT NULL,
ID_Preferito VARCHAR (20) NOT NULL
FOREIGN KEY (ID_Preferito) references progetto.Utente (ID_Utente)
on update cascade
on delete cascade
);
CREATE TABLE progetto.Topic (
ID_topic VARCHAR(4) check (ID_topic like ‘T%’),
PRIMARY KEY (ID_topic),
Nome VARCHAR(20) NOT NULL
);
CREATE TABLE progetto.Correlazione (
Immagine VARCHAR(4) NOT NULL,
FOREIGN KEY (Immagine) references progetto.Immagine (ID_Img)
on update cascade
on delete cascade,
Topic VARCHAR(20) NOT NULL,
FOREIGN KEY (Topic) references progetto.Topic (ID_topic)
on update cascade
on delete cascade,
PRIMARY KEY (Immagine, Topic)
);
CREATE TABLE progetto.Pin (
Utente VARCHAR(4) NOT NULL,
FOREIGN KEY (Utente) references progetto.Utente (ID_Utente)
on update cascade
on delete cascade,
Immagine VARCHAR(20) NOT NULL,
FOREIGN KEY (Immagine) references progetto.Immagine (ID_Img)
on update cascade
on delete cascade,
PRIMARY KEY (Utente, Immagine)
);
CREATE TABLE progetto.Likes (
Utente VARCHAR(4) NOT NULL,
FOREIGN KEY (Utente) references progetto.Utente (ID_Utente)
on update cascade
on delete cascade,
Immagine VARCHAR(20) NOT NULL,
FOREIGN KEY (Immagine) references progetto.Immagine (ID_Img)
on update cascade
on delete cascade,
PRIMARY KEY (Utente, Immagine)
);
CREATE TABLE progetto.FollowBacheca (
Utente VARCHAR(4) NOT NULL,
FOREIGN KEY (Utente) references progetto.Utente (ID_Utente)
on update cascade
on delete cascade,
Bacheca VARCHAR(4) NOT NULL,
FOREIGN KEY (Bacheca) references progetto.Bacheca (ID_Bacheca)
on update cascade
on delete cascade,
PRIMARY KEY (Utente, Bacheca)
);
CREATE TABLE progetto.FollowUtenti (
Follower VARCHAR(4),
FOREIGN KEY (Follower) references progetto.Utente (ID_Utente)
on update cascade
on delete cascade,
Followed VARCHAR(4),
FOREIGN KEY (Followed) references progetto.Utente (ID_Utente)
on update cascade
on delete cascade,
PRIMARY KEY (Follower, Followed)
);
CREATE TABLE progetto.Affinità (
Topic1 VARCHAR(4) NOT NULL,
FOREIGN KEY (Topic1) references progetto.Topic (ID_topic)
on update cascade
on delete cascade,
Topic2 VARCHAR(4) NOT NULL,
FOREIGN KEY (Topic2) references progetto.Topic (ID_topic)
on update cascade
on delete cascade,
PRIMARY KEY (Topic1, Topic2)
);
注:イタリックの属性があります外部キー、太字主キー。
- Utente(ID_Utente、ユーザー名)
- Bacheca(ID_Bacheca、ID_Proprietario、Titolo、N_follower)
- イマジン(ID_img、原産地、する説明、Bacheca、Possessore、N_pin、N_like、N_preferiti、ID_Preferito)原点∈{UPLOAD、LINK} De scrizioneトピック(ID_topic、ノーム)
- Correlazione(イマジン、トピック)
- ピン(Utente、イマジン)
- いいね!(Utente、
- NULLとすることができますイマジン)
- FollowBacheca(Utente、Bacheca)
- FollowUtenti(フォロワーは、今、私は問題を持っている)
- Attinenza(Topic1、Topic2)
を追いました。私は、 "Immagine"のOrigineが "link"の場合にのみ、それが削除されることを "Utente"(User)が "Immagine"のRelationhip "Possesso"で削除した場合に削除したいと思います。
私はトリガーを使用する必要があると思いますが、それを行う人は書き込めません。 提案がありますか?
PS:イタリア語の名前は申し訳ありません。
Mmが...それはその作業です。 「Immagine」がUtenteとの「ピン」関係に入ってはいけないという保証を追加したいのですが? – user3004162
「ピン関係にない」とはどういう意味ですか? 'N_pin'は数値です。 'N_pin = 0'、そうでなければ削除しないという意味ですか? – Patrick
NOT ピン(有効、イマジン) – user3004162