powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Exists по двум или более таблицам
8 сообщений из 108, страница 5 из 5
Exists по двум или более таблицам
    #39523182
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KreatorXXIГаджимурадов Рустам> Денормализацию
modul_id в дефекты для данной задачи не советую.

Как раз, ИМХО, это реальный путь. Потому что может быть много разных условий (были ли вообще ВД, есть ли незакрытые и ещё масса признаков, которые пишутся в defect). Не факт, что будет всё востребовано, но вдруг.
Может и загоняемся. Хотелось сразу в комбобоксе отсечь "бездефектные" изделия. По мне лучше тогда пусть отображаются все, при выборе "бездефектных" просто не будет конкретики и всё. Чем выдумывать не совсем логичные схемы.Исходя из вышеописанного тобой, ИМХО, тебе нужна отдельная таблица неустраненных дефектов:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
CREATE TABLE defects_count
(
    module_id BIGINT NOT NULL,
    cnt SMALLINT DEFAULT 0 NOT NULL,
  CONSTRAINT defects_count__fk__modul FOREIGN KEY (module_id)
    REFEREENCES modul (id) ON UPDATE CASCADE ON DELETE CASCADE,
  CONSTRAINT defects_count__chk CHECK (cnt >= 0)
);

В триггере ДО удаления/обновления/добавления таблицы defect лочить запись таблицы defects_count с нужным идентификатором module_id, а в триггере ПОСЛЕ удаления/обновления/добавления эту запись обновлять - уменьшать/увеличивать на единицу, соответственно. Еще раз в сутки, во время обслуживания БД, запускать хранимую процедуру, проверяющую целостность - вычисляющую реальное количество дефектов для каждого module_id по таблице defect, сравнивающую со значением в таблице defects_count и, при расхождении, исправляющую это значение. Как-то так...
...
Рейтинг: 0 / 0
Exists по двум или более таблицам
    #39523190
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv> Здесь можно так же сделать.

Какой ужас... Нет, здесь не надо так делать. :)
И modul_id, и has_defects на порядок лучше.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Exists по двум или более таблицам
    #39523207
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам,

почему ужас-то? вполне себе полезное дублирование. Никаких многопользовательских конфликтов, и целостность вполне триггерами обеспечивается.
Правда, у автора структура не совсем такая.
...
Рейтинг: 0 / 0
Exists по двум или более таблицам
    #39523236
KreatorXXI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы знаете почему меня больше устраивает внедрение в defect доп. полей? У нас есть ещё подобная таблица, подвязанная к umass, с другой структурой и для других целей. И с ней такой же будет вопрос (пока не поднялся).
В принципе не исключаю ещё подобных вопросов с другими таблицами. Подобное производство так работает. Структуру данных особо не поменяешь.
...
Рейтинг: 0 / 0
Exists по двум или более таблицам
    #39523252
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KreatorXXI> Вы знаете почему меня больше устраивает внедрение в defect доп. полей?
KreatorXXI> У нас есть ещё подобная таблица, подвязанная к umass, с другой структурой
KreatorXXI> и для других целей. И с ней такой же будет вопрос (пока не поднялся).

Ну будет их две, три - не тридцать же. Считать надо не количество таблиц,
а количество... "признаков". Вот в данном случае "имеет дефекты" является
признаком (при чем не изделия, а паспорта - это, видимо его модификация).
Для понимания можно воспринимать/называть признак не как "дефективный",
а как "протестированный и готовый к ..."

> Подобное производство так работает. Структуру данных особо не поменяешь.

Но именно структуру вы и собираетесь менять. :) Думать надо в первую
очередь с т.з. бизнес-логики, а не БД и пр. технологических тонкостей.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Exists по двум или более таблицам
    #39523256
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> делать в таблице изделий признак (поле) "has defects"
> (или "defective", как больше нравится), который будет
> проставляться (видимо по визе ОТК) в true/false.

Щас подумал, вспоминая схему работы ОТК - он ведь
тоже в вашей системе работает - наверняка, сама эта
виза является документом и имеет кучу атрибутов
(дата, проверяющие etc), а список дефектов - лишь
приложение к ней. Вот по этому документу вы и могли
бы как раз получить список изделий с дефектами.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Exists по двум или более таблицам
    #39523360
KreatorXXI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам,

"Визы" мастера и ОТК хранятся как раз в umass. Вот к этой таблице и подвязываем.
...
Рейтинг: 0 / 0
Exists по двум или более таблицам
    #39523427
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вроде как в umass хранились некие операции (не понял, что это).
Но в любом случае, механизм тот же - если ОТК в своей визе
сказал "проверил, дефектов нет" - соотв. признак и надо проставлять
для конкретного паспорта (или группы, если виза групповая).
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
8 сообщений из 108, страница 5 из 5
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Exists по двум или более таблицам
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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