powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Таблица событий.
9 сообщений из 9, страница 1 из 1
Таблица событий.
    #33173303
vecalion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
День добрый,
имеется следующая задача: создать базу данных для хранения событий (праздники, концерты, кинопоказы, итд.). Для каждого событися будут определены даты начала и завершения (DATE), но проблема в том, что некоторые события могут иметь ТОЛЬКО дату начала (то есть теоретически дата завершения имеется, но никогда не определяется (этакие мгновенные события или события происходящие один день)).
В последствии надо будет производить различные операции с событиями: поиск по дате, сортировка (в том числе и по дате завершения).

Я вижу три решения:
1) Дату завершения оставлять пустой и учитывать это при составлении SELECT'ов (очевидный минус - очень громоздкие запросы)
2) Добавить поле флаг, которое будет отмечать используется ли дата завершения (по сути аналог (1), но чуть упростит запросы).
3) При добавлении событий, если не указана дата завершения - устанавливать ее равной дате начала

Склоняюсь к пункту (3), т.к. в этом случае проблема отсутствия даты завершения никаким образом не отражается на SELECT'ах. Возможно кто-то сталкивался с подобной проблемой и сможет посоветовать лучшее решение?
...
Рейтинг: 0 / 0
Таблица событий.
    #33173368
Leon.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я предпочитаю 3-й вариант, как вы и описали. Так работают многие органайзеры, навскидку -- органайзеры в Siemens'ах.
...
Рейтинг: 0 / 0
Таблица событий.
    #33173809
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для п.3 и заполнения Начало=Конец

А как быть, когда продолжительность в данный момент неизвестна ?
Например коммандировка...
У типов событий нужно оговорить краткосрочное оно или нет. Тогда можно проставить Начало=Конец. Иначе оставлять поле NULL или ставить специальную "заоблачную" дату, например 01-01-2075
...
Рейтинг: 0 / 0
Таблица событий.
    #33173875
Leon.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Конечно, все зависит от решаемой задачи.
Но 3-й вариант мне кажется наиболее предпочтительным. Органайзер предполагает планирование -- даже для командировки надо приблизительно представлять сроки. Бессрочная командировка... брр-р 8-)
...
Рейтинг: 0 / 0
Таблица событий.
    #33173906
vecalion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
LSVДля п.3 и заполнения Начало=Конец

А как быть, когда продолжительность в данный момент неизвестна ?
Например коммандировка...
У типов событий нужно оговорить краткосрочное оно или нет. Тогда можно проставить Начало=Конец. Иначе оставлять поле NULL или ставить специальную "заоблачную" дату, например 01-01-2075

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

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

В данный момент передо мной цель придумать такой способ хранения, чтобы максимально просто получать необходимую информацию (если NULL, заоблачная даты или какой-то флаг, то при запросах нужны будут проверки)
...
Рейтинг: 0 / 0
Таблица событий.
    #33174211
Kezya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кто-то на форуме предлагал для документов сделать флаги: заполнен полностью, не заполнен и т.д.
Может, и для событий подойдет: завершено, длится, не завершено, не начато..
Что-то типа этого
...
Рейтинг: 0 / 0
Таблица событий.
    #33174602
Фотография PVP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vecalionВ данный момент передо мной цель придумать такой способ хранения, чтобы максимально просто получать необходимую информацию (если NULL, заоблачная даты или какой-то флаг, то при запросах нужны будут проверки)
В общем то, значение NULL - это тоже кокретное значение. Оно несет однозначную информацию о том, что у события нет даты завершения. И если такое состояние надо отличать в запросах, то зачем еще дополнительные флаги.

Вариант "Бесконечно большое значение даты завершения" исключает возможность выбора собитий без даты завершения. Это хорошое решение для использования в условиях between DateN and Datek. Что, с другой стороны, равно between DateN and isnull(Datek,01-01-20075)

И еще. А в чем проблема с запросами? В том что бы дописать в условие or DateEnd is null" ? На время выборки это не повлияет. На время составления программ - то же. Может объясните, откуда задача образовалась?
...
Рейтинг: 0 / 0
Таблица событий.
    #33175207
vecalion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PVPИ еще. А в чем проблема с запросами? В том что бы дописать в условие or DateEnd is null" ? На время выборки это не повлияет. На время составления программ - то же. Может объясните, откуда задача образовалась?
Как будет выглядеть в таком случае запрос на выборку событий которые происходят на следующей неделе и сортировку результата по дате завершения (если нет даты завершения, то используется дата начала)? То есть НачалоСобытия < КонецНедели И ЗавершениеСобытия > НачалоНедели, Сортировать По ЗавершениеСобития. Подставлять везде isnull(DateEnd,DateBegin)? Не замедлит ли это запрос (если учесть, что в запросе учавствуют еще объекты, в которых проходят события, категории событий)?
...
Рейтинг: 0 / 0
Таблица событий.
    #33211856
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vecalionЯ вижу три решения:
...

4) При добавлении событий, если не указана дата завершения - устанавливать ее равной очень далеко отстоящей дате в будущем - типа "вечности". Запросы будут писаться на "ура".
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Таблица событий.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]