|
|
|
Схема хранения сатусов заказов...
|
|||
|---|---|---|---|
|
#18+
Пытался задать этот вопрос и раньше, но так как не получил ответа, выношу отдельным постом. Знаю, что среди вас, уважаемые эксперты, есть отзывчевые люди и надеюсь на помощь или некоторые идеи / замечания по данному вопросу. Ситуация такая: Фирма занимается изготовлением жалюзи, каждая жалюзи сначала 1) принимается, 2) потом вводится в базу, 3) подтверждается на производство, 4) изготовляется, 5) отдаётся на склад готовой продукции, 6) отправляется оттуда в салон, 7) монтируется и т.д. Для простоты скажем, что каждая жалюзи перед тем как оказаться у клиента должно пройти 7 стадий (причём логически отдаваться на производство может только после 3 стадии). Пытался придумать схему - попытка привела к схеме изображённой на картинке. Не даёт покоя следующий момент - на производство жалюзи отдаются 3 раза в сутки каждые 8 часов (для каждой смены), чтобы из базы отобрать жалюзи, которые надо изготовлять приходится пересматривать n*7 записей, что даже приняв милион жалюзи довольно много и тормознуто... Подскажите, по какой схеме Вы бы делали базу исходя из данной ситуации? Готов описать подробнее, если какой-то момент не до конца ясен. Заранее признателен за любую дельную идею и совет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.03.2007, 11:57 |
|
||
|
Схема хранения сатусов заказов...
|
|||
|---|---|---|---|
|
#18+
Может я что не так понял, но с первого взгляда задача видится так: нужно для каждой записи в tblOrderBlinds, т.е. для каждой строки документа иметь статус. Статусы перечислены вами в столбик под номерами.... Судя потому, что вы каждую жалюзю соотносите со статусом связью многие-ко-многим, она (жалюзь или жалюзя :) может иметь в один момент времени несколько статусов ? Если в определенный момент времени статус ТОЛЬКО один, то почему бы просто не добавить напосредственно в tblOrderBlinds еще одно поле, в котором и будет отмечаться статус ? p.s. Кстати, задача упростилась бы для тех у кого есть желание вам помочь, если бы вы привели по нескольку реальных записей из каждой таблицы, для наглядности... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2007, 04:56 |
|
||
|
Схема хранения сатусов заказов...
|
|||
|---|---|---|---|
|
#18+
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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2007, 09:41 |
|
||
|
Схема хранения сатусов заказов...
|
|||
|---|---|---|---|
|
#18+
Рисну предложить следующую структуру: (см.рисунок) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2007, 09:47 |
|
||
|
Схема хранения сатусов заказов...
|
|||
|---|---|---|---|
|
#18+
ByKiSПодскажите. ошибка в имени поля Blin d ID ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2007, 10:52 |
|
||
|
Схема хранения сатусов заказов...
|
|||
|---|---|---|---|
|
#18+
... в смысле ? в чем ошибка ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2007, 12:35 |
|
||
|
Схема хранения сатусов заказов...
|
|||
|---|---|---|---|
|
#18+
Если количество сотояний заказа заранее известно, то почему бы не оформить их одной записью. ( ... введён_в_базу date, подтверждён_на_производство date, началось_изготовление date, отдан_на_склад date, отправлен_в_салон date, отправлен_в_монтаж date и т.д. ) изначально поля не заполнены. По мере продвижения заказа по технологической цепочке указываем дату и время изменения соответствующего статуса заказа. И количество записей не растёт и все данные есть под рукой, чтобы ограничения целостности навешать. С другой стороны, каждый новый статус должен быть документально подтверждён, а это значит, что в БД должна быть заведена запись с обоснованием изменения статуса. Даты создания этой записи будет достаточно, чтобы определить момент изменения статуса. Скорее всего нас будет интересовать только текущий статус заказа, поэтому историю изменений статуса можно вообще не хранить, а если хранить, то использовать для этого средства архивирования данных встроенные в СУБД, например секционирование таблиц. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2007, 22:19 |
|
||
|
Схема хранения сатусов заказов...
|
|||
|---|---|---|---|
|
#18+
mcureenabЕсли количество сотояний заказа заранее известно, то почему бы не оформить их одной записью. даже есл известно и конечно количество вариантов состояния заказа, может быть неизвестно количество переходов состояний - RoutineProcessStages... хотя... похже автору это и не кажется актуальным введен не подтвержден а производство корректирован согласован не подтвержден на производство корректирован согласован подтвержден а производство передан на изготовление принят к изготовлению изготавливается коректирован согласован введен подтвержден в производство передан в производство принят к изготовлению изготавливается изготовлен передан к проверке соответствия прошел поверку передан к хранению до выдачи бла-бла-бла в реальном мире большинство процедур подвержены новациям и имеют циклический характер 1 следствие фиксированного одназначно набора этапов не существует 1.а. если он существует - подождите пока изменится и убедитесь в правоте тезы 1 2 количество циклов стремится к бесконечности настолько насколько терпелив клиент и/или ущербен производственый процесс 2.а. количество циклов по этапам реально ничем не ограничено и в идеальных условиях стремится к бесконечности ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2007, 23:03 |
|
||
|
Схема хранения сатусов заказов...
|
|||
|---|---|---|---|
|
#18+
йо-хо-хоможет быть неизвестно количество переходов состояний - RoutineProcessStages...Да, это имеет место уже сейчас. Я привёл просто очень упрощунную схему.. mcureenabЕсли количество сотояний заказа заранее известно, то почему бы не оформить их одной записью."Потому что" - написано выше. Как я понял из сказанного набиолее хороший выход - (цитирую себя) БыкисТо есть при создании документа изменения статуса, последний присвоенный статус заносить в таблицу жалюзей? При создании следующего документа изменять на новый?Если ничего лучшего нету - переделую на это... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2007, 09:32 |
|
||
|
Схема хранения сатусов заказов...
|
|||
|---|---|---|---|
|
#18+
ByKiSничего лучшего нету - переделую на это... Почему нет ? Статус (любого объекта) - это функция от даты и истории всех операций по этому объекту. Т.о. можно получать статус на любую дату-время. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2007, 09:46 |
|
||
|
Схема хранения сатусов заказов...
|
|||
|---|---|---|---|
|
#18+
А? То есть мою схему оставляем, но статусы вытягиваем не запросом, а функцией? Будет оперативнее? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2007, 09:50 |
|
||
|
Схема хранения сатусов заказов...
|
|||
|---|---|---|---|
|
#18+
Ещё раз уточню для чего всё это. Надо выбирать из таблицы жалюзи те жалюзи, у которых статус AllowProduce = True, то есть из tblStatuses StatusIDStatusNameAllowProduceAllowEdit 1Жалюзья подтвепждённа для производстваTrueFalse ............ 10Гарантийны ремонтTrueFalse 11Дополнительные работыTrueTrue ............ Как их выбрать, не перебирая все? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2007, 10:13 |
|
||
|
Схема хранения сатусов заказов...
|
|||
|---|---|---|---|
|
#18+
ByKiSКак их выбрать, не перебирая все? Если история не интересует, то все просто: прошла операция - изменился текущий статус. По статусу можно построить индекс. Если нужна история, то функция (медленно но верно) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2007, 11:05 |
|
||
|
Схема хранения сатусов заказов...
|
|||
|---|---|---|---|
|
#18+
Нужна история ByKiSТо есть мою схему оставляем?И пользуем функцию? Или в схеме можно что-нибудь изменить, для убыстрения ф-ии? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2007, 11:11 |
|
||
|
Схема хранения сатусов заказов...
|
|||
|---|---|---|---|
|
#18+
ByKiSКак их выбрать, не перебирая все? помятуя основополагающий принцип последовательности и направленности во времени причинно-следственных связей... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2007, 11:16 |
|
||
|
Схема хранения сатусов заказов...
|
|||
|---|---|---|---|
|
#18+
Too few parameters. Unknown syntax near 'помятуя' :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2007, 11:21 |
|
||
|
Схема хранения сатусов заказов...
|
|||
|---|---|---|---|
|
#18+
ByKiSИ пользуем функцию? Или в схеме можно что-нибудь изменить, для убыстрения ф-ии? можно скомбинировать: хранить текущий статус для быстрого поиска и функцию для поиска (медленного перебором) по истории операций. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2007, 11:36 |
|
||
|
Схема хранения сатусов заказов...
|
|||
|---|---|---|---|
|
#18+
мод ByKiSИ пользуем функцию? Или в схеме можно что-нибудь изменить, для убыстрения ф-ии? можно скомбинировать: хранить текущий статус для быстрого поиска и функцию для поиска (медленного перебором) по истории операций. комбинаторы, блин... перебиратели... не это просто ступороз какой-то - нуфига искать перебором, если можно взять последнюю по времени? последняя по времени запись в истории изменений и будет об актуальном статусе заказа ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2007, 11:44 |
|
||
|
Схема хранения сатусов заказов...
|
|||
|---|---|---|---|
|
#18+
Подробнее пожалуйста. Я тут о перебирании всех жалюзей, а Вы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2007, 12:25 |
|
||
|
Схема хранения сатусов заказов...
|
|||
|---|---|---|---|
|
#18+
ByKiSПодробнее пожалуйста. Я тут о перебирании всех жалюзей, а Вы? а я вас вообще не понимаю... какие такие жалюзи... с ИМХО вы вообще неверно выбрали парадигму. я бы понял если бы вы рассматривали процесс как исполнение заказа клиента - а вы мне про какие-то жалюзи толкуте... если бы вы решали две задачи параллельно ERP и CRM это было бы понятно, но когда вы мешаете все в кучу, понять вас становится слишком сложно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2007, 12:34 |
|
||
|
Схема хранения сатусов заказов...
|
|||
|---|---|---|---|
|
#18+
BULK INSERTпоследняя по времени запись в истории изменений и будет об актуальном статусе заказа Да, это правильно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2007, 12:44 |
|
||
|
Схема хранения сатусов заказов...
|
|||
|---|---|---|---|
|
#18+
BULK INSERTесли бы вы решали две задачи параллельно ERP и CRM это было бы понятно, но когда вы мешаете все в кучу, понять вас становится слишком сложноА неполучается так вот красиво разделить. Весь этот весь этот мусор нужен для установки виновника при обнаружении брака (кто мерил, кто вводил, кто резал и клеил, кто монтировал и т.д.). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2007, 12:56 |
|
||
|
Схема хранения сатусов заказов...
|
|||
|---|---|---|---|
|
#18+
ByKiS BULK INSERTесли бы вы решали две задачи параллельно ERP и CRM это было бы понятно, но когда вы мешаете все в кучу, понять вас становится слишком сложноА неполучается так вот красиво разделить. Весь этот весь этот мусор нужен для установки виновника при обнаружении брака (кто мерил, кто вводил, кто резал и клеил, кто монтировал и т.д.). Мои 5 копеек.... Может просто ввести наряды на выполнение работ.... типа: Наряды (ID наряда, ID жалюзи, ID работника, ID вида работ, Дата наряда, Дата выполнения, другие поля). Пока наряд не выполнен (не "закрыт") поле "дата выполнения" остается пустым и по совокупности ID жалюзи+пустая дата легко определить статус - какая работа выполняется в данный момент... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2007, 13:25 |
|
||
|
Схема хранения сатусов заказов...
|
|||
|---|---|---|---|
|
#18+
Станислав Снаряды на выполнение работ... совершенно верно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2007, 13:35 |
|
||
|
|

start [/forum/topic.php?fid=32&fpage=124&tid=1544686]: |
0ms |
get settings: |
11ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
78ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
2ms |
| others: | 246ms |
| total: | 431ms |

| 0 / 0 |
