В концепциях системы базы данных таблица создается с использованием
create table section
(course_id varchar (8),
sec_id varchar (8),
semester varchar (6),
year numeric (4,0),
building varchar (15),
room_number varchar (7),
time_slot_id varchar (4),
primary key (course_id, sec id, semester, year),
foreign key (course_id) references course);
Здесь course_id
уже является первичным ключом в отношении course
, но сначала она объявляется как первичный ключ в section
отношение до объявления его как внешнего ключа. Это избыточно? Вносит ли это какие-либо изменения?
Отношение course
выглядит следующим образом:
create table course
(course_id varchar (7),
title varchar (50),
dept_name varchar (20),
credits numeric (2,0),
primary key (course_id),
foreign key (dept_name) references department);
Также в отношении курса dept_name
, который является внешним ключом не объявляется как первичный ключ в той же таблице.
Итак, мой вопрос:
Хорошо ли объявлять атрибуты внешнего ключа, которые уже являются первичным ключом в ссылочном отношении, первичным ключом в отношении ссылок?
если да, то почему?
edit: синтаксис может быть не подходящим для многих, но так как он из седьмое издание книги, пожалуйста, не обращайте внимания на синтаксис и сфокусируйтесь на главном вопросе, является ли он избыточным или нет? Кроме того, так как это одна из самых классных c книг, я считаю, что должна быть причина, по которой стоит писать подобное.