Проектирование отношений сущностей. Преобразование диаграммы в таблицы базы данных в отношении один ко многим
У меня есть диаграмма отношений сущности базы данных со следующими сущностями и их атрибутами:
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
Надеюсь, это поможет.