Можно ли использовать ссылку на таблицу сопоставления «многие ко многим» или лучше использовать явные ФК?
Давайте предположим, что у нас есть некоторая модель «многие ко многим», подобная этой:
CREATE TABLE Project (
id int NOT NULL,
....
PRIMARY KEY(id)
);
CREATE TABLE Programmer (
id int NOT NULL,
....
PRIMARY KEY(id)
);
CREATE TABLE Project_Programmer_Association(
id int NOT NULL,
project_id int,
programmer_id int,
.... (probably some other data)
FOREIGN KEY (project_id) REFERENCES Project (id),
FOREIGN KEY (programmer_id) REFERENCES Programmer(id)
);
CREATE TABLE Task (
id int NOT NULL,
project_programmer_id int,
....
PRIMARY KEY(id),
FOREIGN KEY (project_programmer_id) REFERENCES Project_Programmer_Association(id)
);
В таблицах Project и Programmer есть некоторые данные, необходимые для Задачи, поэтому мне нужны ссылки на обе таблицы.У меня вопрос: стоит ли использовать эту ссылку в Задании
CREATE TABLE Task (
id int NOT NULL,
project_programmer_id int,
....
PRIMARY KEY(id),
FOREIGN KEY (project_programmer_id) REFERENCES Project_Programmer_Association(id)
);
, иначе лучше использовать два явных ключа (исключая отсутствие дополнительного объединения)
CREATE TABLE Task (
id int NOT NULL,
project_id int,
programmer_id int,
....
PRIMARY KEY(id),
FOREIGN KEY (project_id) REFERENCES Project (id),
FOREIGN KEY (programmer_id) REFERENCES Programmer(id)
);