当我应该使用主键或外键时,我有点困惑。我有两个表,在这两个表中,一些列引用了其他表中的主键列。他们来了:
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
);
在第一个表中,我从引用其他表中的列的两列中创建了一个复合主键。这些列恰好是各自表中的主键。
在第二个表中,我再次创建了一个外键来引用另一个表中的主键。但是什么是最佳实践?第一个表中的键是否也应该是外键,因为它引用了其他表中的主键?