Как нормализовать схему базы данных - PullRequest
3 голосов
/ 15 февраля 2012

У меня есть две таблицы:

customer (
  client_id(PK), 
  lastname, 
  firstname, 
  flightID (Fk)
)

flight (
  flight_id(PK), 
  flightarrival, 
  flightdepart
)

Мои вопросы:

  • Есть ли проблемы со схемой?
  • Как добавить данные в таблицу рейсов?

Я действительно хочу разделить их, потому что большие таблицы сбивают с толку.

Вот пример "таблицы массива":

customer(
  client_id(PK), 
  lastname, 
  firstname, 
  flightarrival, 
  flightdepart
)

но я хочу нормализовать его, отделить от таблицы клиентов и просто связать их.

Ответы [ 2 ]

4 голосов
/ 15 февраля 2012

Предложенная вами схема будет означать, что каждый клиент может быть связан с одним (не нулевым, не более чем одним) рейсом, что выглядит неправильно.

По сути, я думаю, что у вас есть отношение многие ко многим, что вы можете сделать с тремя таблицами:

customer (id(PK), lastname, firstname)

flight (id(PK), flightarrival, flightdepart)

customer_flight (
    customer_id REFERENCES customer(id),
    flight_id REFERENCES flight(id)
)
1 голос
/ 15 февраля 2012

Вы должны создать отдельную таблицу перекрестных ссылок для нескольких таблиц, которая будет иметь вид:

customer_flights (id int (pk), customer_id int, flight_id int, timecreated (необязательно))

у одного клиента может быть забронировано несколько рейсов, как в прошлом и будущем ...

, а затем присоединиться к двум таблицам на основе записей в этой таблице

...