Пересечение двух таблиц в SQL - PullRequest
0 голосов
/ 06 ноября 2018

По сути, мне нужно создать новую таблицу, которая использует конкретную информацию из двух других таблиц.

Например, у меня есть таблица с именем person с элементами person_id, first_name, last_name, пола, возраста и fav_quote. У меня есть вторая таблица под названием отдел с элементами dept_id, dept_name и building. Теперь мне нужно создать таблицу пересечений с включенными элементами person_id и dept_id. И оба должны быть первичным ключом (который я предполагаю просто означает команду PRIMARY KEY (person_id, dept_id) в моем источнике).

CREATE TABLE person (

person_id INT (8) NOT NULL auto_increment,

first_name VARCHAR (25) NOT NULL,

last_name VARCHAR (25) NOT NULL,

пол VARCHAR (1),

возраст INT (8),

fav_quote TEXT,

ПЕРВИЧНЫЙ КЛЮЧ (person_id)

* * Тысяча двадцать-одина); * * тысяча двадцать две

Отдел CREATE TABLE (

)

dept_id INT (8) NOT NULL auto_increment,

dept_name VARCHAR (25) NOT NULL,

здание VARCHAR (25) NOT NULL,

ПЕРВИЧНЫЙ КЛЮЧ (dept_id)

);

Это код, который у меня есть для исходных двух таблиц. Я просто не уверен, как создать пересечение, и, вернувшись назад к моим заметкам, я не могу найти инструкции, как его написать.

Ответы [ 2 ]

0 голосов
/ 06 ноября 2018

Вы правильно поняли часть первичного ключа. Я бы добавил внешние ключи в вашу существующую таблицу, чтобы предотвратить взаимодействие с людьми или отделами, которые не существуют:

CREATE TABLE person_department
    person_id INT(8) NOT NULL,
    dept_id INT(8) NOT NULL,
    PRIMARY KEY(person_id, dept_id),
    FOREIGN KEY(person_id) REFERENCES person(person_id),
    FOREIGN KEY(dept_id) REFERENCES department(dept_id)
)
0 голосов
/ 06 ноября 2018

Вам нужна таблица с 2 полями; person_id и dept_id. Таблица будет иметь внешние ключи к двум таблицам первичного ключа человека и отдела и комбинированный первичный ключ обоих.

Кроме того, эта таблица необходима только в том случае, если между человеком и отделом существует отношение один ко многим. В противном случае просто добавьте dept_id как внешний ключ лично.

...