Melodic
@Melodic

Какова оптимальная структура таблицы в этом случае?

Т.к. прошлый вопрос был не корректен,создаю новый.
Есть модель Событие(праздник,ярмарка и т.д).
Событие может происходить как в точную дату(единожды) , так и всё время по определённым дням НЕДЕЛИ (день недели может быть не один, к примеру событие происходит субботам и четвергам.).

Т.е. у тех, что происходят в конкретную дату,просто есть поле `date` типа DATE, а у тех что по определённым дням есть 7 полей(monday,tuesday,wednesday и т.д.) типа BOOLEAN. Правильным ли будет объединить все эти поля в одной таблице? Как по мне, не правильно что у события,которое происходит в конкретную дату, будут пустовать 7 полей.

Также события нужно будет выбирать по дате. Например,нужно выбрать сегодняшние события (28.08.2014,четверг). В выборке должны оказаться события которые происходят точно 28.08.2014 и события которые происходят по четвергам.
  • Вопрос задан
  • 2422 просмотра
Пригласить эксперта
Ответы на вопрос 3
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Событие (varchar), дата (timestamp), день-недели (varchar/byte)
Ответ написан
Serhioromano
@Serhioromano
Web Developer
События

- name (varchar)
- description (text)
- month (int) - 1-12 так как любое праздник как правило привязан к месяцу
- type (tinyint(1)) 0-9 types of event date calculations
- rule (varchar) - rule for calculations.

Теперь у нас есть типы. Например в коде определяем тип

1 - regular
Это значит что просто ежемесечно в одну и туже дату каждый год. Значит рул будет 8 а месяц 3 получаем 8 марта ежегодно.

2 - days count
Считаем дни от начала месяца. Например нам нужно второй понедельник в октябре. Значит месяц будет 10 а правило 2:1 где 2 это номер недели а 1 номер дня в неделе.

3 - days
например несколько дней на одной неделе. Понедельник и четверг второй недели сентябра. Значит месяц будет 9 а правило 2:1,4 или с понедельника по четверг 2:1-4 или с понедельнки по четверг и суббота 2:1-4,6

И так далее.

Такой схемой можно будет описать любое повторяющеяся событие в сделать выборку на текущий месяц.
Ответ написан
takovoy
@takovoy
web developer
а в чем проблема создать только по два поля на каждое событие event и dates. В event событие а в dates дни недели по которым оно происходит или даты, как ведь удобнее. зачем же под каждый день отдельно выделять место?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы