|
|
|
Правильное хранение интервала времени
|
|||
|---|---|---|---|
|
#18+
Добрый день. Суть проблемы, на сайте есть поля для дней недели, и в них указывается интервал времени (например: 10:00 - 23:59 ... и т. д.), так же можно указать значение полный день и будет хранится статическое значение 24 часа. Собственно как это можно максимально сжато хранить в таблице БД? У самого есть идея на стороне php сериалайзить либо сохранять JSON с нужными значениями но хотелось бы это возложить на БД. P.S.: На данный момент сделал так с помощью JSON: monday = ["10:00", "23:59"], или для полного дня ["24"] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2016, 08:50 |
|
||
|
Правильное хранение интервала времени
|
|||
|---|---|---|---|
|
#18+
ну хранить числа текстом это точно не самый компактный способ. Я просто сам не шарю в мускле, а в доках ничего нету... там типа данных время например? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2016, 09:27 |
|
||
|
Правильное хранение интервала времени
|
|||
|---|---|---|---|
|
#18+
le7o, храни как два поля времени, тип time или timestamp, если будет нужно задавать дату, задавай всем какую то константа, типа 19700101. json хранить в РСУБД не вариант, тем более в MySQL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2016, 09:44 |
|
||
|
Правильное хранение интервала времени
|
|||
|---|---|---|---|
|
#18+
le7o, А что нужно делать с этими данными на уровне СУБД? Если только читать/писать, то годится что угодно, в т.ч. и JSON. Если же по ним нужно будет отбирать записи и этих записей много, то JSON не годится. Тут нужны дополнительные подробности предполагаемой логики. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2016, 10:33 |
|
||
|
Правильное хранение интервала времени
|
|||
|---|---|---|---|
|
#18+
miksoftle7o, А что нужно делать с этими данными на уровне СУБД? Если только читать/писать, то годится что угодно, в т.ч. и JSON. Если же по ним нужно будет отбирать записи и этих записей много, то JSON не годится. Тут нужны дополнительные подробности предполагаемой логики. Собственно и хотелось это использовать именно для фильтрации(выборки) данных. Подробнее о хранении По итогу структура сейчас следующая: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. Сама структура JSON: "10:00" - начало, "23:59" - конец, и All - если весь день. Код: sql 1. 2. 3. 4. Если рассматривать вариант от MasterZiv, получается (как я это понял) следующее: NAME, VALUE monday_start = 10:00 monday_end = 21:59 tuesday_start = 00:00 tuesday_end = 23:59 wednesday_start = 00:00 wednesday_end = 23:59 thursday_start = 00:00 thursday_end = 23:59 friday_start = 10:00 friday_end = 21:25 saturday_start = 08:00 saturday_end = 21:00 sunday_start = 00:00 sunday_end = 23:59[/SRC] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2016, 13:03 |
|
||
|
Правильное хранение интервала времени
|
|||
|---|---|---|---|
|
#18+
le7o, а если голову включить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2016, 16:03 |
|
||
|
Правильное хранение интервала времени
|
|||
|---|---|---|---|
|
#18+
le7o, и хранить название дня недели в виде строки - это тоже не есть хорошо. необходимо и достаточно в int ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2016, 16:07 |
|
||
|
Правильное хранение интервала времени
|
|||
|---|---|---|---|
|
#18+
Тут весь вопрос в том нужно ли будет искать по этому интервалу времени. Если нет то можно и JSON, если нужно то однозначно хранить в 2 полях DATETIME + DATETIME (начало и конец) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2016, 17:59 |
|
||
|
Правильное хранение интервала времени
|
|||
|---|---|---|---|
|
#18+
вадяle7o, и хранить название дня недели в виде строки - это тоже не есть хорошо. необходимо и достаточно в int Я не совсем Вас понял у меня вообще нет названия дня недели, оно в принципе мне и не нужно: monday_star - это название поля. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2016, 21:41 |
|
||
|
Правильное хранение интервала времени
|
|||
|---|---|---|---|
|
#18+
alfakukТут весь вопрос в том нужно ли будет искать по этому интервалу времени. Если нет то можно и JSON, если нужно то однозначно хранить в 2 полях DATETIME + DATETIME (начало и конец) Поиск будет, как минимум на соответствие текущему времени посетителя сайта: Логика следующая: Посетитель заходит на сайт->ему показываются исполнители, которые доступны в данный момент времени (то есть если время в которое Посетитель зашел на сайт входит в интервал заданный в таблице в зависимости от дня недели). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2016, 21:49 |
|
||
|
Правильное хранение интервала времени
|
|||
|---|---|---|---|
|
#18+
le7oвадяle7o, и хранить название дня недели в виде строки - это тоже не есть хорошо. необходимо и достаточно в int Я не совсем Вас понял у меня вообще нет названия дня недели, оно в принципе мне и не нужно: monday_star - это название поля. ну если только так.... авторЛогика следующая: Посетитель заходит на сайт->ему показываются исполнители, которые доступны в данный момент времени (то есть если время в которое Посетитель зашел на сайт входит в интервал заданный в таблице в зависимости от дня недели). для этого не надо такое достаточно просто иметь таблицу с операторами и полем да/нет . если оператор активен - true, не активен - false ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2016, 22:04 |
|
||
|
Правильное хранение интервала времени
|
|||
|---|---|---|---|
|
#18+
le7omiksoftle7o, А что нужно делать с этими данными на уровне СУБД? Если только читать/писать, то годится что угодно, в т.ч. и JSON. Если же по ним нужно будет отбирать записи и этих записей много, то JSON не годится. Тут нужны дополнительные подробности предполагаемой логики. Собственно и хотелось это использовать именно для фильтрации(выборки) данных. Подробнее о хранении По итогу структура сейчас следующая: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. Сама структура JSON: "10:00" - начало, "23:59" - конец, и All - если весь день. Код: sql 1. 2. 3. 4. Если рассматривать вариант от MasterZiv, получается (как я это понял) следующее: NAME, VALUE monday_start = 10:00 monday_end = 21:59 tuesday_start = 00:00 tuesday_end = 23:59 wednesday_start = 00:00 wednesday_end = 23:59 thursday_start = 00:00 thursday_end = 23:59 friday_start = 10:00 friday_end = 21:25 saturday_start = 08:00 saturday_end = 21:00 sunday_start = 00:00 sunday_end = 23:59[/SRC] Садись, оценка -- 2. Таблица должна быть примено такой: day_of_week, start, end (1, 10:00, 21:59 ) (2, 00:00, 23:59 ) ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2016, 22:15 |
|
||
|
Правильное хранение интервала времени
|
|||
|---|---|---|---|
|
#18+
MasterZiv,Садись, оценка -- 2. Таблица должна быть примено такой: day_of_week, start, end (1, 10:00, 21:59 ) (2, 00:00, 23:59 ) я тоже так думал, но в данном случае , возможно , тс прав ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2016, 22:37 |
|
||
|
Правильное хранение интервала времени
|
|||
|---|---|---|---|
|
#18+
MasterZiv Садись, оценка -- 2. Таблица должна быть примено такой: day_of_week, start, end (1, 10:00, 21:59 ) (2, 00:00, 23:59 ) ... Извините зачетки уже нет. А если серьезно: Хорошо ну будет у меня такая таблица отдельная, а с основной я ее буду связывать, допустим так: Код: sql 1. 2. 3. 4. И так по 7 записей для каждого пользователя, против 14 полей в основной таблице. Выборка будет производиться в зависимости от дня недели, при заходе пользователя. И при явном поиске. Т.е. если необходимо получить всех кто доступен в Понедельник с 10:00 до 18:00, будет запрос с join по всем записям таблицы где: day_of_week = 1 + проверка на вхождение в данный временной интервал, против запроса выбрать всех операторов где заданный интервал >= monday_start и заданный интервал <= monday_end Какое из решений будет производительнее? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2016, 08:30 |
|
||
|
Правильное хранение интервала времени
|
|||
|---|---|---|---|
|
#18+
le7o, тут надо исходить из опыта работы с базами таблица должна быть такая id id_usera пон_старт пон_конец ..... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2016, 10:18 |
|
||
|
Правильное хранение интервала времени
|
|||
|---|---|---|---|
|
#18+
вадяle7o, тут надо исходить из опыта работы с базами таблица должна быть такая id id_usera пон_старт пон_конец ..... не, только не такой, это нарушение 1НФ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2016, 02:24 |
|
||
|
Правильное хранение интервала времени
|
|||
|---|---|---|---|
|
#18+
le7o, вам не нужно будет стряпать динамический запрос исходя из Дня недели, достаточно будет одного запроса. А скорость может будет отличаться а может нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2016, 04:05 |
|
||
|
Правильное хранение интервала времени
|
|||
|---|---|---|---|
|
#18+
MasterZivвадяle7o, тут надо исходить из опыта работы с базами таблица должна быть такая id id_usera пон_старт пон_конец ..... не, только не такой, это нарушение 1НФ... почему ты так думаешь? в чём нарушение? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2016, 15:18 |
|
||
|
Правильное хранение интервала времени
|
|||
|---|---|---|---|
|
#18+
вадяMasterZivпропущено... не, только не такой, это нарушение 1НФ... почему ты так думаешь? в чём нарушение? я не думаю, я знаю, это разные вещи. в чем нарушение - наличие массива данных в строке. нарушение 1НФ, неатомарный атрибут. почитай, что такое 1нф. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2016, 22:52 |
|
||
|
Правильное хранение интервала времени
|
|||
|---|---|---|---|
|
#18+
авторв чем нарушение - наличие массива данных в строке. нарушение 1НФ, неатомарный атрибут. почитай, что такое 1нф. возможно, но это буде намного проще для работы чем твой вариант ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2016, 08:32 |
|
||
|
Правильное хранение интервала времени
|
|||
|---|---|---|---|
|
#18+
автор наличие массива данных в строке ну это как интерпретировать данные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2016, 08:34 |
|
||
|
Правильное хранение интервала времени
|
|||
|---|---|---|---|
|
#18+
le7oкак это можно максимально сжато хранить в таблице БД? А не могли бы Вы обосновать жизненную необходимость выделенного условия? Потому как на текущий момент всё выглядит как попытка наиметь себе дополнительного геморроя ради совершенно невменяемого профита... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2016, 11:48 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=39284517&tid=1831515]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
184ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
93ms |
get tp. blocked users: |
1ms |
| others: | 224ms |
| total: | 549ms |

| 0 / 0 |
