Это похоже на отношение 1-N, где у каждого спортсмена может быть шкафчик от 0 до N.
Вот типичные выражения DDL для этой схемы:
create table athlete (
studentID int primary key,
firstName varchar(50),
lastName varchar(50),
gender varchar(5),
eligibility varchar(50)
);
create table dressingRoom (
lockerNumber int,
studentID int references athlete(studentID),
lockerBuilding varchar(50),
primary key (studentID, lockerNumber)
);
Важная вещь является то, что вам нужен внешний ключ на dressingRoom(studentID )
, который ссылается на athlete(studentID)
.
Если вы хотите, чтобы отношение 1-1 означало, что у каждого учащегося может быть только один шкафчик, то вы можете использовать lockerNumber
как первичный ключ и установите ограничение unique
на studentId
(или наоборот):
create table dressingRoom (
lockerNumber int primary key,
studentID int references athlete(studentID) unique,
lockerBuilding varchar(50),
);
Обратите внимание, что в этом случае нет смысла создавать две таблицы. Вы можете сохранить lockerNumber
непосредственно в athelete
с ограничением unique
:
create table athlete (
studentID int primary key,
firstName varchar(50),
lastName varchar(50),
gender varchar(5),
eligibility varchar(50),
lockerNumber int unique
);