|
Непротиворечивость данных
|
|||
---|---|---|---|
#18+
Под непротиворечивостью данных я имею ввиду не ссылочную целостность, а отсутствие в наборе данных явных внутренних противоречий как со здравым смыслом, например: Остаток товара ААА = -1; Поступление = 50, Отгрузка = 51, так и с действующими в конкретной компании правилами, например: «Клиентам категории VIP возможна отгрузка без предоплаты, остальным клиентам отгрузка без предоплаты в 30% не производится»; при этом в системе существует отгрузка без предоплаты для клиента, который не VIP Хотелось бы обсудить: - Насколько важно обеспечение такой непротиворечивости – стоит ли овчинка выделки - Если это важно, то каким образом она обеспечивается в практике различных внедренцев. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2006, 12:29 |
|
Непротиворечивость данных
|
|||
---|---|---|---|
#18+
практикПод непротиворечивостью данных я имею ввиду не ссылочную целостность, а отсутствие в наборе данных явных внутренних противоречий как со здравым смыслом Это называется логической целостностью. Поищите. Много чего написано и на этом форуме и в других местах в рамках обсуждения целостности базы данных. Ответы: 1. Очень важно. 2. Технически - дописыванием проверки при записи (validate write). Технических сложностей в этом вопросе много. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2006, 13:05 |
|
Непротиворечивость данных
|
|||
---|---|---|---|
#18+
Важно. Лучше всего достигается серверными процедурами постинга (учета, проведения). Это означает, что в базу можно записать все что угодно, но запись в регистры, по которым формируется отчетность производится пакетной процедурой, в теле которой и выполняются проверки на логическую целостность полученных в результате данных. Если целостность нарушается, учет отменяется и пакет записей возвращается на корректировку. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2006, 13:13 |
|
Непротиворечивость данных
|
|||
---|---|---|---|
#18+
iscrafmв базу можно записать все что угодно, но запись в регистры... Можно спросить в целях повышения образованности? Чем отличается запись в базу от записи в регистры? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2006, 13:22 |
|
Непротиворечивость данных
|
|||
---|---|---|---|
#18+
Технических сложностей не замечено. Упрощенно, примерно так. Сначала делаете результирующие действия, потом проверяете целостность и если ее нет - отменяете транзакцию. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2006, 13:25 |
|
Непротиворечивость данных
|
|||
---|---|---|---|
#18+
mazzy iscrafmв базу можно записать все что угодно, но запись в регистры... Можно спросить в целях повышения образованности? Чем отличается запись в базу от записи в регистры? Можно конечно :) Как пример цепочка Entry-Jornal-Ledger, Вам знакомая. Строить отчеты по сохраненным документам гиблое дело. А запись в Ledger требует процедуры учета, в которой проверяется целостность. Не все данные сохраненные в БД являются актуальными и правильными... ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2006, 13:33 |
|
Непротиворечивость данных
|
|||
---|---|---|---|
#18+
iscrafmТехнических сложностей не замечено. Упрощенно... А теперь напишите это для нескольких таблиц, которые обновляются в одной транзакции :) Например, должна ли проверка кредитного лимита учитывать проводимый в данный момент документ? А если должна, то как и когда? И т.п... iscrafm mazzy iscrafmв базу можно записать все что угодно, но запись в регистры... Можно спросить в целях повышения образованности? Чем отличается запись в базу от записи в регистры? Можно конечно :) Как пример цепочка Entry-Jornal-Ledger,... :) Разве это не таблицы? Почему вы хоите логически выделить термин регистры? Еще раз, Чем отличается запись в базу от записи в регистры? Вообще говоря, запись в базу данных и логическая целостность... Ладно, в сторону уходим... ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2006, 13:57 |
|
Непротиворечивость данных
|
|||
---|---|---|---|
#18+
mazzy2. Технически - дописыванием проверки при записи (validate write). Технических сложностей в этом вопросе много. Возможных противоречий - просто миллион. И все описывать в SP? И даже если описать, то как потом это развивать? А если не описать, то у работающей системы с завидной регулярностью будут появляться всякие непредсказуемые баги. Есть ли вообще теория создания непротиворечивых наборов данных? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2006, 14:21 |
|
Непротиворечивость данных
|
|||
---|---|---|---|
#18+
iscrafmТехнических сложностей не замечено. Упрощенно, примерно так. Сначала делаете результирующие действия, потом проверяете целостность и если ее нет - отменяете транзакцию. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
Ничего себе технических сложностей не замечено!! Попробуйте-ка таким способом предотвратить ВСЕ ВОЗМОЖНЫЕ противоречия в данных даже для некрупной компании. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2006, 14:25 |
|
Непротиворечивость данных
|
|||
---|---|---|---|
#18+
MazzyА теперь напишите это для нескольких таблиц, которые обновляются в одной транзакции Разве это принципиально что-то меняет? Код: 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. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38.
mazzyНапример, должна ли проверка кредитного лимита учитывать проводимый в данный момент документ? А если должна, то как и когда? И т.п... Зависит от политики работы с клиентами. Встречалось и так и так. В любом случае проверяется процедурой учета. Как? Делается запись в карточку клиента, если кредитный лимит в результате записи получается превышенным - делается откат. Принцип работы известен по интернет-формам. Попробуйте в форме регистрации не заполнить обязательные поля и нажать Submit. Вернетесь назад и не сможете выполнить последующие действия. Проверка на клиенте мало что дает. mazzyРазве это не таблицы? Почему вы хоите логически выделить термин регистры? Конечно, это обычные таблицы. Отличие в том, что в них запрещена прямая запись, путем ввода данных через формы. Отчеты формируются на основании записей, сделанных в такие таблицы. Вся логика заложена в таких таблицах. Очень удобно расширять систему, подключая новые формы и дополнительные процедуры учета, не изменяя при этом отчетность и общую логику. Назвать можно как угодно, регистры - не принципиально. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2006, 14:29 |
|
Непротиворечивость данных
|
|||
---|---|---|---|
#18+
авторЕсть ли вообще теория создания непротиворечивых наборов данных?Вряд ли.. Точнее вряд ли существует к-л "особая теория", выходящая за рамки теории построения РСУБД. Вопрос (не)противоречивости решается в каждом случае индивидуально в т.ч. где распологать логику "на клиенте" или "на сервере". ТУТ НЕ СУЩЕСТВУЕТ ЗОЛОТОЙ СЕРЕДИНЫ. ВСЁ ОПРЕДЕЛЯЕТСЯ ЦЕЛЛЕСООБРАЗНОСТЬЮ ВЫПОЛНЕНИЯ той или иной проверки. Особенно если учесть, что кроме общей логики могут присутствовать "особые полномочия" некоторых пользователей (разрешать действие/учёт только при наличии набора прав). ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2006, 14:34 |
|
Непротиворечивость данных
|
|||
---|---|---|---|
#18+
практикПопробуйте-ка таким способом предотвратить ВСЕ ВОЗМОЖНЫЕ противоречия в данных даже для некрупной компании А Вы не пытайтесь устранить сразу все возможные противоречия. Разбейте систему до элементарных наборов данных и поработайте с каждым. Допустим, тот же журнал движения товара. Сколько наберете условий, для выполнения в него записи об отгрузке? Два известны: в результате не должно быть красных остатков, кредитный лимит не должен быть превышен. Цена не должна быть меньше установленной минимальной, нельзя "разрывать" упаковку, если для товара установлен флаг - продажа только упаковками, подобранный товар должен быть не просрочен и т.п. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2006, 14:49 |
|
Непротиворечивость данных
|
|||
---|---|---|---|
#18+
iscrafm Отличие в том, что в них запрещена прямая запись, путем ввода данных через формы. 1 Минимальный слой кода лежит под кнопкой "Добавить"/"Обновить" всех известных лично мне многопользовательских учетных систем,поправьте указанием источников. 2 Может быть Вы имеете в виду двухфазный ввод через промежуточные(временные) таблицы ? Как при этом выглядит интерфейс со стороны оператора , т.е. кнопок 2 тест и ввод или одна с асинхронной отменой введеного ? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2006, 14:59 |
|
Непротиворечивость данных
|
|||
---|---|---|---|
#18+
практик mazzy2. Технически - дописыванием проверки при записи (validate write). Технических сложностей в этом вопросе много. Возможных противоречий - просто миллион. И все описывать в SP? И даже если описать, то как потом это развивать? А если не описать, то у работающей системы с завидной регулярностью будут появляться всякие непредсказуемые баги. Есть ли вообще теория создания непротиворечивых наборов данных? 1. про SP я ничего не говорил. давайте говорить о просто проверке. А уж в SP или не в SP - вопрос технический. Главное - при записи :) Причем обратите внимание, что не уточняется при записи чего. 2. Квантор ВСЕ - опасный квантор. Когда появляется слово ВСе - жди логической ошибки. 3. Насчет теории. Есть теория предикатов. На ее базе основаны базы знаний и экспертные системы. Теория занимается двумя вещами: 3.1. минимальный и ортогональный набор предикатов инвариантный вашему набору условий 3.2. работа с вашим набором, без преобразований к непротиворечивому набору... В общем, ищите теорию предикатов. Но а) эта тема выходит далеко за рамки темы данного форума б) скорее всего, ваш набор существенно проще. Скорее всего, вы просто не знаете вашу предметную область, если боитесь описать "ВСЕ противоречия". В бизнес-приложениях пока число проверок исчисляется десятками. Вовсе не сотнями и не тысячами. Подумайте о следующем: пока бизнесом управляют люди. И они держат эти проверки в памяти... Да, ошибаются. Да, периодически забывают. Но держат :) iscrafm об этом хорошо сказал. Вот если бы вы переходили с базы знаний на ERP... тогда да, в базе знаний проверок может быть ОЧЕНЬ много... ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2006, 15:00 |
|
Непротиворечивость данных
|
|||
---|---|---|---|
#18+
Shuhard1 Минимальный слой кода лежит под кнопкой "Добавить"/"Обновить" всех известных лично мне многопользовательских учетных систем,поправьте указанием источников. Вы забыли про Удалить :) Теоретически еще может быть Реплицировать. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2006, 15:05 |
|
Непротиворечивость данных
|
|||
---|---|---|---|
#18+
в дополнение mazzy мне случилось построить сложную очистку стат.отчетности на основе теории конечных автоматов , писал свой макропроцессор и язычок. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2006, 15:06 |
|
Непротиворечивость данных
|
|||
---|---|---|---|
#18+
mazzyВы забыли про Удалить :) т.е. сторнировать - забыл , виноват. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2006, 15:11 |
|
Непротиворечивость данных
|
|||
---|---|---|---|
#18+
Shuhard1 Минимальный слой кода лежит под кнопкой "Добавить"/"Обновить" всех известных лично мне многопользовательских учетных систем,поправьте указанием источников. 2 Может быть Вы имеете в виду двухфазный ввод через промежуточные(временные) таблицы ? Как при этом выглядит интерфейс со стороны оператора , т.е. кнопок 2 тест и ввод или одна с асинхронной отменой введеного ? 1. У всех по разному Nav: Сохранение и учет - разные по сути веши. Учет вынесен на отдельную кнопку. Документ можно сохранить, учесть в любой момент. Ax: тот же постинг SBO: противоречивые данные нельзя даже сохранить. По кнопке Добавить сразу выполняется проверка. Т.е. пойти на перекур, предварительно не сохранив правильный документ нельзя, по крайней мере у меня не получилось. ISCRA: Примерно как в Navision, только кнопка меняет свое назначение с Учет на Отмена учета и обратно. Выполняется вызов назначенных процедур. Править учтенные записи так же, нельзя. 2. Не всегда. Когда это выгодно. Часто - изменение статуса и формирование связанной цепочки. Отмена - обратные действия. Про кнопки в п.1 ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2006, 15:33 |
|
Непротиворечивость данных
|
|||
---|---|---|---|
#18+
p.s. Варианты: ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2006, 15:41 |
|
Непротиворечивость данных
|
|||
---|---|---|---|
#18+
LSVОсобенно если учесть, что кроме общей логики могут присутствовать "особые полномочия" некоторых пользователей (разрешать действие/учёт только при наличии набора прав). Не понял. Разные логики для разных пользователей? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2006, 15:53 |
|
Непротиворечивость данных
|
|||
---|---|---|---|
#18+
iscrafm SBO: противоречивые данные нельзя даже сохранить. По кнопке Добавить сразу выполняется проверка. Т.е. пойти на перекур, предварительно не сохранив правильный документ нельзя, по крайней мере у меня не получилось. Черновик - любые данные , вплоть до дат вперед ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2006, 16:10 |
|
Непротиворечивость данных
|
|||
---|---|---|---|
#18+
iscrafm 1. У всех по разному Nav: Сохранение и учет - разные по сути веши. Учет вынесен на отдельную кнопку. Документ можно сохранить, учесть в любой момент. Ax: тот же постинг ISCRA: Примерно как в Navision, только кнопка меняет свое назначение с Учет на Отмена учета и обратно. Выполняется вызов назначенных процедур. Править учтенные записи так же, нельзя. и в 1С8.0 отдельные галки для разных учетов, речь шла о прямом вводе в таблицы , во всех приведенных системах сидят обработчики ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2006, 16:14 |
|
Непротиворечивость данных
|
|||
---|---|---|---|
#18+
практик LSVОсобенно если учесть, что кроме общей логики могут присутствовать "особые полномочия" некоторых пользователей (разрешать действие/учёт только при наличии набора прав). Не понял. Разные логики для разных пользователей? Нет, это просто логика такая :) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2006, 16:16 |
|
Непротиворечивость данных
|
|||
---|---|---|---|
#18+
спасибо за подсказку ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2006, 16:16 |
|
Непротиворечивость данных
|
|||
---|---|---|---|
#18+
iscrafm Разбейте систему до элементарных наборов данных и поработайте с каждым. Не окажется так, что не удастся выделить достаточно независимые наборы? Та же отгрузка товаров клиентам управляется правилами а)продаж б)логистики. А в правила логистики управляют и закупками и ... iscrafm в результате не должно быть красных остатков, кредитный лимит не должен быть превышен. Например: как может быть получен "красный" остаток? - Отгрузить количество больше, чем есть на остатке - Отгрузить количество меньше, чем есть на остатке, и поменять даты: а) приходной накладной, по которой пришел отгружаемый товар б) расходной накладной, по которой товар отгрузился так, чтобы "красный" остаток возник на некоторый диапазон дат. - Отгрузить задним числом такое количество, которое меньше остатка на прошлую дату, но которое приведет к "красному" остатку в последующие даты с учетом уже совершенных отгрузок. Пример. Есть: а) 01.01.2006 приход 10 шт. б) 05.01.2006 отгрузка 6 шт. Вводим: 03.01.2006 отгрузка 8 шт. Что каждый раз при вводе задним числом рассчитывать "разрешенное количество"? А если есть отгрузки введенные будущими датами, постоянно рассчитывать "разрешенное количество"? - Удалить (отменить, сторнировать) приходный документ - Поменять у приходного документа "склад поступления". - Поиграться с единицами измерения товара (не знаю как в разных системах, а в стандартном 1С Предприятии 7.7 точно можно, я пробовал) Уф.. Про кредитный лимит примерно то же самое. Запрещать редактировать вышеперечисленное (хотел написать ВСЕ, но вспомнил mazzy ;-)))? Системой становится тяжело пользоваться. mazzyВ бизнес-приложениях пока число проверок исчисляется десятками. Вовсе не сотнями и не тысячами. Без кредитного лимита, при рассмотрении исключительно отгрузки товара, уже набралось 7 точек контроля непротиворечивости. Причем каждая такая точка может контролировать далеко не только движения товара, чего только стоит контроль ввода/редактирования даты, склада ... Это мы пока не коснулись продаж в целом... маркетинга в целом ... закупок, финансов, персонала ... не говоря уже о производстве .... Вообще не вспоминали о планировании, где есть свои жесткие правила, в разных планах (или бюджетах) разные... Не вспоминали о справочниках, а в них также могут быть внесены противоречивые данные (не только единицы измерения у товара, например клиенту не назначен менеджер или назначен уволенный человек) Короче, мое мнение - только в продажах таких точек контроля сотни (это если делать по взрослому). ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2006, 16:52 |
|
|
start [/forum/topic.php?fid=29&fpage=2&tid=1525727]: |
0ms |
get settings: |
11ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
34ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
60ms |
get tp. blocked users: |
2ms |
others: | 232ms |
total: | 372ms |
0 / 0 |