|
|
|
хранение информации о часах работы
|
|||
|---|---|---|---|
|
#18+
задали задачку - как лучше хранить информацию о часах работы магазинов? в одной таблице - 14 колонок - время открытия и закрытия? или как-то по-другому? график работы может различаться каждый день, необходимо реализовывать любые выборки чтобы знать работает магазин в любой час любого дня недели ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2008, 20:59 |
|
||
|
хранение информации о часах работы
|
|||
|---|---|---|---|
|
#18+
14 колонок - время открытия и закрытия что мешает сделать без всяких хитростей, прямо так, как фактически представлены данные, м? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2008, 21:29 |
|
||
|
хранение информации о часах работы
|
|||
|---|---|---|---|
|
#18+
периодом в каждой колонке? а как тогда делать выборки? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2008, 04:47 |
|
||
|
хранение информации о часах работы
|
|||
|---|---|---|---|
|
#18+
z-indexпериодом в каждой колонке? а как тогда делать выборки? Вам предложили отказаться от 14 колонок достаточно 4х - магазин, день недели, время начала, время окончания. Выборки - самое милое дело ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2008, 06:42 |
|
||
|
хранение информации о часах работы
|
|||
|---|---|---|---|
|
#18+
z-indexзадали задачку - как лучше хранить информацию о часах работы магазинов? таблица регулярных часов (для не круглосуточных магазинов у которых время смены укладывается в один день) в простейшем случае WeekDayID - номер дня недели - он-же АйДи записи о режиме работы в этот день (>0 and <8) OpenAt - время открытия (после 00:00 определенного дня) ClloseAt - время закрытия (до 00:00 того-же самого дня) можно указывать продолжительность - вместо времени закрытия + таблица эксепшенов - переносов есл требуются ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2008, 08:51 |
|
||
|
хранение информации о часах работы
|
|||
|---|---|---|---|
|
#18+
proposed amendmentWeekDayID - номер дня недели - он-же АйДи записи о режиме работы в этот день (>0 and <8) Расскажете, как в таком случае описать типовой график "с 10 до 14 и с 15 до 21"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2008, 12:54 |
|
||
|
хранение информации о часах работы
|
|||
|---|---|---|---|
|
#18+
z-indexкак лучше хранить информацию о часах работы магазинов? Примерно так (набрано на ходу, так что не поручусь за отсутствие мелких недостатков): Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2008, 13:30 |
|
||
|
хранение информации о часах работы
|
|||
|---|---|---|---|
|
#18+
softwarer, да ваше предложение ближе к истине, спасибо! возьму его за основу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2008, 13:33 |
|
||
|
хранение информации о часах работы
|
|||
|---|---|---|---|
|
#18+
Расписание, позволяет по определённым правилам создавать график работы. Но график работы можно создать не подчиняясь какому либо расписанию. Т.е. часы работы магазинов можно задать просто в таблице (магазин, начало_периода, режим_работы). Где режим_работы определяет, в каком режиме работает (или не работает) магазин вплоть до его ликвидации, начало_периода - дата и время перехода на определённый режим работы. Такую таблицу удобно заполнять с помощью расписания, а потом по мере надобности корректировать вручную. Для выборок из этой таблицы не нужны хранимые процедуры. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2008, 14:28 |
|
||
|
хранение информации о часах работы
|
|||
|---|---|---|---|
|
#18+
Насколько я понимаю, 8.00-19.00 означает, что в 8.00 магазин уже открыт, а в 19.00 - уже закрыт. Вопрос: как представить круглосуточно работающий магазин? Второй вопрос - вещи типа "Второй вторник месяца - санитарный час с 8 до 9" - видимо, тоже нужно учитывать? Ну, и третий - "31 декабря наш магазин работает до 23.00" ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2008, 14:50 |
|
||
|
хранение информации о часах работы
|
|||
|---|---|---|---|
|
#18+
mcureenabРасписание, позволяет по определённым правилам создавать график работы. Но график работы можно создать не подчиняясь какому либо расписанию. Можно, но мне кажется, в этой задаче не имеет смысла. Я затрудняюсь представить себе задачу, для которой подобная материализация будет иметь смысл, отличный от сжирания кучи места на диске. mcureenabДля выборок из этой таблицы не нужны хранимые процедуры. Для выборок из нарисованной тоже не нужны. Я оформил функцию для того, чтобы топикстартеру было легче понять логику. Если предположить, что это расписание будет использоваться в прорве запросов и писать несколько строк в каждом лениво - я бы, наверное, оформил вьюху (тот самый график работы, о котором Вы говорите выше, но не материализованный). Cane Cat Fisher Я так понял, что Вы спрашиваете непосредственно автора, пропустив нижележащую беседу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2008, 15:10 |
|
||
|
хранение информации о часах работы
|
|||
|---|---|---|---|
|
#18+
softwarer mcureenabРасписание, позволяет по определённым правилам создавать график работы. Но график работы можно создать не подчиняясь какому либо расписанию. Можно, но мне кажется, в этой задаче не имеет смысла. Я затрудняюсь представить себе задачу, для которой подобная материализация будет иметь смысл, отличный от сжирания кучи места на диске. Это как дополнение, чтобы решение выглядело целостным, тем более, что следом уже появились вопросы, как внести в расписание исключения. softwarer mcureenabДля выборок из этой таблицы не нужны хранимые процедуры. Для выборок из нарисованной тоже не нужны. Я оформил функцию для того, чтобы топикстартеру было легче понять логику. Если предположить, что это расписание будет использоваться в прорве запросов и писать несколько строк в каждом лениво - я бы, наверное, оформил вьюху (тот самый график работы, о котором Вы говорите выше, но не материализованный). ИМХО, с вьюхой как бы не очень складывается, или я просто пытаюсь решать слишком сложную задачу. Проблема в том, что функция возвращает режим работы магазина на момент времени, однако построить график работы магазина на месяц с помощью view ИМХО, не так просто, и даже чтобы реализовать функцию в виде представления придётся как то передавать в него дату (дело не хитрое, но всё же). В общем график работы магазина, это не совсем расписание работы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2008, 22:54 |
|
||
|
хранение информации о часах работы
|
|||
|---|---|---|---|
|
#18+
Я предпочитаю иметь таблицу с плановым графиком работы на каждую дату, автоматически заполняемую на основе нескольких алгоритмов или вручную корректируемую. Заполнять ее , к примеру, на год. Разложив все по конечным датам, в итоге, проблем меньше получается чем возни с периодами (которые как правило приходится потом все равно раскладывать). ...Вводить таблицу исключений по-моему здесь лишнее (это ведь не график работы сотрудника, где нужно сопоставлять план с фактом). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2008, 10:06 |
|
||
|
хранение информации о часах работы
|
|||
|---|---|---|---|
|
#18+
mcureenabпостроить график работы магазина на месяц с помощью view ИМХО... Мне кажется самое типовое решение - это иметь вспомогательную таблицу дат на 20 лет и таблицу графика работы. В таблицу графика работы заносятся записи относящиеся только к дням когда магазин работает. Итоговый график работы за период получается путем объединения вспомогательной таблицы дат и таблицы графика работы. Здесь кусочек для графика работы сотрудника, но суть не меняется: Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2008, 10:14 |
|
||
|
хранение информации о часах работы
|
|||
|---|---|---|---|
|
#18+
softwarer Cane Cat Fisher Я так понял, что Вы спрашиваете непосредственно автора, пропустив нижележащую беседу. Второй и третий вопросы, действительно, относятся скорее к постановке задачи. А вот по круглосуточно работающему магазину хотелось бы поговорить с Вами. Я не могу понять, удастся ли его адекватно представить в рамках предложенной таблицы Schedule и функции Is_Shop_On? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2008, 10:14 |
|
||
|
хранение информации о часах работы
|
|||
|---|---|---|---|
|
#18+
Cane Cat FisherЯ не могу понять, удастся ли его адекватно представить в рамках предложенной таблицы а почему бы нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2008, 10:49 |
|
||
|
хранение информации о часах работы
|
|||
|---|---|---|---|
|
#18+
BULK INSERT Cane Cat FisherЯ не могу понять, удастся ли его адекватно представить в рамках предложенной таблицы а почему бы нет? Ну так предложите, и обсудим. Суть моих сомнений в том, что, во-первых, в function Is_Shop_On, в строке 8 and p_time between time_from and time_to between нужно заменить на оператор, исключающий равенство с time_to, потому что between охотно пропустит нас в магазин "8.00-19.00" ровно в 19.00, что неверно (см. мое первое письмо, где я предположил, что "8.00-19.00" означает "в 8.00 уже работаем, в 19.00 уже закрыты"). А во-вторых, круглосуточную работу не удастся представить напрашивающися диапазоном "0.00-23.59.59", потому что время - величина непрерывная, и всегда останется возможность вломиться в такой магазин в 23.59.59.99 и получить несправедливый отлуп. Я, конечно, понимаю, что на практике этим можно пренебречь, но хочется поговорить о математической правильности представления диапазонов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2008, 12:51 |
|
||
|
хранение информации о часах работы
|
|||
|---|---|---|---|
|
#18+
Cane Cat Fisherно хочется поговорить о математической правильности представления диапазонов. а следовало бы поговорить о правомерности применения алгоритма, предложенного для решиня одной задачи, к решению других, отличных задач. для магазина работающего круглосуточно часы работы можно задать константой - "круглосуточно" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2008, 12:57 |
|
||
|
хранение информации о часах работы
|
|||
|---|---|---|---|
|
#18+
mcureenabЭто как дополнение, чтобы решение выглядело целостным, тем более, что следом уже появились вопросы, как внести в расписание исключения. Появившиеся следом вопросы вызваны явным "не читал", поскольку в примере, который я привел, исключение прописано и проверено в тестовой выборке. mcureenabИМХО, с вьюхой как бы не очень складывается, или я просто пытаюсь решать слишком сложную задачу. Проблема в том, что функция возвращает режим работы магазина на момент времени, однако построить график работы магазина на месяц с помощью view ИМХО, не так просто, Может и "не так", но вполне реально. Взять выборку дат за месяц, размножить по ней периодические записи (которые на любой день или на день недели), для каждого дня собрать список времен - и для получившихся интервалов рассчитать признак открыт-закрыт, соблюдая приоритетность записей, покрывающих этот интервал. Конечно громоздко, но не более того; что касается времени работы, то при реальных запросах (ограниченных, скажем, одним магазином и одной неделей) это будут копеечные манипуляции в памяти, быстро. Задачи, для которой нужно все расписание, я себе особо не представляю.... разве что какая-нибудь страшенная аналитика, типа "как часто БД фиксирует транзакции в нерабочее время по всем магазинам города за год". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2008, 13:27 |
|
||
|
хранение информации о часах работы
|
|||
|---|---|---|---|
|
#18+
Cane Cat FisherА вот по круглосуточно работающему магазину хотелось бы поговорить с Вами. Я не могу понять, удастся ли его адекватно представить в рамках предложенной таблицы Schedule и функции Is_Shop_On? В тестовых данных, которые идут вместе с примером, приведена круглосуточная запись. Я не представляю, о чем еще можно говорить. Cane Cat FisherСуть моих сомнений в том, что, во-первых, в function Is_Shop_On, в строке 8 and p_time between time_from and time_to between нужно заменить на оператор, исключающий равенство с time_to Можно, но практического смысла это не имеет. Вы пытаетесь механически перенести подход, правильный в случае "дней" на "секунды"; в нашем случае практической разницы никакой. Я написал between потому, что это лучше иллюстрирует идею подхода. Cane Cat FisherА во-вторых, круглосуточную работу не удастся представить напрашивающися диапазоном "0.00-23.59.59" Ну если напрашивать всякую хрень, то представить не удастся, а если почитать вышенаписанное, то вопросов не останется. Cane Cat Fisherпотому что время - величина непрерывная, и всегда останется возможность вломиться в такой магазин в 23.59.59.99 Время - величина непрерывная, а вот показания таймера компьютера - очень даже дискретная. Поэтому даже если выбрать такое идиотское представление как 23:59:59, тем не менее можно написать "точную верхнюю границу диапазона" так, что следующее возможное значение - уже 0:00 следующего дня. Философствовать на тему "что будет, если человек вломится ну почти точно в полночь" конечно можно, но начинать их следует с претензий к микросхеме Intel 8253 и ее потомкам, не умеющим измерять время с точностью свыше одной микросекунды. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2008, 13:52 |
|
||
|
хранение информации о часах работы
|
|||
|---|---|---|---|
|
#18+
softwarer mcureenabИМХО, с вьюхой как бы не очень складывается, или я просто пытаюсь решать слишком сложную задачу. Проблема в том, что функция возвращает режим работы магазина на момент времени, однако построить график работы магазина на месяц с помощью view ИМХО, не так просто, Может и "не так", но вполне реально. Взять выборку дат за месяц, размножить по ней периодические записи (которые на любой день или на день недели), для каждого дня собрать список времен - и для получившихся интервалов рассчитать признак открыт-закрыт, соблюдая приоритетность записей, покрывающих этот интервал. Конечно громоздко, но не более того; что касается времени работы, то при реальных запросах (ограниченных, скажем, одним магазином и одной неделей) это будут копеечные манипуляции в памяти, быстро. Задачи, для которой нужно все расписание, я себе особо не представляю.... разве что какая-нибудь страшенная аналитика, типа "как часто БД фиксирует транзакции в нерабочее время по всем магазинам города за год". Для магазина скорее всего и прокатит, а в общем случае "выборка дат за месяц", ограничивает нас возможностью создавать расписания с периодом меньше суток. Есть ещё задача, "До какого часа вы работаете или когда вы открываетесь в следующую субботу?" Тоже требует некоторого объёма кода для своего решения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2008, 20:07 |
|
||
|
хранение информации о часах работы
|
|||
|---|---|---|---|
|
#18+
mcureenabДля магазина скорее всего и прокатит Я отвечаю именно на вопрос автора. Вполне допускаю, что есть задачи составления расписания для других реальных объектов, в которых такой подход был бы крайне неудачным. mcureenab, а в общем случае "выборка дат за месяц", ограничивает нас возможностью создавать расписания с периодом меньше суток. Не понял этой фразы, а та трактовка, которую я назвал бы наиболее вероятной, явно противоречит обсуждавшемуся ранее. Можно расшифровать? mcureenabЕсть ещё задача, "До какого часа вы работаете или когда вы открываетесь в следующую субботу?" Тоже требует некоторого объёма кода для своего решения. Никакого дополнительного кода (по сравнению с решением через предрассчитанный график) не требует. Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2008, 20:28 |
|
||
|
хранение информации о часах работы
|
|||
|---|---|---|---|
|
#18+
softwarer, извините, я не слишком разбираюсь в синтаксисе SQL, не могли бы Вы более подробно объяснить как оформит данное решение без хранимой процедуры? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2016, 11:18 |
|
||
|
хранение информации о часах работы
|
|||
|---|---|---|---|
|
#18+
Mickey.ur, лучше сосредоточиться и разобраться в синтаксисе SQL. Без этого просто не получится говорить на одном языке. А оформить... взять запрос из хранимой процедуры и доработать для использования согласно требованиям конкретного места. Например, сейчас на коленке я тот же пример сделал без процедуры так (но скорее всего, это не лучший вариант): Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2016, 12:17 |
|
||
|
|

start [/forum/topic.php?fid=32&fpage=17&tid=1540395]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
37ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
90ms |
get tp. blocked users: |
1ms |
| others: | 233ms |
| total: | 404ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...