|
как организовать учет и/или вывод такой информации
|
|||
---|---|---|---|
#18+
Есть схематично такие таблицы: 1. объекты обработки (например, квартира) - tbl_obj (id, name_obj, ..., s1, s2, s3) 2. вредоносный объект (например, таракан) - tbl_pest (id, name_pest, ..., s1, s2, s3) 3. препарат (например, дихлофос)- tbl_prep (id, name_prep, ...) 4. сертификат - tbl_s_prep (id, prep_id, ..., date_end) 5. применение - tbl_app (id, obj_id, pest_id, prep_id, ...) Стоит задача на клиенте получить, что то типа такого, например: Объектs1s2s3............квартира+-+склад-+-............ Вредительs1s2s3............таракан+++клоп-++............ где s1,s2,s3 - флаг наличия в БД сертификатов, соответственно действующих/истек срок действия/в стадии сертификации. Т.е. при выборке, например, списка объектов обработки, надо вывести ещё информацию о том, есть ли в БД препараты с действующим сертификатом, с истекшим сроком действия и препараты, которые на стадии сертификации. Не могу понять как организовать учет такой информации и/или как сделать запрос, чтобы это было быстро. Понимаю, что надо это дело разрулить триггерами, но что сохранять не пойму, т.к. при не изменной БД показатели (s1,s2,s3) в таблицах на вчера, сегодня, завтра могут быть разными. Т.е. например, один сертификат вчера был ещё актуальным, а сегодня он уже утратил свою силу. В общем голова идет кругом, прошу помочь. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2017, 00:10 |
|
как организовать учет и/или вывод такой информации
|
|||
---|---|---|---|
#18+
AISгде s1,s2,s3 - флаг наличия в БД сертификатов, соответственно действующих/истек срок действия/в стадии сертификации. Сертификаты - одна таблица, связь с объектами - M:N, другая таблица. В ней, соответственно, срок действия сертификата. А у вредителей и объектов одни и те же сертификаты или всё же разные? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2017, 01:15 |
|
как организовать учет и/или вывод такой информации
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovAISгде s1,s2,s3 - флаг наличия в БД сертификатов, соответственно действующих/истек срок действия/в стадии сертификации. Сертификаты - одна таблица, связь с объектами - M:N, другая таблица. В ней, соответственно, срок действия сертификата. А у вредителей и объектов одни и те же сертификаты или всё же разные? Сертификаты имеют отношение только к препаратам. Но в конкретно каждом сертификате указано на каком объекте и против кого применим препарат. Эти связи отражены в tbl_app. Может тут надо было добавить id сертификата? Но тут такая заморочка, что например связка "квартира-таракан-дихлофос" может быть иметь актуальную сертификацию в определенный период, т.е. вчера сертификат на этот препарат был действующим для этой "тройки", сегодня нет, но шла процедура продления сертификации, а завтра сертификат на эту тройку снова актуален. При выводе списка, скажем объектов, не важно сколько для объекта сертифицировано препаратов, достаточно просто указать есть они или нет. Поэтому в tbl_obj и добавлены были колонки (s1, s2, s3) для учета этой информации, которая предполагалась, что будет туда заносится триггерами при внесении изменений в БД. Но что то не клеится такая логика... ПС. вообще это сейчас работает без этого "новаторства" (s1, s2, s3), т.е. выводился список, скажем объектов, и при выборе объекта выводилось дерево препаратов с сертификатами в качестве веток. Но появилось задача уже в списке объектов (вредителей) предварительно созерцать наличие актуальных препаратов и тех что в стадии сертификации. Предчувствую, что следующая задача будет - заменить да/нет на количественный показатель. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2017, 01:47 |
|
как организовать учет и/или вывод такой информации
|
|||
---|---|---|---|
#18+
Хрень какая-то... Вот есть сертификат. Он - на один препарат или несколько? на один объект или несколько? против одного гада или нескольких? Возможна ли ситуация, когда два сертификата с разными датами на один и тот же препарат устанавливают для него разный набор гадов и/или объектов? Ответ на эти вопросы способен изменить требуемую схему, и даже вообще похоронить таблицу применений. Короче, показывайте полные описание и анализ предметной области. Тогда будет предмет для разговора. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2017, 22:02 |
|
как организовать учет и/или вывод такой информации
|
|||
---|---|---|---|
#18+
AkinaХрень какая-то... Вот есть сертификат. Он - на один препарат или несколько? на один объект или несколько? против одного гада или нескольких? Возможна ли ситуация, когда два сертификата с разными датами на один и тот же препарат устанавливают для него разный набор гадов и/или объектов? Ответ на эти вопросы способен изменить требуемую схему, и даже вообще похоронить таблицу применений. Короче, показывайте полные описание и анализ предметной области. Тогда будет предмет для разговора. Сертификат выдается на один препарат, в котором указывается список объектов обработки и список вредителей, связанных с ними. Сертификат имеет срок действия. Один препарат может иметь несколько сертификатов, которые могут отличаться или сроком действия (например, старый переиздали/продлили, списки объектов и вредителей не меняли), или списком объектов, или списком вредителей. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2017, 22:55 |
|
как организовать учет и/или вывод такой информации
|
|||
---|---|---|---|
#18+
AIS Не могу понять как организовать учет такой информации и/или как сделать запрос, чтобы это было быстро. А у Вас вообще какие объемы-то, чтобы сильно напрягаться насчет быстродействия? Мне кажется, что видов вредителей и препаратов - хорошо если сотни. P.S. Если таки хотите напрягаться на тему производительности - Ваша палочка-выручалочка не триггеры, а ночные процессящие скрипты. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2017, 22:59 |
|
как организовать учет и/или вывод такой информации
|
|||
---|---|---|---|
#18+
AIS, не нужно плодить поля о состоянии сертификата. Используйте одно поле - статус сетификата. Добавьте таблицу статусов (справочник) с полями id и name. В дальнейшем статусы можно расширять и использовать для разных нужд. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2017, 23:00 |
|
как организовать учет и/или вывод такой информации
|
|||
---|---|---|---|
#18+
Кот МатроскинAIS Не могу понять как организовать учет такой информации и/или как сделать запрос, чтобы это было быстро. А у Вас вообще какие объемы-то, чтобы сильно напрягаться насчет быстродействия? Мне кажется, что видов вредителей и препаратов - хорошо если сотни. P.S. Если таки хотите напрягаться на тему производительности - Ваша палочка-выручалочка не триггеры, а ночные процессящие скрипты. Объектов и вредителей до тысячи каждого, препаратов несколько тысяч, а сертификатов - десятки тысяч. По поводу скриптов - возможно это и вариант, но мне он не очень нравится. Согласен, триггеры скорее всего тут не помогут. Возможно на клиенте надо это делать, например так: 1. в таблице объектов tbl_obj определить, что s1, s2, s3 соответственно максимальная дата у сертификатов, минимальная дата, количество в стадии сертификации. 2. при вводе нового сертификата или смены его статуса корректируем с клиента эти столбцы. 3. при получении данных на клиенте анализировать: если s1>today значит выводим "+", в противном случае "-" если s2>today значит выводим "-", в противном случае "+" если s3>0 значит выводим "+", в противном случае "-" ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2017, 23:59 |
|
как организовать учет и/или вывод такой информации
|
|||
---|---|---|---|
#18+
AISВозможно на клиенте надо это делать, например так: 1. в таблице объектов tbl_obj определить, что s1, s2, s3 соответственно максимальная дата у сертификатов, минимальная дата, количество в стадии сертификации. 2. при вводе нового сертификата или смены его статуса корректируем с клиента эти столбцы. 3. при получении данных на клиенте анализировать: если s1>today значит выводим "+", в противном случае "-" если s2>today значит выводим "-", в противном случае "+" если s3>0 значит выводим "+", в противном случае "-" Только непонятно зачем на клиенте - прямо в запросе это можно сделать точно так же, и именно это я и имел в виду под "не заморачиваться на производительность". Скорее всего, все будет работать вполне шустро - ну а если не будет, вариант ночного предрасчета у Вас всегда остается . ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2017, 00:09 |
|
как организовать учет и/или вывод такой информации
|
|||
---|---|---|---|
#18+
Собственно, для начала я бы попробовал вообще никаких флагов не хранить, а все эти максимальные и минимальные даты рассчитывать "на лету" - при правильных индексах это все вполне дешево. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2017, 00:13 |
|
|
start [/forum/topic.php?fid=32&msg=39577617&tid=1540094]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
32ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
64ms |
get tp. blocked users: |
2ms |
others: | 15ms |
total: | 165ms |
0 / 0 |