0
我對使用主鍵或外鍵時有點困惑。我有兩個表,並且在其中的一些列中,某些列引用的列是其他表中的主鍵。 這裏,他們是:Oracle外鍵或主鍵
CREATE TABLE roles (
movie_id NUMBER(10,0) NOT NULL REFERENCES movies(movie_id),
actor_id NUMBER(10,0) NOT NULL REFERENCES actors(actor_id),
movie_description VARCHAR2(50),
salary NUMBER(10),
CONSTRAINT pk_roles PRIMARY KEY (movie_id, actor_id)
);
CREATE TABLE profits (
movie_id NUMBER(10,0) NOT NULL,
gross_profit NUMBER(9) NOT NULL,
net_profit NUMBER(9) NOT NULL,
CONSTRAINT fk_profits FOREIGN KEY (movie_id) REFERENCES movies(movie_id) ON DELETE CASCADE
);
在我已與在其他表中的列德兩列的複合主鍵的第一個表。這些列恰好是各自表中的主鍵。
在第二個表中,我再次引用了一個外鍵,它引用了另一個表中的主鍵。但最佳做法是什麼?第一個表中的鍵是否應該是外鍵,因爲它引用了其他表中的主鍵?
因此,外鍵約束是主鍵約束的附加內容,並將值限制爲外鍵列中的值?這是否會使「角色」中的「... REFERENCES ...」語句失效,因爲我沒有在那裏創建外鍵? – Amoeba 2013-04-29 16:43:21
您正在「角色」中創建兩個外鍵約束。在'movie_id ... REFERENCES movies(movie_id)'中,您需要電影才能存在,然後才能存儲有關演員在該電影中播放角色的信息。在'actor_id ...參考actor(actor_id)'中,你需要演員存在,然後才能存儲關於演員演奏的電影的信息。這兩種外鍵約束都非常有意義。 – 2013-04-29 18:52:15
我如何獲得上面的利潤表並且執行'movie_id NUMBER(10,0)NOT NULL REFERENCES movies(movie_id)'和約束如'CONSTRAINT pk_profits PRIMARY KEY(movie_id)''會有什麼區別? – Amoeba 2013-04-29 19:33:05