Дизайн базы данных для сайта системы бронирования свадебной фотосъемки

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

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

  • Пользователь может зарегистрироваться на моем сайте, ввести информацию о своей свадьбе и получить собственную «страницу свадебного профиля». Они могут сделать это, не заставляя нас снимать их свадьбу.

  • В любой момент пользователь может заказать встречу, свадьбу или съемку помолвки. Сайт проверит, доступны ли мы. (свадьбы имеют преимущество перед встречами, поэтому клиент, который хочет заказать свадьбу в день, когда у нас будет встреча, встреча будет помечена для переноса)

  • Мы также должны иметь возможность бронировать выходные дни. В эти дни съемка свадьбы/встречи/помолвки не может быть забронирована.

  • стоимость съемок помолвки и первоначальный взнос. В случае свадьбы депозит должен быть внесен в течение 14 дней или дата снова освобождается. Встречи бесплатны.

Я так застрял с тем, как реализовать эту систему. Я просто продолжаю ходить по кругу, лучший способ, который я могу придумать, - это иметь таблицу «даты», которая связывает все остальные таблицы, но я уверен, что это не самый эффективный способ.

Я думаю, что меня отталкивает тот факт, что в один и тот же день может быть несколько свадеб (для людей, которым просто нужен свадебный профиль), но только одна ЗАБРОНИРОВАННАЯ свадьба в день.

Предварительный просмотр таблиц

Так я понял это совершенно неправильно? или я храню все встречи в одной таблице и использую таблицу «тип встречи».

ТАК ТАК Застрял, я надеюсь, что вы можете мне помочь!

P.S. Я пропустил большинство полей, чтобы упростить понимание.


person Lee Mark Smith    schedule 05.08.2014    source источник


Ответы (1)


Держите его простым для начала. Вы определили многие существительные, которые должны соответствовать сущностям:

ПОЛЬЗОВАТЕЛИ СВАДЬБЫ ПОМОЛВКА_СЪЕМКИ ВСТРЕЧИ НЕДОСТУПНЫЕ ДАТЫ ОПЛАТА

Я бы предположил, что WEDDINGS, ENGAGEMENT_SHOOTS, MEETUPS и UNAVAILABLE относятся ко всем типам бронирований. Вы могли бы просто:

ПОЛЬЗОВАТЕЛЬСКИЕ БРОНИРОВАНИЯ — здесь указана дата и, возможно, статус BOOKING_TYPE (свадьба, встреча, помолвка_съемка, недоступно). ПЛАТЕЖИ

Вы можете захотеть объединить все вещи, которые пользователь купил в связи с одной свадьбой, в объект ТРАНЗАКЦИЯ и т. д., что позволит сопоставить один платеж с несколькими бронированиями. Когда один из ваших сотрудников недоступен, у них может быть бронирование типа отпуска и т. Д.

Может быть 2 типа ПОЛЬЗОВАТЕЛЕЙ — ваши фотографы, которым назначено бронирование, и ваш клиент.

В зависимости от статуса бронирования, например. ПОДТВЕРЖДЕНО, ОЖИДАЕТСЯ, ЗАВЕРШЕНО и дата, когда ваша бизнес-логика может отправлять платежные требования, последующие действия и т. д.

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

person kayakpim    schedule 06.08.2014
comment
Привет, спасибо за вклад, это очень ценно. Я думал о том, чтобы сделать это таким образом. Но когда я попытался спроектировать его, я столкнулся с несколькими проблемами. В основном, для свадьбы мне нужно хранить другой набор данных. Например, информация о свадьбе будет включать места, списки гостей, рекомендации по размещению, предложения по подаркам, историю пары и т. д. Так что я предполагаю, что это должно быть сохранено в другой таблице и как-то связано? - person Lee Mark Smith; 06.08.2014
comment
Модель данных предназначена только для эффективного хранения ваших данных и упрощения разработки и поддержки приложения. Вполне возможно предположить, что у клиента всегда будет одна или несколько консультаций, одна или несколько съемок помолвки и как минимум одна свадьба, и вся информация будет вывешена на свадьбе. Это потенциально усложнит задачу, если вы решите в будущем заняться другими видами бизнеса. Если со свадьбой связано так много дополнительных данных, нет причин, по которым она не может иметь свою собственную сущность. - person kayakpim; 07.08.2014
comment
Не раздумывайте с самого начала и не пытайтесь собрать что-то вместе. Читайте о нормальных формах и используйте их в качестве руководства, а не закона. Подумайте, как будут выглядеть экраны ввода и отчеты, и посмотрите, будет ли их возможно/легко реализовать с имеющейся у вас структурой. - person kayakpim; 07.08.2014