Нормализация базы данных, которая импортируется / экспортируется много - PullRequest
1 голос
/ 07 января 2012

В настоящее время я работаю над системой регистрации событий (в php). Он имеет две основные цели: зарегистрировать гостей онлайн до начала мероприятия и сканировать гостей на месте с помощью сканеров штрих-кода. Для этой системы важно иметь онлайн и автономный сервер, не все события будут иметь доступ к Интернету.

База данных будет много импортироваться / экспортироваться с одного сервера на другой и обратно. Кроме того, одновременно будет происходить несколько событий.

Чтобы объяснить проблему, с которой я столкнулся при разработке этой системы, давайте предположим, что есть два отдельных события (A и B). На онлайн-сервере гости могут зарегистрироваться для этих событий. В какой-то момент времени произойдет событие A, поэтому я должен экспортировать базу данных на автономный сервер для использования на месте. Между тем, гости все еще могут зарегистрироваться в режиме онлайн для проведения мероприятия B. На месте проведения мероприятия A можно зарегистрироваться и для мероприятия A, но не для мероприятия B.

После окончания события A будет практически невозможно импортировать автономную базу данных в оперативную, без какого-либо изменения данных. Я подумал, что у меня есть два варианта схемы базы данных:

  1. Нормализовать полностью: есть таблица гостей со свойством event_id. Все остальные таблицы, зависящие от гостей или событий, будут ссылаться только на первичный ключ гостя и / или события.
  2. Разделение таблиц между событиями: есть столы гостей A_ghest и B_ghest. Все другие таблицы, зависящие от гостей или событий, также будут названы в соответствии с событием.

Импорт и экспорт будут очень просты с выбором 2 (и без изменения данных), но количество таблиц будет расти очень быстро. Это в значительной степени дилемма: нормализовать, но есть трудности с импортом / экспортом. Или разделите таблицы, и количество таблиц будет увеличиваться очень быстро.

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

1 Ответ

0 голосов
/ 07 января 2012

В какой-то момент времени произойдет событие A, поэтому я должен экспортировать базу данных на автономный сервер для использования на месте. Между тем, гости по-прежнему могут зарегистрироваться в режиме онлайн для проведения мероприятия B. На месте проведения мероприятия A можно зарегистрироваться также.

Я хочу быть уверен, что понимаю это. В определенный момент времени вы экспортируете базу данных на автономный сервер для события A. Гости больше не могут регистрироваться для участия в событии A онлайн, но могут регистрироваться только на сайте A. Это правильно? Если это так, то проблем нет, если онлайн-программное обеспечение осведомлено об экспорте.

На мероприятии A вы хотите разрешить гостям регистрироваться на мероприятие B. Это правильно? Потому что, если это так, вам, в конечном счете, придется передавать эти транзакции B обратно в вашу онлайн-базу данных, и, я полагаю, надеюсь, вы не перезапишете B. С двумя или более копиями базы данных у вас нет механизма предотвращения овербукинг.

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

Вы хотите полностью нормализовать базу данных бронирования. Событие A должно иметь копию всей базы данных бронирования, если вы хотите, чтобы люди могли регистрироваться на Событие B или C или D и т. Д. На Событие A.

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

...