powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Схема хранения сатусов заказов...
32 сообщений из 32, показаны все 2 страниц
Схема хранения сатусов заказов...
    #34378907
ByKiS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пытался задать этот вопрос и раньше, но так как не получил ответа, выношу отдельным постом. Знаю, что среди вас, уважаемые эксперты, есть отзывчевые люди и надеюсь на помощь или некоторые идеи / замечания по данному вопросу.
Ситуация такая:
Фирма занимается изготовлением жалюзи, каждая жалюзи сначала
1) принимается,
2) потом вводится в базу,
3) подтверждается на производство,
4) изготовляется,
5) отдаётся на склад готовой продукции,
6) отправляется оттуда в салон,
7) монтируется и т.д.
Для простоты скажем, что каждая жалюзи перед тем как оказаться у клиента должно пройти 7 стадий (причём логически отдаваться на производство может только после 3 стадии). Пытался придумать схему - попытка привела к схеме изображённой на картинке. Не даёт покоя следующий момент - на производство жалюзи отдаются 3 раза в сутки каждые 8 часов (для каждой смены), чтобы из базы отобрать жалюзи, которые надо изготовлять приходится пересматривать n*7 записей, что даже приняв милион жалюзи довольно много и тормознуто...
Подскажите, по какой схеме Вы бы делали базу исходя из данной ситуации? Готов описать подробнее, если какой-то момент не до конца ясен. Заранее признателен за любую дельную идею и совет.
...
Рейтинг: 0 / 0
Схема хранения сатусов заказов...
    #34379482
anjey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может я что не так понял, но с первого взгляда задача видится так: нужно для каждой записи в tblOrderBlinds, т.е. для каждой строки документа иметь статус. Статусы перечислены вами в столбик под номерами....

Судя потому, что вы каждую жалюзю соотносите со статусом связью многие-ко-многим, она (жалюзь или жалюзя :) может иметь в один момент времени несколько статусов ?

Если в определенный момент времени статус ТОЛЬКО один, то почему бы просто не добавить напосредственно в tblOrderBlinds еще одно поле, в котором и будет отмечаться статус ?

p.s.
Кстати, задача упростилась бы для тех у кого есть желание вам помочь, если бы вы привели по нескольку реальных записей из каждой таблицы, для наглядности...
...
Рейтинг: 0 / 0
Схема хранения сатусов заказов...
    #34379684
ByKiS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
anjeyСудя потому, что вы каждую жалюзю соотносите со статусом связью многие-ко-многимТак вроде один ко многим - одна жальзья - прошла много статусов

anjeyможет иметь в один момент времени несколько статусов ?НЕТ

anjeyпочему бы просто не добавить напосредственно в tblOrderBlinds еще одно поле, в котором и будет отмечаться статус ?То есть при создании документа изменения статуса, последний присвоенный статус заносить в то поле? При создании следующего документа изменять на новый?

anjeyпривели по нескольку реальных записей из каждой таблицы, для наглядности...

tblOrders
OrderID OrderNo1АА-1112АА-2223АА-333

tblOrdersBlinds
BlindIDOrderIDName11Жалюзья121Жалюзья231Жалюзья342Жалюзья453Жалюзья563Жалюзья6

tblStatuses
StatusIDStatusNameAllowProduceAllowEdit1Жалюзья подтвепждённа для производстваTrueFalse2Жалюзья на производствеFalseFalse3Производство жалюзьи приосановленоFalseTrue4Жалюзья изготовленаFalseFalse............9Не присвоенFalseTrue

tblStatusHistoryDocuments
StautsHistoryDocumentIDStautsHistoryDocumentNoAssignedstatusDate1Подтверждение заказа 112001.01.012Задание на производство 122001.01.023Изятие из производства 132001.01.034Изятие из производства 232001.01.045Задание на производство 122001.01.056Выдача со склада 142001.01.06

tblStatusHistory
StatusChangeIDBlindIDStatusHistoryDocumentID1112213314415516617128229321042115212621313142415151625171618261936204621562266

Ну и для извлечения статуса (например чтобы вытащить то, что сегодня надо изготовлять) приходится прогонять такой запрос :(
Код: plaintext
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.
SELECT
dbo.tblOrdersBlinds.BlinID, 
CASE WHEN Date IS NULL THEN OrderDate ELSE Date END AS LastStatusAssignationDate, 
CASE WHEN StatusID IS NULL THEN  9  ELSE StatusID END AS LastAssignedStatusID

FROM
dbo.tblOrders 
INNER JOIN 
dbo.tblOrdersBlinds ON dbo.tblOrders.OrderID = dbo.tblOrdersBlinds.OrderID 
LEFT OUTER JOIN
(
SELECT
MAX(DISTINCT dbo.tblStatusHistoryDocuments.Date) AS LastStatusAssignationDate, 
dbo.tblStatusHistory.BlindID

FROM
dbo.tblStatusHistoryDocuments
INNER JOIN
dbo.tblStatusHistory ON dbo.tblStatusHistoryDocuments.StatusHistoryDocumentID = dbo.tblStatusHistory.StatusHistoryDocumentID

GROUP BY dbo.tblStatusHistory.BlindID
) 
LastStatusAssignationDateView

INNER JOIN
dbo.tblStatusHistoryDocuments ON LastStatusAssignationDateView.LastStatusAssignationDate = dbo.tblStatusHistoryDocuments.Date 
INNER JOIN dbo.tblStatuses ON dbo.tblStatusHistoryDocuments.AssignedStatusID = dbo.tblStatuses.StatusID ON dbo.tblOrdersBlinds.BlinID = LastStatusAssignationDateView.BlindID
...
Рейтинг: 0 / 0
Схема хранения сатусов заказов...
    #34381782
anjey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Рисну предложить следующую структуру: (см.рисунок)
...
Рейтинг: 0 / 0
Схема хранения сатусов заказов...
    #34381804
Фотография BULK INSERT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ByKiSПодскажите.

ошибка в имени поля Blin d ID
...
Рейтинг: 0 / 0
Схема хранения сатусов заказов...
    #34381881
anjey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
... в смысле ? в чем ошибка ?
...
Рейтинг: 0 / 0
Схема хранения сатусов заказов...
    #34385648
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если количество сотояний заказа заранее известно, то почему бы не оформить их одной записью.

(
...
введён_в_базу date,
подтверждён_на_производство date,
началось_изготовление date,
отдан_на_склад date,
отправлен_в_салон date,
отправлен_в_монтаж date
и т.д.
)

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

С другой стороны, каждый новый статус должен быть документально подтверждён, а это значит, что в БД должна быть заведена запись с обоснованием изменения статуса. Даты создания этой записи будет достаточно, чтобы определить момент изменения статуса. Скорее всего нас будет интересовать только текущий статус заказа, поэтому историю изменений статуса можно вообще не хранить, а если хранить, то использовать для этого средства архивирования данных встроенные в СУБД, например секционирование таблиц.
...
Рейтинг: 0 / 0
Схема хранения сатусов заказов...
    #34385699
йо-хо-хо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mcureenabЕсли количество сотояний заказа заранее известно, то почему бы не оформить их одной записью.

даже есл известно и конечно количество вариантов состояния заказа, может быть неизвестно количество переходов состояний - RoutineProcessStages...

хотя... похже автору это и не кажется актуальным

введен
не подтвержден а производство
корректирован
согласован
не подтвержден на производство
корректирован
согласован
подтвержден а производство
передан на изготовление
принят к изготовлению
изготавливается
коректирован
согласован
введен
подтвержден в производство
передан в производство
принят к изготовлению
изготавливается
изготовлен
передан к проверке соответствия
прошел поверку
передан к хранению до выдачи

бла-бла-бла


в реальном мире большинство процедур подвержены новациям и имеют циклический характер

1 следствие фиксированного одназначно набора этапов не существует
1.а. если он существует - подождите пока изменится и убедитесь в правоте тезы 1

2 количество циклов стремится к бесконечности настолько насколько терпелив клиент и/или ущербен производственый процесс
2.а. количество циклов по этапам реально ничем не ограничено и в идеальных условиях стремится к бесконечности
...
Рейтинг: 0 / 0
Схема хранения сатусов заказов...
    #34386030
ByKiS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
йо-хо-хоможет быть неизвестно количество переходов состояний - RoutineProcessStages...Да, это имеет место уже сейчас. Я привёл просто очень упрощунную схему..

mcureenabЕсли количество сотояний заказа заранее известно, то почему бы не оформить их одной записью."Потому что" - написано выше. Как я понял из сказанного набиолее хороший выход - (цитирую себя)
БыкисТо есть при создании документа изменения статуса, последний присвоенный статус заносить в таблицу жалюзей? При создании следующего документа изменять на новый?Если ничего лучшего нету - переделую на это...
...
Рейтинг: 0 / 0
Схема хранения сатусов заказов...
    #34386074
мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ByKiSничего лучшего нету - переделую на это...
Почему нет ? Статус (любого объекта) - это функция от даты и истории всех операций по этому объекту. Т.о. можно получать статус на любую дату-время.
...
Рейтинг: 0 / 0
Схема хранения сатусов заказов...
    #34386084
ByKiS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А? То есть мою схему оставляем, но статусы вытягиваем не запросом, а функцией? Будет оперативнее?
...
Рейтинг: 0 / 0
Схема хранения сатусов заказов...
    #34386174
ByKiS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ещё раз уточню для чего всё это. Надо выбирать из таблицы жалюзи те жалюзи, у которых статус AllowProduce = True, то есть из tblStatuses
StatusIDStatusNameAllowProduceAllowEdit 1Жалюзья подтвепждённа для производстваTrueFalse ............ 10Гарантийны ремонтTrueFalse 11Дополнительные работыTrueTrue ............
Как их выбрать, не перебирая все?
...
Рейтинг: 0 / 0
Схема хранения сатусов заказов...
    #34386371
мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ByKiSКак их выбрать, не перебирая все?
Если история не интересует, то все просто: прошла операция - изменился текущий статус. По статусу можно построить индекс.
Если нужна история, то функция (медленно но верно)
...
Рейтинг: 0 / 0
Схема хранения сатусов заказов...
    #34386400
ByKiS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нужна история
ByKiSТо есть мою схему оставляем?И пользуем функцию? Или в схеме можно что-нибудь изменить, для убыстрения ф-ии?
...
Рейтинг: 0 / 0
Схема хранения сатусов заказов...
    #34386422
Фотография BULK INSERT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ByKiSКак их выбрать, не перебирая все?

помятуя основополагающий принцип последовательности и направленности во времени причинно-следственных связей...
...
Рейтинг: 0 / 0
Схема хранения сатусов заказов...
    #34386446
ByKiS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Too few parameters. Unknown syntax near 'помятуя' :)
...
Рейтинг: 0 / 0
Схема хранения сатусов заказов...
    #34386500
мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ByKiSИ пользуем функцию? Или в схеме можно что-нибудь изменить, для убыстрения ф-ии?
можно скомбинировать: хранить текущий статус для быстрого поиска и функцию для поиска (медленного перебором) по истории операций.
...
Рейтинг: 0 / 0
Схема хранения сатусов заказов...
    #34386518
Фотография BULK INSERT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мод ByKiSИ пользуем функцию? Или в схеме можно что-нибудь изменить, для убыстрения ф-ии?
можно скомбинировать: хранить текущий статус для быстрого поиска и функцию для поиска (медленного перебором) по истории операций.

комбинаторы, блин... перебиратели...

не это просто ступороз какой-то - нуфига искать перебором, если можно взять последнюю по времени?

последняя по времени запись в истории изменений и будет об актуальном статусе заказа
...
Рейтинг: 0 / 0
Схема хранения сатусов заказов...
    #34386752
ByKiS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подробнее пожалуйста. Я тут о перебирании всех жалюзей, а Вы?
...
Рейтинг: 0 / 0
Схема хранения сатусов заказов...
    #34386791
Фотография BULK INSERT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ByKiSПодробнее пожалуйста. Я тут о перебирании всех жалюзей, а Вы?

а я вас вообще не понимаю...

какие такие жалюзи... с ИМХО вы вообще неверно выбрали парадигму.

я бы понял если бы вы рассматривали процесс как исполнение заказа клиента - а вы мне про какие-то жалюзи толкуте...

если бы вы решали две задачи параллельно ERP и CRM это было бы понятно, но когда вы мешаете все в кучу, понять вас становится слишком сложно
...
Рейтинг: 0 / 0
Схема хранения сатусов заказов...
    #34386841
мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BULK INSERTпоследняя по времени запись в истории изменений и будет об актуальном статусе заказа
Да, это правильно
...
Рейтинг: 0 / 0
Схема хранения сатусов заказов...
    #34386889
ByKiS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BULK INSERTесли бы вы решали две задачи параллельно ERP и CRM это было бы понятно, но когда вы мешаете все в кучу, понять вас становится слишком сложноА неполучается так вот красиво разделить. Весь этот весь этот мусор нужен для установки виновника при обнаружении брака (кто мерил, кто вводил, кто резал и клеил, кто монтировал и т.д.).
...
Рейтинг: 0 / 0
Схема хранения сатусов заказов...
    #34387024
ByKiS BULK INSERTесли бы вы решали две задачи параллельно ERP и CRM это было бы понятно, но когда вы мешаете все в кучу, понять вас становится слишком сложноА неполучается так вот красиво разделить. Весь этот весь этот мусор нужен для установки виновника при обнаружении брака (кто мерил, кто вводил, кто резал и клеил, кто монтировал и т.д.).
Мои 5 копеек....
Может просто ввести наряды на выполнение работ.... типа:

Наряды (ID наряда, ID жалюзи, ID работника, ID вида работ, Дата наряда, Дата выполнения, другие поля).

Пока наряд не выполнен (не "закрыт") поле "дата выполнения" остается пустым и по совокупности ID жалюзи+пустая дата легко определить статус - какая работа выполняется в данный момент...
...
Рейтинг: 0 / 0
Схема хранения сатусов заказов...
    #34387078
Фотография BULK INSERT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Станислав Снаряды на выполнение работ...

совершенно верно
...
Рейтинг: 0 / 0
Схема хранения сатусов заказов...
    #34387088
ByKiS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наряды - это типо моего "tblStatusAssignationHistoryDocuments" ?
...
Рейтинг: 0 / 0
Схема хранения сатусов заказов...
    #34387114
Фотография BULK INSERT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ByKiSНаряды - это типо моего "tblStatusAssignationHistoryDocuments" ?

нет.

это другая парадигма бизнес-процесса
...
Рейтинг: 0 / 0
Схема хранения сатусов заказов...
    #34387669
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Задачка со статусами имеет нехорошее свойство разрастаться.

Фаза1. В заказе храним последний статус и его дату.
Фаза2. Записываем в лог все изменения статуса (транзакции СУБД).
Фаза3. Нужен не только лог, а история - нужно фиксировать не любые апдейты, а лишь должным образом (документально, бизнес-транзакцией) подтвержденные изменения. Обратно, документ внесший вклад в историю, не может быть просто так удален/изменен.
Фаза4. Интерпретация истории должна быть темпоральной - анализ за прошлый месяц должен производится с тем состоянием справочников ( например для данного статуса возможность/невозможность передачи в производство), которое было на тот момент. Нужна соответственно история справочников.
Фаза5. В историю оказываются тоже закрадываются ошибки, и на нее могут быть несовпадающие точки зрения. Версии истории.

Где-то надо останавливаться.
...
Рейтинг: 0 / 0
Схема хранения сатусов заказов...
    #34387715
Фотография proposed amendment
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ModelRГде-то надо останавливаться.


и подумать нужно набросать WorkFlow диаграмму и потом по ней строить схему БД
...
Рейтинг: 0 / 0
Схема хранения сатусов заказов...
    #34387745
ByKiS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да вроде думал я...
Ну вот например сделали жалюзю - прошла она все стадии/статусы - прошёл год - вернули её на гарантийный ремонт
ЖализЯ таже, статус её (по гарантийному (StatusAssignationDocument) талону номер ГАР001) - вернута на ремонт - надо её (часть заказа) опять отдавать на производство...
это как вариант, на нём жизненный цикл жалюзи не закаинчивается
...
Рейтинг: 0 / 0
Схема хранения сатусов заказов...
    #34387805
Фотография proposed amendment
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ByKiSДа вроде думал я...

мало, очевидно... извините

какой вам смысл рассуждать о жизненом цикле жалюзи...

он начинается с того момента, когда жалюзи произведены и заканчивается в мусорном баке...

я бы еще понял, если бы вы торговали готовой продукцией, но вы же работаете под заказ - и ваши бизнес-процессы начинаются задолго до того, как жализи будут изготовлены...

кроме того, нельзя объять необъятного, вы не сможете предусмотреть и описать в одной системе все возможные пертрубации, которые могут произойти вокруг и по поводу жалюзи - сделайте систему модульной. в вашем сумбурном примере

прием, обработка, сопровождение заказа
изготовление - производственный цикл
поставка и обслуживание продукции

почитайте что нибудь по стандартам СМК, если уж пытаетесь работать с претензиями и рекламациями. по стандартам ISO очень много и зачастую даже понятно написано
...
Рейтинг: 0 / 0
Схема хранения сатусов заказов...
    #34388630
ByKiS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
proposed amendmentпочитайте что нибудь по стандартам СМК, если уж пытаетесь работать с претензиями и рекламациями. по стандартам ISO очень много и зачастую даже понятно написано
Пытался найти в гугле - но там столько информации, нужной и не нужной, что уже вообще не соображаю что такое "стандарты СМК". Может ссылку дадите на что нибудь конкретное? Если есть, конечно.
...
Рейтинг: 0 / 0
Схема хранения сатусов заказов...
    #34388634
Фотография proposed amendment
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ByKiSЕсли есть, конечно.

тынц
...
Рейтинг: 0 / 0
32 сообщений из 32, показаны все 2 страниц
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Схема хранения сатусов заказов...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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