Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Таблица событий.
|
|||
|---|---|---|---|
|
#18+
День добрый, имеется следующая задача: создать базу данных для хранения событий (праздники, концерты, кинопоказы, итд.). Для каждого событися будут определены даты начала и завершения (DATE), но проблема в том, что некоторые события могут иметь ТОЛЬКО дату начала (то есть теоретически дата завершения имеется, но никогда не определяется (этакие мгновенные события или события происходящие один день)). В последствии надо будет производить различные операции с событиями: поиск по дате, сортировка (в том числе и по дате завершения). Я вижу три решения: 1) Дату завершения оставлять пустой и учитывать это при составлении SELECT'ов (очевидный минус - очень громоздкие запросы) 2) Добавить поле флаг, которое будет отмечать используется ли дата завершения (по сути аналог (1), но чуть упростит запросы). 3) При добавлении событий, если не указана дата завершения - устанавливать ее равной дате начала Склоняюсь к пункту (3), т.к. в этом случае проблема отсутствия даты завершения никаким образом не отражается на SELECT'ах. Возможно кто-то сталкивался с подобной проблемой и сможет посоветовать лучшее решение? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2005, 13:03 |
|
||
|
Таблица событий.
|
|||
|---|---|---|---|
|
#18+
Я предпочитаю 3-й вариант, как вы и описали. Так работают многие органайзеры, навскидку -- органайзеры в Siemens'ах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2005, 13:23 |
|
||
|
Таблица событий.
|
|||
|---|---|---|---|
|
#18+
Для п.3 и заполнения Начало=Конец А как быть, когда продолжительность в данный момент неизвестна ? Например коммандировка... У типов событий нужно оговорить краткосрочное оно или нет. Тогда можно проставить Начало=Конец. Иначе оставлять поле NULL или ставить специальную "заоблачную" дату, например 01-01-2075 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2005, 15:18 |
|
||
|
Таблица событий.
|
|||
|---|---|---|---|
|
#18+
Конечно, все зависит от решаемой задачи. Но 3-й вариант мне кажется наиболее предпочтительным. Органайзер предполагает планирование -- даже для командировки надо приблизительно представлять сроки. Бессрочная командировка... брр-р 8-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2005, 15:36 |
|
||
|
Таблица событий.
|
|||
|---|---|---|---|
|
#18+
LSVДля п.3 и заполнения Начало=Конец А как быть, когда продолжительность в данный момент неизвестна ? Например коммандировка... У типов событий нужно оговорить краткосрочное оно или нет. Тогда можно проставить Начало=Конец. Иначе оставлять поле NULL или ставить специальную "заоблачную" дату, например 01-01-2075 Если продолжительность неизвестна в данный момент, то дату завершения можно поставить когда будет известна продолжительность. Это вопрос интерфейса для ввода информации. Если мы ставим заоблачную дату то это будет "вечное" событие, и для любого запроса о событиях в будущем мы будем видеть это событие... В данный момент передо мной цель придумать такой способ хранения, чтобы максимально просто получать необходимую информацию (если NULL, заоблачная даты или какой-то флаг, то при запросах нужны будут проверки) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2005, 15:45 |
|
||
|
Таблица событий.
|
|||
|---|---|---|---|
|
#18+
Кто-то на форуме предлагал для документов сделать флаги: заполнен полностью, не заполнен и т.д. Может, и для событий подойдет: завершено, длится, не завершено, не начато.. Что-то типа этого ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2005, 17:23 |
|
||
|
Таблица событий.
|
|||
|---|---|---|---|
|
#18+
vecalionВ данный момент передо мной цель придумать такой способ хранения, чтобы максимально просто получать необходимую информацию (если NULL, заоблачная даты или какой-то флаг, то при запросах нужны будут проверки) В общем то, значение NULL - это тоже кокретное значение. Оно несет однозначную информацию о том, что у события нет даты завершения. И если такое состояние надо отличать в запросах, то зачем еще дополнительные флаги. Вариант "Бесконечно большое значение даты завершения" исключает возможность выбора собитий без даты завершения. Это хорошое решение для использования в условиях between DateN and Datek. Что, с другой стороны, равно between DateN and isnull(Datek,01-01-20075) И еще. А в чем проблема с запросами? В том что бы дописать в условие or DateEnd is null" ? На время выборки это не повлияет. На время составления программ - то же. Может объясните, откуда задача образовалась? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2005, 19:57 |
|
||
|
Таблица событий.
|
|||
|---|---|---|---|
|
#18+
PVPИ еще. А в чем проблема с запросами? В том что бы дописать в условие or DateEnd is null" ? На время выборки это не повлияет. На время составления программ - то же. Может объясните, откуда задача образовалась? Как будет выглядеть в таком случае запрос на выборку событий которые происходят на следующей неделе и сортировку результата по дате завершения (если нет даты завершения, то используется дата начала)? То есть НачалоСобытия < КонецНедели И ЗавершениеСобытия > НачалоНедели, Сортировать По ЗавершениеСобития. Подставлять везде isnull(DateEnd,DateBegin)? Не замедлит ли это запрос (если учесть, что в запросе учавствуют еще объекты, в которых проходят события, категории событий)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2005, 10:59 |
|
||
|
|

start [/forum/topic.php?fid=32&fpage=150&tid=1545732]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
41ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
| others: | 266ms |
| total: | 387ms |

| 0 / 0 |
