Представленная схема уже реляционная: dept хранит отделы, staff — сотрудников, а внешний ключ задаёт связь «многие сотрудники — один отдел». Дублировать название отдела в staff не требуется.
Реляционная схема: сотрудники и их отделы
Представленная схема уже реляционная: dept хранит отделы, staff — сотрудников, а внешний ключ задаёт связь «многие сотрудники — один отдел». Дублировать название отдела в staff не требуется.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Преобразуйте представленные таблицы в корректную реляционную структуру.
CREATE TABLE dept (
id INT PRIMARY KEY,
name VARCHAR(100) NOT NULL
);
CREATE TABLE staff (
id INT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
dept_id INT,
FOREIGN KEY (dept_id) REFERENCES dept(id)
);
Ответ
Представленная схема уже реляционная: dept хранит отделы, staff — сотрудников, а внешний ключ задаёт связь «многие сотрудники — один отдел». Дублировать название отдела в staff не требуется.
dept.id и staff.id идентифицируют записи, staff.dept_id ссылается на существующий отдел либо остаётся NULL. Если каждый сотрудник обязательно относится к отделу, добавьте NOT NULL. Политику удаления отдела выбирают явно: запрет удаления при сотрудниках, SET NULL либо бизнес-перенос; CASCADE здесь может неожиданно удалить персонал. Индекс staff(dept_id) полезен для поиска сотрудников отдела. Одинаковые имена сотрудников допустимы и не должны служить ключом связи.