Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Firebird, InterBase Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 2 3 4 [5]      все
 Re: Exists по двум или более таблицам  [new]
rdb_dev
Member

Откуда: с болот
Сообщений: 1498
KreatorXXI
Гаджимурадов Рустам
> Денормализацию
modul_id в дефекты для данной задачи не советую.

Как раз, ИМХО, это реальный путь. Потому что может быть много разных условий (были ли вообще ВД, есть ли незакрытые и ещё масса признаков, которые пишутся в defect). Не факт, что будет всё востребовано, но вдруг.
Может и загоняемся. Хотелось сразу в комбобоксе отсечь "бездефектные" изделия. По мне лучше тогда пусть отображаются все, при выборе "бездефектных" просто не будет конкретики и всё. Чем выдумывать не совсем логичные схемы.
Исходя из вышеописанного тобой, ИМХО, тебе нужна отдельная таблица неустраненных дефектов:
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 и, при расхождении, исправляющую это значение. Как-то так...
19 сен 17, 11:52    [20805487]     Ответить | Цитировать Сообщить модератору
 Re: Exists по двум или более таблицам  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 57329
kdv> Здесь можно так же сделать.

Какой ужас... Нет, здесь не надо так делать. :)
И modul_id, и has_defects на порядок лучше.

Posted via ActualForum NNTP Server 1.5

19 сен 17, 11:57    [20805506]     Ответить | Цитировать Сообщить модератору
 Re: Exists по двум или более таблицам  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 26564
Гаджимурадов Рустам,

почему ужас-то? вполне себе полезное дублирование. Никаких многопользовательских конфликтов, и целостность вполне триггерами обеспечивается.
Правда, у автора структура не совсем такая.
19 сен 17, 12:06    [20805549]     Ответить | Цитировать Сообщить модератору
 Re: Exists по двум или более таблицам  [new]
KreatorXXI
Member

Откуда: Москва
Сообщений: 253
Вы знаете почему меня больше устраивает внедрение в defect доп. полей? У нас есть ещё подобная таблица, подвязанная к umass, с другой структурой и для других целей. И с ней такой же будет вопрос (пока не поднялся).
В принципе не исключаю ещё подобных вопросов с другими таблицами. Подобное производство так работает. Структуру данных особо не поменяешь.
19 сен 17, 12:44    [20805737]     Ответить | Цитировать Сообщить модератору
 Re: Exists по двум или более таблицам  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 57329
KreatorXXI> Вы знаете почему меня больше устраивает внедрение в defect доп. полей?
KreatorXXI> У нас есть ещё подобная таблица, подвязанная к umass, с другой структурой
KreatorXXI> и для других целей. И с ней такой же будет вопрос (пока не поднялся).

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

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

Но именно структуру вы и собираетесь менять. :) Думать надо в первую
очередь с т.з. бизнес-логики, а не БД и пр. технологических тонкостей.

Posted via ActualForum NNTP Server 1.5

19 сен 17, 13:12    [20805856]     Ответить | Цитировать Сообщить модератору
 Re: Exists по двум или более таблицам  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 57329
> делать в таблице изделий признак (поле) "has defects"
> (или "defective", как больше нравится), который будет
> проставляться (видимо по визе ОТК) в true/false.

Щас подумал, вспоминая схему работы ОТК - он ведь
тоже в вашей системе работает - наверняка, сама эта
виза является документом и имеет кучу атрибутов
(дата, проверяющие etc), а список дефектов - лишь
приложение к ней. Вот по этому документу вы и могли
бы как раз получить список изделий с дефектами.

Posted via ActualForum NNTP Server 1.5

19 сен 17, 13:16    [20805868]     Ответить | Цитировать Сообщить модератору
 Re: Exists по двум или более таблицам  [new]
KreatorXXI
Member

Откуда: Москва
Сообщений: 253
Гаджимурадов Рустам,

"Визы" мастера и ОТК хранятся как раз в umass. Вот к этой таблице и подвязываем.
19 сен 17, 15:38    [20806437]     Ответить | Цитировать Сообщить модератору
 Re: Exists по двум или более таблицам  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 57329
Вроде как в umass хранились некие операции (не понял, что это).
Но в любом случае, механизм тот же - если ОТК в своей визе
сказал "проверил, дефектов нет" - соотв. признак и надо проставлять
для конкретного паспорта (или группы, если виза групповая).

Posted via ActualForum NNTP Server 1.5

19 сен 17, 17:34    [20806859]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 2 3 4 [5]      все
Все форумы / Firebird, InterBase Ответить