powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / как организовать учет и/или вывод такой информации
10 сообщений из 10, страница 1 из 1
как организовать учет и/или вывод такой информации
    #39575764
AIS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть схематично такие таблицы:
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) в таблицах на вчера, сегодня, завтра могут быть разными. Т.е. например, один сертификат вчера был ещё актуальным, а сегодня он уже утратил свою силу.

В общем голова идет кругом, прошу помочь.
...
Рейтинг: 0 / 0
как организовать учет и/или вывод такой информации
    #39575770
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AISгде s1,s2,s3 - флаг наличия в БД сертификатов, соответственно действующих/истек срок
действия/в стадии сертификации.

Сертификаты - одна таблица, связь с объектами - M:N, другая таблица. В ней,
соответственно, срок действия сертификата.

А у вредителей и объектов одни и те же сертификаты или всё же разные?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
как организовать учет и/или вывод такой информации
    #39575775
AIS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovAISгде s1,s2,s3 - флаг наличия в БД сертификатов, соответственно действующих/истек срок
действия/в стадии сертификации.

Сертификаты - одна таблица, связь с объектами - M:N, другая таблица. В ней,
соответственно, срок действия сертификата.

А у вредителей и объектов одни и те же сертификаты или всё же разные?

Сертификаты имеют отношение только к препаратам. Но в конкретно каждом сертификате указано на каком объекте и против кого применим препарат. Эти связи отражены в tbl_app.
Может тут надо было добавить id сертификата? Но тут такая заморочка, что например связка "квартира-таракан-дихлофос" может быть иметь актуальную сертификацию в определенный период, т.е. вчера сертификат на этот препарат был действующим для этой "тройки", сегодня нет, но шла процедура продления сертификации, а завтра сертификат на эту тройку снова актуален.

При выводе списка, скажем объектов, не важно сколько для объекта сертифицировано препаратов, достаточно просто указать есть они или нет. Поэтому в tbl_obj и добавлены были колонки (s1, s2, s3) для учета этой информации, которая предполагалась, что будет туда заносится триггерами при внесении изменений в БД. Но что то не клеится такая логика...

ПС. вообще это сейчас работает без этого "новаторства" (s1, s2, s3), т.е. выводился список, скажем объектов, и при выборе объекта выводилось дерево препаратов с сертификатами в качестве веток. Но появилось задача уже в списке объектов (вредителей) предварительно созерцать наличие актуальных препаратов и тех что в стадии сертификации. Предчувствую, что следующая задача будет - заменить да/нет на количественный показатель.
...
Рейтинг: 0 / 0
как организовать учет и/или вывод такой информации
    #39577598
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хрень какая-то... Вот есть сертификат. Он - на один препарат или несколько? на один объект или несколько? против одного гада или нескольких? Возможна ли ситуация, когда два сертификата с разными датами на один и тот же препарат устанавливают для него разный набор гадов и/или объектов?

Ответ на эти вопросы способен изменить требуемую схему, и даже вообще похоронить таблицу применений.

Короче, показывайте полные описание и анализ предметной области. Тогда будет предмет для разговора.
...
Рейтинг: 0 / 0
как организовать учет и/или вывод такой информации
    #39577615
AIS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkinaХрень какая-то... Вот есть сертификат. Он - на один препарат или несколько? на один объект или несколько? против одного гада или нескольких? Возможна ли ситуация, когда два сертификата с разными датами на один и тот же препарат устанавливают для него разный набор гадов и/или объектов?

Ответ на эти вопросы способен изменить требуемую схему, и даже вообще похоронить таблицу применений.

Короче, показывайте полные описание и анализ предметной области. Тогда будет предмет для разговора.
Сертификат выдается на один препарат, в котором указывается список объектов обработки и список вредителей, связанных с ними.
Сертификат имеет срок действия.
Один препарат может иметь несколько сертификатов, которые могут отличаться или сроком действия (например, старый переиздали/продлили, списки объектов и вредителей не меняли), или списком объектов, или списком вредителей.
...
Рейтинг: 0 / 0
как организовать учет и/или вывод такой информации
    #39577617
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AIS
Не могу понять как организовать учет такой информации и/или как сделать запрос, чтобы это было быстро.

А у Вас вообще какие объемы-то, чтобы сильно напрягаться насчет быстродействия? Мне кажется, что видов вредителей и препаратов - хорошо если сотни.
P.S. Если таки хотите напрягаться на тему производительности - Ваша палочка-выручалочка не триггеры, а ночные процессящие скрипты.
...
Рейтинг: 0 / 0
как организовать учет и/или вывод такой информации
    #39577618
d7i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AIS, не нужно плодить поля о состоянии сертификата.
Используйте одно поле - статус сетификата.
Добавьте таблицу статусов (справочник) с полями id и name.
В дальнейшем статусы можно расширять и использовать для разных нужд.
...
Рейтинг: 0 / 0
как организовать учет и/или вывод такой информации
    #39577633
AIS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кот МатроскинAIS Не могу понять как организовать учет такой информации и/или как сделать запрос, чтобы это было быстро.

А у Вас вообще какие объемы-то, чтобы сильно напрягаться насчет быстродействия? Мне кажется, что видов вредителей и препаратов - хорошо если сотни.
P.S. Если таки хотите напрягаться на тему производительности - Ваша палочка-выручалочка не триггеры, а ночные процессящие скрипты.
Объектов и вредителей до тысячи каждого, препаратов несколько тысяч, а сертификатов - десятки тысяч.
По поводу скриптов - возможно это и вариант, но мне он не очень нравится.
Согласен, триггеры скорее всего тут не помогут.

Возможно на клиенте надо это делать, например так:
1. в таблице объектов tbl_obj определить, что s1, s2, s3 соответственно максимальная дата у сертификатов, минимальная дата, количество в стадии сертификации.
2. при вводе нового сертификата или смены его статуса корректируем с клиента эти столбцы.
3. при получении данных на клиенте анализировать:
если s1>today значит выводим "+", в противном случае "-"
если s2>today значит выводим "-", в противном случае "+"
если s3>0 значит выводим "+", в противном случае "-"
...
Рейтинг: 0 / 0
как организовать учет и/или вывод такой информации
    #39577636
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AISВозможно на клиенте надо это делать, например так:
1. в таблице объектов tbl_obj определить, что s1, s2, s3 соответственно максимальная дата у сертификатов, минимальная дата, количество в стадии сертификации.
2. при вводе нового сертификата или смены его статуса корректируем с клиента эти столбцы.
3. при получении данных на клиенте анализировать:
если s1>today значит выводим "+", в противном случае "-"
если s2>today значит выводим "-", в противном случае "+"
если s3>0 значит выводим "+", в противном случае "-"
Только непонятно зачем на клиенте - прямо в запросе это можно сделать точно так же, и именно это я и имел в виду под
"не заморачиваться на производительность". Скорее всего, все будет работать вполне шустро - ну а если не будет, вариант ночного предрасчета у Вас всегда остается .
...
Рейтинг: 0 / 0
как организовать учет и/или вывод такой информации
    #39577638
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Собственно, для начала я бы попробовал вообще никаких флагов не хранить, а все эти максимальные и минимальные даты рассчитывать "на лету" - при правильных индексах это все вполне дешево.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / как организовать учет и/или вывод такой информации
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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