Проектирование отношений сущностей. Преобразование диаграммы в таблицы базы данных в отношении один ко многим

У меня есть диаграмма отношений сущности базы данных со следующими сущностями и их атрибутами:

Flight:
Date (primary key)
Num_available_seats

Reservation:
CustomerName
CustomerPhone

Seat:
SeatNumber (primary key)

Резервирование - это золотая середина между Flight и Seat, Существует связь один-ко-многим между Seat а также Flight (а именно один Flight может иметь много Seatс помощью Reservation).

Разбивая эти отношения на таблицы, потому что это отношение один ко многим, я знаю, что Seat может потреблять Reservation так что не должно быть конкретного Reservation таблица в базе данных.

Тем не менее, мой вопрос заключается в следующем... В таблице для SeatЗнаю поставить первичные ключи Seat а также Flight (SeatNumber а также Date), но я также включаю неосновные атрибуты Reservation отношения?

Вот мои два варианта, с которыми я играюсь:

Seat(SeatNumber, Date)
Seat(SeatNumber, Date, CustomerName, CustomerPhone)

Который правильный? Спасибо за помощь!

2 ответа

Для повышения целостности данных я предложу немного больше ограничений:

По моему мнению, учитывая, что Reservation на самом деле имеет бизнес-данные (например, информацию о клиенте), таблица Reservation должна занимать Seat.

Как это:

Flight:
Date (primary key) 
Num_available_seats

Reservation:
CustomerName
CustomerPhone
SeatNumber
Date (FK from Flight)

соскабливать столик.

Также, если возможно, я бы немного переделал таблицу Flight:

Flight:
FlightId (PK)
Date
AirplaneId (this could be a FK from some Airplane table, if it exists, or simply an identifier for the airplane that makes the flight)
Num_available_seats

Это изменит ваш рассказ о бронировании следующим образом:

Reservation:
CustomerName
CustomerPhone
FlightId (FK)
SeatNumber

Надеюсь, это поможет.

Другие вопросы по тегам