powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Прошу помощь в реализации системы фильтрации данных
48 сообщений из 48, показаны все 2 страниц
Прошу помощь в реализации системы фильтрации данных
    #38462555
JamDepot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прошу помощи в построении связей между табличками БД "Обслуживание оргтехники" (postgresql).
В БД лежит информация об оборудовании (принтер, сканер, МФУ и т.п.), деталях подлежащих замене на обслуживании, кол-ве отпечатаных страниц (интервал - через который проводится обслуживание), условиях использования именно этого интервала для оборудования.

На бумаге это выглядит так:

Оборудование Деталь Условие Интервал Принтер 1 Магнитный вал 30000 стр.Принтер 1 Узел термозакрепления до 2007 г.в. 80000 стр.Принтер 1 Узел термозакрепления 120000 стр.Принтер 1 Ролики лотка подачи бумаги 250000 стр.Принтер 1 Ролики лотка подачи бумаги более 60000 стр./мес. 180000 стр.Принтер 2 Магнитный вал 30000 стр.Принтер 2 Узел сканирования 1000000 стр.Принтер 2 Узел сканирования до 2007 г.в. и более 70000 стр./мес. 800000 стр.Принтер 2 Узел термозакрепления до 2007 г.в. 80000 стр.Принтер 2 Узел термозакрепления с 2008 г.в. 100000 стр.Принтер 2 Фотобарабан 70000 стр.
Т.е. для Принтера 1 магнитный вал меняется каждые 30000 отпечатанных страниц, если никаких доп. условий нет, а узел термозакрепления каждые 80000 стр., если принтер выпущен до или в 2007 году.

Задача вывести список деталей подлежащих замене для заданного оборудования и его текущего значения счетчика отпечатанных/отсканированных страниц учитывая все условия, если они есть.
Причем, для разного оборудования связка деталь-условие-интервал (и вариации) может повторяться, также может быть сразу два условия.

Таблицы:
Оборудование (id, название, парметр 1, параметр 2, ..., параметр n) - т.е. все что известно об еденице оборудования.
Детали (id, название детали)
Интервалы (id, значение интервала)
Таблиц(ы) условий пока нет, т.к. я не знаю как их правильно реализовать (в одной таблице или в нескольких, и как связать).
Всего уникальных по смыслу условий 8, которые могут содержать множество различных значений (например, год выпуска - до 2006/от 2008/до 2004/от 2010 и т.п.; условия эксплуатации - стандартные/тяжелые; кол-во страниц в месяц - больше значения/равно значению/меньше значения).

На ум приходит только одно рабочее решение - для каждого условия отдельная таблица с вариантами: Условие 1 (id, значение), Условие 2 (id, значение), ..., Условие n (id, значение). id оборудования, деталей, условий и интервалов свести в одну таблицу как внешние ключи, но тогда в запросе придется проверять все условия для каждой еденицы оборудования, даже если их нет.
Также в будущем может выйти новое оборудование - новые условия при проведении обслуживания.

Уже несколько дней думаю как реализовать фильтрацию, чтобы проверялся только нужный фильтр, а не все подряд.
Может быть профи подскажут что-нибудь дельное? :)
...
Рейтинг: 0 / 0
Прошу помощь в реализации системы фильтрации данных
    #38462597
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JamDepot Интервалы (id, значение интервала)Вот эту то табличку и нужно поженить с условиями. Правда интервал честнее назвать максимум_отпечатанных_страниц. А год выпуска заменить на пару с_даты по_дату. Добавьте флажок условия_эксплуатации (или ссылку на справочник если их больше двух)
...
Рейтинг: 0 / 0
Прошу помощь в реализации системы фильтрации данных
    #38462665
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JamDepot , предложу такой вариант...

Код: xml
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.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
<?xml version="1.0" encoding="utf-8" ?>
<!-- SQL XML created by WWW SQL Designer, http://code.google.com/p/wwwsqldesigner/ -->
<!-- Active URL: http://ondras.zarovi.cz/sql/demo/ -->
<sql>
<datatypes db="mysql">
	<group label="Numeric" color="rgb(238,238,170)">
	 	<type label="TINYINT" length="0" sql="TINYINT" quote=""/>
	 	<type label="SMALLINT" length="0" sql="SMALLINT" quote=""/>
	 	<type label="MEDIUMINT" length="0" sql="MEDIUMINT" quote=""/>
	 	<type label="INT" length="0" sql="INT" quote=""/>
		<type label="Integer" length="0" sql="INTEGER" quote=""/>
		<type label="BIGINT" length="0" sql="BIGINT" quote=""/>
		<type label="Decimal" length="1" sql="DECIMAL" re="DEC" quote=""/>
		<type label="Single precision" length="0" sql="FLOAT" quote=""/>
		<type label="Double precision" length="0" sql="DOUBLE" re="DOUBLE" quote=""/>
	</group>

	<group label="Character" color="rgb(255,200,200)">
		<type label="Char" length="1" sql="CHAR" quote="'"/>
		<type label="Varchar" length="1" sql="VARCHAR" quote="'"/>
		<type label="Text" length="0" sql="MEDIUMTEXT" re="TEXT" quote="'"/>
		<type label="Binary" length="1" sql="BINARY" quote="'"/>
		<type label="Varbinary" length="1" sql="VARBINARY" quote="'"/>
		<type label="BLOB" length="0" sql="BLOB" re="BLOB" quote="'"/>
	</group>

	<group label="Date &amp; Time" color="rgb(200,255,200)">
		<type label="Date" length="0" sql="DATE" quote="'"/>
		<type label="Time" length="0" sql="TIME" quote="'"/>
		<type label="Datetime" length="0" sql="DATETIME" quote="'"/>
		<type label="Year" length="0" sql="YEAR" quote=""/>
		<type label="Timestamp" length="0" sql="TIMESTAMP" quote="'"/>
	</group>
	
	<group label="Miscellaneous" color="rgb(200,200,255)">
		<type label="ENUM" length="1" sql="ENUM" quote=""/>
		<type label="SET" length="1" sql="SET" quote=""/>
		<type label="Bit" length="0" sql="bit" quote=""/>
	</group>
</datatypes><table x="45" y="37" name="Оборудование">
<row name="id" null="1" autoincrement="1">
<datatype>TINYINT</datatype>
<default>NULL</default></row>
<row name="Куплен" null="1" autoincrement="0">
<datatype>DATE</datatype>
<default>NULL</default></row>
<row name="Марка" null="1" autoincrement="0">
<datatype>MEDIUMTEXT</datatype>
<default>NULL</default></row>
<key type="PRIMARY" name="">
<part>id</part>
</key>
</table>
<table x="463" y="42" name="Деталь">
<row name="id" null="1" autoincrement="1">
<datatype>TINYINT</datatype>
<default>NULL</default></row>
<row name="Название" null="1" autoincrement="0">
<datatype>MEDIUMTEXT</datatype>
<default>NULL</default></row>
<row name="Максимум страниц" null="1" autoincrement="0">
<datatype>INTEGER</datatype>
<default>NULL</default></row>
<row name="Страниц в месяц" null="1" autoincrement="0">
<datatype>TINYINT</datatype>
<default>NULL</default></row>
<key type="PRIMARY" name="">
<part>id</part>
</key>
</table>
<table x="264" y="39" name="Элемент">
<row name="id" null="1" autoincrement="1">
<datatype>TINYINT</datatype>
<default>NULL</default></row>
<row name="Деталь" null="1" autoincrement="0">
<datatype>TINYINT</datatype>
<default>NULL</default><relation table="Деталь" row="id" />
</row>
<row name="Оборудование" null="1" autoincrement="0">
<datatype>TINYINT</datatype>
<default>NULL</default><relation table="Оборудование" row="id" />
</row>
<row name="Показание счетчика" null="1" autoincrement="0">
<datatype>INTEGER</datatype>
<default>NULL</default></row>
<row name="Установлен" null="1" autoincrement="0">
<datatype>DATE</datatype>
<default>NULL</default></row>
<key type="PRIMARY" name="">
<part>id</part>
</key>
</table>
<table x="257" y="214" name="Показание счетчика">
<row name="id" null="1" autoincrement="1">
<datatype>TINYINT</datatype>
<default>NULL</default></row>
<row name="Оборудование" null="1" autoincrement="0">
<datatype>TINYINT</datatype>
<default>NULL</default><relation table="Оборудование" row="id" />
</row>
<row name="Месяц" null="1" autoincrement="0">
<datatype>DATE</datatype>
<default>NULL</default></row>
<row name="Показание счетчика" null="1" autoincrement="0">
<datatype>INTEGER</datatype>
<default>NULL</default></row>
<key type="PRIMARY" name="">
<part>id</part>
</key>
</table>
</sql>


Смотреть тут .
...
Рейтинг: 0 / 0
Прошу помощь в реализации системы фильтрации данных
    #38462668
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Картинкой...
...
Рейтинг: 0 / 0
Прошу помощь в реализации системы фильтрации данных
    #38462706
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Оборудование (id, название, парметр 1, параметр 2, ..., параметр n)
> Детали (id, название детали)

Осталось сделать пару шагов. Смотрите: процесс - печать (способ печати, единица учёта результата процесса), узел - участие в процессе - ресурс (в единицах учета результата). Ну, и сами узлы и оборудование нормальным образом опишите. Оборудование, кстати, может совмещать возможность выполнения нескольких задач.
...
Рейтинг: 0 / 0
Прошу помощь в реализации системы фильтрации данных
    #38462728
Злой Бобр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JamDepot,

Все это замечательно. Но лучше б вы прикрепили бекапчик БД со схемой. Просто так более визуально понятно и можно на лету помочь. Там по сути минут 15 работы. Скрипты я думаю вы и сами напишете по готовой БД.
...
Рейтинг: 0 / 0
Прошу помощь в реализации системы фильтрации данных
    #38462831
JamDepot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Повторюсь, для разного оборудования связка деталь-условие-интервал (и вариации) может как повторяться, так и различаться, также может быть сразу два условия.
Это значит, что одна и таже деталь может устанавливаться на разное оборудование и на разном оборудовании отхаживать как одинаковое, так и разное время (кол-во страниц) в зависимости от условий, так и без них, которые также могут совпадать для разных устройств и деталей.

SERG1257Правда интервал честнее назвать максимум_отпечатанных_страниц
Пусть будет максимум, НО т.к. одна и таже запчасть на разных принтерах ходит разное время (кол-во страниц), соответственно этот максимум разный и больше зависит от оборудования, деталь лишь устанавливается в него.

SERG1257Интервалы (id, значение интервала). Вот эту то табличку и нужно поженить с условиями.
Т.о. получается много табличек с условиями связанных отношениями М:М с таблицей интервалов(максимумов). И если все это сводить в одну таблицу, то опять придется создавать столько столбцов сколько таблицек с условиями и проверять их все. Я правильно понимаю?

krvsaпредложу такой вариант...
Задача не отследить сколько отходил конкретный расходник, а узнать чего нужно поменять на заданном значении счетчика у конкретного аппарата такого-то года выпуска учитывая ВСЕ условия.
Т.е. пользователь задает модель аппарата (его id), год выпуска и текущее значение счетчика.
Соответственно мы не знаем ни дату покупки, ни дату установки предыдущего расходника и в бд этого не храним.

guest_20040621 Не совсем понял, что вы написали. Скорее совсем не понял:)

Злой БобрНо лучше б вы прикрепили бекапчик БД со схемой
Я вас понимаю, но я только разрабатываю структуру, данные же есть только в csv.
Постараюсь ответить как можно более подробно на любые вопросы.

Посмотрите (рисунок), как красиво получается без фильтров.
Вся загвоздка в них. Если добавить один столбец фильтр, то как бд узнает чего проверять, т.к. они по смыслу разные, ежели несколько, то проверять придется все.

p.s.: Спасибо всем за участие!
...
Рейтинг: 0 / 0
Прошу помощь в реализации системы фильтрации данных
    #38462842
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JamDepot Пусть будет максимум, НО т.к. одна и таже запчасть на разных принтерах ходит разное время (кол-во страниц), соответственно этот максимум разный и больше зависит от оборудования, деталь лишь устанавливается в него.Значит добавьте id оборудования.
JamDepot придется создавать столько столбцов сколько таблицек с условиями и проверять их все. Я правильно понимаю?Да.

Пока у меня получается

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
create table limits (
 limit_id int primary key,
 device_id int references devices,
 part_id int references parts,
 is_heavy_duty bit,
 made_from date default '19000101',
 made_to date default '30001231'
 condition3 data,
 condition4 data,
 ....
 limit_count int)



Причем если например device_id несущественный, то бишь одинаковый для любого принтера то ставите его нулл
Вы запрашиваете данную табличку на основании известных вам данных и получаете одну или больше строк из которых выбираете минимум. Если у вас вообще нет строк, значит тому, кто ведет ее надо настучать по голове.

JamDepot Также в будущем может выйти новое оборудование - новые условия при проведении обслуживания.
Выйдет новое оборудование придется дописывать клиентскую часть, а заодно и добавите столбцов в серверную.

В любом случае этот вариант наипростейший (быстро, дешево и сердито) наиболее годится для разработки первой итерации. Отработайте на нем свои запросы, затем начинайте его (вариант) модифицировать (вышло новое оборудование - что я буду делать?, пришли новые данные по оборудованию от производителя - как я буду их менять и т.д.)
...
Рейтинг: 0 / 0
Прошу помощь в реализации системы фильтрации данных
    #38462844
Злой Бобр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JamDepot Посмотрите (рисунок), как красиво получается без фильтров.
Невижу я красоты. Таблицы неправильно составлены. Если завтра выберу время то нарисую вам схему - сами все поймете.
Необижайтесь. Но опыт приходит с практикой. Со временем может и вы научитесь.
...
Рейтинг: 0 / 0
Прошу помощь в реализации системы фильтрации данных
    #38462962
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JamDepotЗадача не отследить сколько отходил конкретный расходник, а узнать чего нужно поменять на заданном значении счетчика у конкретного аппарата такого-то года выпуска учитывая ВСЕ условия.
А по моей схемке этого сделать нельзя?
...
Рейтинг: 0 / 0
Прошу помощь в реализации системы фильтрации данных
    #38463095
JamDepot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
krvsaА по моей схемке этого сделать нельзя?
Если дан id оборудования и текущее значение его счетчика, и если в таблице деталь под разными id находятся одинаковые детали (название), но разными максимума, то мы можем:
Код: sql
1.
2.
3.
4.
5.
6.
select 
   Деталь
from
   Элемент
where
   (id_Оборудование = значение) and ((значение_счетчика % максимум) = 0)


и узнаем таки, что надо менять, но это получается, то что я изобразил на своем рисунке без условий.
Чего я не понимаю?
...
Рейтинг: 0 / 0
Прошу помощь в реализации системы фильтрации данных
    #38463099
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsaJamDepotЗадача не отследить сколько отходил конкретный расходник, а узнать чего нужно поменять на заданном значении счетчика у конкретного аппарата такого-то года выпуска учитывая ВСЕ условия.
А по моей схемке этого сделать нельзя?

Как Вы, например, планируете отразить, что для узлов термозакрепления до 2007 года лимит страниц один, а после - другой?


ТС-у - вот тут обсуждалась реализация произвольных условий в базе
...
Рейтинг: 0 / 0
Прошу помощь в реализации системы фильтрации данных
    #38463174
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кот МатроскинКак Вы, например, планируете отразить, что для узлов термозакрепления до 2007 года лимит страниц один, а после - другой?
У них будет отдельная запись "термозакрепления до 2007" в табличе "Деталь"...
Если нужно выделять "термозакрепления" как отдельную группу - создать еще одну таблицу и связать ее с табличкой "Деталь".

Названиря таблиц очень условные разумеется...
...
Рейтинг: 0 / 0
Прошу помощь в реализации системы фильтрации данных
    #38463180
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JamDepotЧего я не понимаю?
Этого я не знаю...
Но пока на все вопросы автора можно получить ответ по моей схемке...
Ее можно еще больше "затипизировать" добавив еще таблиц/справочников.
...
Рейтинг: 0 / 0
Прошу помощь в реализации системы фильтрации данных
    #38463183
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Злой БобрЕсли завтра выберу время то нарисую вам схему - сами все поймете.
Ждем Бобра... Может он и не такой уш и Злой...
...
Рейтинг: 0 / 0
Прошу помощь в реализации системы фильтрации данных
    #38463198
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsaКот МатроскинКак Вы, например, планируете отразить, что для узлов термозакрепления до 2007 года лимит страниц один, а после - другой?
У них будет отдельная запись "термозакрепления до 2007" в табличе "Деталь"...

Ой.
Будет 2 записи, "термозакрепления" и "термозакрепления до 2007"? А когда добавят условие "для термозакреплений с 2007 до 2009 года норма такая-то" - как Вы будете разбираться, какие из Ваших "термозакреплений" являются "термозакреплениями до 2009"?
...
Рейтинг: 0 / 0
Прошу помощь в реализации системы фильтрации данных
    #38463289
JamDepot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SERG1257Причем если например device_id несущественный, ... то ставите его нулл
id оборудования (device_id) существенный, т.к. в табличке оборудование может быть два одинаковых устройства (название/модель) только при условии разного периода производства.
Дело в том что еденица оборудования - это не тот принтер (мфу) за которым мы следим, чистим и т.п., а модификация модели с которой мы соотносим свое устройство и хотим узнать справочную информацию о деталях для обслуживания.
Интервал производства оборудования не может быть выходить за рамки производства родительской модели (см. картинку).
Все условия относятся именно к оборудованию, а не к детали, т.е. как оно использует данную запчасть имея определенные ттх или в определенных условиях.
SERG1257Вы запрашиваете данную табличку на основании известных вам данных и получаете одну или больше строк из которых выбираете минимум
Правильно, только нужно не минимум, а конкретная связка оборудование-деталь-интервал соответствующее условиям, если они есть.
SERG1257В любом случае этот вариант наипростейший
Вы правы, но меня смущает проверка всех условий для всех едениц оборудования.
Пытаюсь придумать что-то типа: если нет условия для связки оборудование-деталь, то используем этот интервал, если есть, то если тип условия такой-то, то проверяем такие-то столбцы и если удовлетворяет, то такой-то интервал.
Кот Матроскин Как Вы, например, планируете отразить, что для узлов термозакрепления до 2007 года лимит страниц один, а после - другой?
Не для узлов термозакрепления, а для оборудования вышедшего до 2007 г., т.е. оборудование до 2007 г.в. использует данный узел более агрессивно, а после вышла новая модификация, которая тот же самый узел использует более бережно, как-то так.
А вот это и есть условия, которые пока не получается прикрутить, чтобы получить только одну строку для оборудования-деталь-условие(если есть)-интервал.
krvsa Но пока на все вопросы автора можно получить ответ по моей схемке...
Нельзя, т.к.
Кот Матроскин Будет 2 записи, "термозакрепления" и "термозакрепления до 2007
а для текущего счетчика может быть только одна строка оборудование-деталь-условие(если есть)-интервал
Злой Бобр Невижу я красоты. Таблицы неправильно составлены.
Почему, ведь составной первичный ключ точно отражает, то что нужно, только без условий.
...
Рейтинг: 0 / 0
Прошу помощь в реализации системы фильтрации данных
    #38463293
JamDepot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Картинка к предыдущему посту.
...
Рейтинг: 0 / 0
Прошу помощь в реализации системы фильтрации данных
    #38463334
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кот МатроскинБудет 2 записи, "термозакрепления" и "термозакрепления до 2007"?
Да.

Кот МатроскинА когда добавят условие "для термозакреплений с 2007 до 2009 года норма такая-то"
Будет третья "термозакрепления с 2007 до 2009 года"

Кот Матроскинкак Вы будете разбираться, какие из Ваших "термозакреплений" являются "термозакреплениями до 2009"?
Так по ссылка и разберусь...

Название кодтермозакрепления1термозакрепления до 20072 термозакрепления с 2007 до 2009 года3
У каких "Составляющих" будет код 2 - это они и есть!
...
Рейтинг: 0 / 0
Прошу помощь в реализации системы фильтрации данных
    #38463340
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кот Матроскинкак Вы будете разбираться, какие из Ваших "термозакреплений" являются "термозакреплениями до 2009"?
Не так прочитал сначала...

Покажу какие "термозакрепленя" у меня есть - пустть выберут какие именно интересуют, те и покажу...
...
Рейтинг: 0 / 0
Прошу помощь в реализации системы фильтрации данных
    #38463353
JamDepot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не, так не пойдет, юзер ничего не знает об оборудовании кроме модификации, счетчика и г.в.
...
Рейтинг: 0 / 0
Прошу помощь в реализации системы фильтрации данных
    #38463363
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsaПокажу какие "термозакрепленя" у меня есть - пустть выберут какие именно интересуют, те и покажу...
Что значит "интересуют"?

Вот у Вас в базе, скажем, 5k единиц разного оборудования и 20к различных деталей, из которых 1k - термозакрепления.
Предположим, что эти 1K худо бедно разделены на "просто термозакрепления" и "термозакрепления до 2007".
(ТС уже уточнил, что на самом деле "до 2007 года" - это характеристика оборудования, а не детали, что заведомо ставит на Вашей схеме крест. Но пусть даже будем рассматривать ситуацию, когда это характеричтика детали)
Вот Вам говорят "внеси новое правило про износ термозакреплений выпуска с 2007 по 2009 и с его учетом выдай список, какие детали надо менять".
И что Вы сделаете? Выдадите все "просто термозакрепления" с просьбой "дорогой пользователь, определи (как? отправляясь на склад и лазая в каждое изделие?) по каждой детали, выпущена ли она до 2009 года, обнови информацию об оборудовании на основании этого, и тогда наша система что-то может посчитать"?
...
Рейтинг: 0 / 0
Прошу помощь в реализации системы фильтрации данных
    #38463372
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кот Матроскинчто заведомо ставит на Вашей схеме крест
Крест, так крест...
Нет смысла придумывать самому себе какие-то не понятные проблемы.

Покажи свою схему - я полюбуюсь.
...
Рейтинг: 0 / 0
Прошу помощь в реализации системы фильтрации данных
    #38463376
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JamDepotНе, так не пойдет, юзер ничего не знает об оборудовании кроме модификации, счетчика и г.в.
В моем варинтре тостаточно ввести показания счетчиков для всех штук оборудования.
После этой информации можно будет показать что уже пора менять.
...
Рейтинг: 0 / 0
Прошу помощь в реализации системы фильтрации данных
    #38463381
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsaПокажи свою схему - я полюбуюсь.

Я выше постил ссылку на обсуждение - там, в частности, есть моя схема реализации произвольных условий.
...
Рейтинг: 0 / 0
Прошу помощь в реализации системы фильтрации данных
    #38463394
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кот МатроскинЯ выше постил ссылку на обсуждение - там, в частности, есть моя схема реализации произвольных условий.
5 страниц?
На конкретное сообщение никак?
...
Рейтинг: 0 / 0
Прошу помощь в реализации системы фильтрации данных
    #38463406
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Модернизируюсь...

Код: xml
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.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
<?xml version="1.0" encoding="utf-8" ?>
<!-- SQL XML created by WWW SQL Designer, http://code.google.com/p/wwwsqldesigner/ -->
<!-- Active URL: http://ondras.zarovi.cz/sql/demo/ -->
<sql>
<datatypes db="mysql">
	<group label="Numeric" color="rgb(238,238,170)">
	 	<type label="TINYINT" length="0" sql="TINYINT" quote=""/>
	 	<type label="SMALLINT" length="0" sql="SMALLINT" quote=""/>
	 	<type label="MEDIUMINT" length="0" sql="MEDIUMINT" quote=""/>
	 	<type label="INT" length="0" sql="INT" quote=""/>
		<type label="Integer" length="0" sql="INTEGER" quote=""/>
		<type label="BIGINT" length="0" sql="BIGINT" quote=""/>
		<type label="Decimal" length="1" sql="DECIMAL" re="DEC" quote=""/>
		<type label="Single precision" length="0" sql="FLOAT" quote=""/>
		<type label="Double precision" length="0" sql="DOUBLE" re="DOUBLE" quote=""/>
	</group>

	<group label="Character" color="rgb(255,200,200)">
		<type label="Char" length="1" sql="CHAR" quote="'"/>
		<type label="Varchar" length="1" sql="VARCHAR" quote="'"/>
		<type label="Text" length="0" sql="MEDIUMTEXT" re="TEXT" quote="'"/>
		<type label="Binary" length="1" sql="BINARY" quote="'"/>
		<type label="Varbinary" length="1" sql="VARBINARY" quote="'"/>
		<type label="BLOB" length="0" sql="BLOB" re="BLOB" quote="'"/>
	</group>

	<group label="Date &amp; Time" color="rgb(200,255,200)">
		<type label="Date" length="0" sql="DATE" quote="'"/>
		<type label="Time" length="0" sql="TIME" quote="'"/>
		<type label="Datetime" length="0" sql="DATETIME" quote="'"/>
		<type label="Year" length="0" sql="YEAR" quote=""/>
		<type label="Timestamp" length="0" sql="TIMESTAMP" quote="'"/>
	</group>
	
	<group label="Miscellaneous" color="rgb(200,200,255)">
		<type label="ENUM" length="1" sql="ENUM" quote=""/>
		<type label="SET" length="1" sql="SET" quote=""/>
		<type label="Bit" length="0" sql="bit" quote=""/>
	</group>
</datatypes><table x="45" y="37" name="Оборудование">
<row name="id" null="1" autoincrement="1">
<datatype>TINYINT</datatype>
<default>NULL</default></row>
<row name="Куплен" null="1" autoincrement="0">
<datatype>DATE</datatype>
<default>NULL</default></row>
<row name="Марка" null="1" autoincrement="0">
<datatype>MEDIUMTEXT</datatype>
<default>NULL</default></row>
<key type="PRIMARY" name="">
<part>id</part>
</key>
</table>
<table x="463" y="36" name="Деталь">
<row name="id" null="1" autoincrement="1">
<datatype>TINYINT</datatype>
<default>NULL</default></row>
<row name="Название" null="1" autoincrement="0">
<datatype>MEDIUMTEXT</datatype>
<default>NULL</default></row>
<key type="PRIMARY" name="">
<part>id</part>
</key>
</table>
<table x="254" y="39" name="Элемент">
<row name="id" null="1" autoincrement="1">
<datatype>TINYINT</datatype>
<default>NULL</default></row>
<row name="Деталь" null="1" autoincrement="0">
<datatype>TINYINT</datatype>
<default>NULL</default><relation table="Деталь" row="id" />
</row>
<row name="Оборудование" null="1" autoincrement="0">
<datatype>TINYINT</datatype>
<default>NULL</default><relation table="Оборудование" row="id" />
</row>
<row name="Показание счетчика" null="1" autoincrement="0">
<datatype>INTEGER</datatype>
<default>NULL</default></row>
<row name="Установлен" null="1" autoincrement="0">
<datatype>DATE</datatype>
<default>NULL</default></row>
<row name="Дата выпуска" null="1" autoincrement="0">
<datatype>DATE</datatype>
<default>NULL</default></row>
<key type="PRIMARY" name="">
<part>id</part>
</key>
</table>
<table x="21" y="190" name="Показание счетчика">
<row name="id" null="1" autoincrement="1">
<datatype>TINYINT</datatype>
<default>NULL</default></row>
<row name="Оборудование" null="1" autoincrement="0">
<datatype>TINYINT</datatype>
<default>NULL</default><relation table="Оборудование" row="id" />
</row>
<row name="Месяц" null="1" autoincrement="0">
<datatype>DATE</datatype>
<default>NULL</default></row>
<row name="Показание счетчика" null="1" autoincrement="0">
<datatype>INTEGER</datatype>
<default>NULL</default></row>
<key type="PRIMARY" name="">
<part>id</part>
</key>
</table>
<table x="449" y="128" name="Предельная выработка">
<row name="id" null="1" autoincrement="1">
<datatype>TINYINT</datatype>
<default>NULL</default></row>
<row name="Деталь" null="1" autoincrement="0">
<datatype>TINYINT</datatype>
<default>NULL</default><relation table="Деталь" row="id" />
</row>
<row name="Начало" null="1" autoincrement="0">
<datatype>DATE</datatype>
<default>NULL</default></row>
<row name="Окончание" null="1" autoincrement="0">
<datatype>DATE</datatype>
<default>NULL</default></row>
<row name="Максимальное число страниц" null="1" autoincrement="0">
<datatype>INTEGER</datatype>
<default>NULL</default></row>
<row name="Максимум за месяц" null="1" autoincrement="0">
<datatype>INTEGER</datatype>
<default>NULL</default></row>
<key type="PRIMARY" name="">
<part>id</part>
</key>
</table>
</sql>

...
Рейтинг: 0 / 0
Прошу помощь в реализации системы фильтрации данных
    #38463413
JamDepot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
krvsaКрест, так крест...
Не обижайтесь, возможно я не совсем точно пояснил задачу.
Я ценю любую поддержку.

krvsaВ моем варинтре тостаточно ввести показания счетчиков для всех штук оборудования.
Ваше решение рабочее, только немного в другом контексте.
Мы не знаем показаний счетчиков для всех едениц оборудования, мы знаем только значение счетчика для своего оборудования, которое как две капли воды похоже на один из экземпляров из таблицы оборудование.
...
Рейтинг: 0 / 0
Прошу помощь в реализации системы фильтрации данных
    #38463437
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JamDepotНе обижайтесь ...
Я же не девачка чтобы обижаться...

Мне интересен сам предмет "проектирование БД". И обсуждение конкретной задачи представляю как некий "парад" моделей, которые показывают участники обсуждения.

Т.е. один показал "так", другой "эдак"... Это нормальный рабочий процесс.

Простое разглагольствование или фразы типа "это бред" считаю просто не конструктивными. Да и ссылку на тему с 5 страниц не приветствую...
...
Рейтинг: 0 / 0
Прошу помощь в реализации системы фильтрации данных
    #38463441
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JamDepotМы не знаем показаний счетчиков для всех едениц оборудования, мы знаем только значение счетчика для своего оборудования, которое как две капли воды похоже на один из экземпляров из таблицы оборудование.
Так в "своем" так же могут стоять меняные деталюшки...
Как тогда определить сколько "намотало" за месяц на этом оборудовании?
...
Рейтинг: 0 / 0
Прошу помощь в реализации системы фильтрации данных
    #38463455
JamDepot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
krvsa, Могут, но это нам не интересно. Наша задача выдать список, что надо менять по регламенту. Пользователь же может хоть каждый день их по своему желанию менять.

Как тогда определить сколько "намотало" за месяц на этом оборудовании?
Это нужно только если условие связано с кол-во страниц в месяц. Устроит среднее значение.
Делим показания счетчика на кол-во месяцев эксплуатации.
...
Рейтинг: 0 / 0
Прошу помощь в реализации системы фильтрации данных
    #38463505
JamDepot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Можно провести аналогию с любым другим оборудованием.
Например автомобилями: авто, деталь, условие, пробег.
...
Рейтинг: 0 / 0
Прошу помощь в реализации системы фильтрации данных
    #38463576
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JamDepotМогут, но это нам не интересно. Наша задача выдать список, что надо менять по регламенту. Пользователь же может хоть каждый день их по своему желанию менять.
Ну как же "не интересно"...
Если деталюшку заменили совсем недавно, как понять, что время ее еще не пришло, хотя счетчтк страниц уже зашкаливает?
...
Рейтинг: 0 / 0
Прошу помощь в реализации системы фильтрации данных
    #38463579
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JamDepotМожно провести аналогию с любым другим оборудованием.
Например автомобилями: авто, деталь, условие, пробег.
Я начинал трактористом - так там четко фиксировалось при каком значении счетчика моточасов был установлен тот или иной агрегат.
И его обслуга производилась из именно его "пробега".
...
Рейтинг: 0 / 0
Прошу помощь в реализации системы фильтрации данных
    #38463876
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я пытаюсь донести до вас мысль - задачу надо разбивать на две части
1 "Ведение" вашего справочника с материализацией всех условий для всех деталей и всего оборудования. Таблица при этом может быть очень большой и должна быть оборудована набором отчетов для того чтобы смотреть "что у нас есть"
2 Собственно работа, то бишь "пробивание" конкретного оборудования по базе на предмет не пора ли что либо менять при данном показании счетчика.
Я предполагаю что часть 2 будет работать гораздо чаще, чем часть 1 (в идеале часть 1 должна делаться один раз) и поэтому любые попытки съэкономить, упростить, облегчить часть 1 выльются в замедление работы для части 2.
Далее, если ваши условия настолько хитрые, что вы не можете составить запрос, чтобы он возвращал одну и только одну запись, то вытаскивайте несколько записей на клиент и уже на клиенте выбирайте лучшую.
...
Рейтинг: 0 / 0
Прошу помощь в реализации системы фильтрации данных
    #38464093
JamDepot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
krvsaЕсли деталюшку заменили совсем недавно, как понять, что время ее еще не пришло, хотя счетчтк страниц уже зашкаливает...
И его обслуга производилась из именно его "пробега".
Наша задча донести до пользователя регламент рекомендуемый производителем.
Следовать ему или нет решает пользователь.
SERG1257Я предполагаю что часть 2 будет работать гораздо чаще, чем часть 1 (в идеале часть 1 должна делаться один раз) и поэтому любые попытки съэкономить, упростить, облегчить часть 1 выльются в замедление работы для части 2.
Вы все правильно поняли.
Так ведь я же как раз и пытаюсь максимально продумать часть 1, а не использовать сходу способ с кучей условий, хотя понятно что он рабочий.
Разве проверка всех фильтров для любой еденицы оборудования не замедление работы?

Хочется хоть какой-то альтернативы (система предфильтров, битовые маски, ... что-то еще), за тем сюда и пришел:)

SERG1257 то вытаскивайте несколько записей на клиент и уже на клиенте выбирайте лучшую.
Т.е. пользователь должен выбрать подходящую?
Если да, то пользователи не любят лишние вопросы, пользователи любят нажать пару кнопок и получить профит.
Вопросы их пугают, повергают в шок и недоумение.
...
Рейтинг: 0 / 0
Прошу помощь в реализации системы фильтрации данных
    #38464111
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JamDepot Разве проверка всех фильтров для любой еденицы оборудования не замедление работы? Хотя таблица пересечений всех деталей со всем оборудованием может быть большой, запрашиваете вы всегда конкретную деталь в конкретном девайсе, а это очень селективно. Короче не замедлит.
JamDepot Т.е. пользователь должен выбрать подходящую?Не пользователь, а прикладная программа (если писать на SQL не умеете)
...
Рейтинг: 0 / 0
Прошу помощь в реализации системы фильтрации данных
    #38464129
JamDepot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SERG1257 Хотя таблица пересечений всех деталей со всем оборудованием может быть большой, запрашиваете вы всегда конкретную деталь
Это верно.
SERG1257если писать на SQL не умеете
Я вас понял, но ведь хочется же как лучше.

Думаете я загоняюсь, преждевременная оптимизация?
...
Рейтинг: 0 / 0
Прошу помощь в реализации системы фильтрации данных
    #38464491
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
JamDepotведь хочется же как лучше.
Пжалста:

1. Оборудование и детали загнать в одну таблицу - Оборудование
2. Создать таблицу входимости Оборудования 1 в Оборудование 2
т.е. обычный граф
условие замены оформить функцией
...
Рейтинг: 0 / 0
Прошу помощь в реализации системы фильтрации данных
    #38464515
JamDepot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_мод Создать таблицу входимости Оборудования 1 в Оборудование 2
не понял
...
Рейтинг: 0 / 0
Прошу помощь в реализации системы фильтрации данных
    #38464621
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_модJamDepotведь хочется же как лучше.
Пжалста:

1. Оборудование и детали загнать в одну таблицу - Оборудование
2. Создать таблицу входимости Оборудования 1 в Оборудование 2

Если с точки зрения предметной области не бывает составных деталей - то непонятно зачем это нужно и что этим выигрывается.
...
Рейтинг: 0 / 0
Прошу помощь в реализации системы фильтрации данных
    #38464756
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кот МатроскинЕсли с точки зрения предметной области не бывает составных деталей - то непонятно зачем это нужно и что этим выигрывается.
Нет, так будут. Надо изначально делать правильно
...
Рейтинг: 0 / 0
Прошу помощь в реализации системы фильтрации данных
    #38464763
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
JamDepot_мод Создать таблицу входимости Оборудования 1 в Оборудование 2
не понял
Какие детали в каком оборудавании используюся и с какими характеристиками.
...
Рейтинг: 0 / 0
Прошу помощь в реализации системы фильтрации данных
    #38464875
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_модКот МатроскинЕсли с точки зрения предметной области не бывает составных деталей - то непонятно зачем это нужно и что этим выигрывается.
Нет, так будут.

Мягко говоря, неочевидно.
чем для задачи ТС-а важно, что деталь B - это часть детали А, если у каждой свой независимый срок службы?
...
Рейтинг: 0 / 0
Прошу помощь в реализации системы фильтрации данных
    #38464890
JamDepot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_мод Оборудование и детали загнать в одну таблицу - Оборудование
Так:
id значение1 оборудование 12 оборудование 23 деталь 14 деталь 2
или так:
id_оборудование id_детальоборудование 1 деталь 1оборудование 1 деталь 2оборудование 2 деталь 1оборудование 2 деталь 3

_модКакие детали в каком оборудавании используюся и с какими характеристиками.
Характеристиками чего? Условия имеются ввиду?
...
Рейтинг: 0 / 0
Прошу помощь в реализации системы фильтрации данных
    #38464895
JamDepot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Так детали друг в друга не входят.
Детали входят в оборудование и у одной и той же детали может быть разный срок на одном оборудовании (если есть уловие).
...
Рейтинг: 0 / 0
Прошу помощь в реализации системы фильтрации данных
    #38464955
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JamDepotТак детали друг в друга не входят.

Я про это и говорю - если они друг в друга не входят, то смысла обьединять детали и оборудование в одну таблицу никакого.
а _мод считает, что если даже сейчас не входят, то все равно когда-нибудь будут входить и надо сразу закладывать такую возможность.
...
Рейтинг: 0 / 0
Прошу помощь в реализации системы фильтрации данных
    #38465046
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
JamDepotХарактеристиками чего? Условия имеются ввиду?
Так. Характеристики: количестово, срок службы, дата последней замены и прочие условия. На их основе и на основе параметров оборуд. и детали можно вычислить необходимость замены.
зы деталь вполне может входить в сборку а сборка в оборудование
...
Рейтинг: 0 / 0
48 сообщений из 48, показаны все 2 страниц
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Прошу помощь в реализации системы фильтрации данных
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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