|
|
|
Обсуждение модели ИС
|
|||
|---|---|---|---|
|
#18+
Есть Информационная система, в которой в принципе нет удаления записей. Записи только помечаются удаленными (в каждой таблице есть специальное поле). И их впоследствии очень легко восстановить. Как вы относитесь к такому подходу? И еще. По логике системы после удаления записей из какой-либо таблицы, не удаляются данные из связанных с ней таблиц (под удалением имеется в виду пометить удаленным). Какие тут плюсы и минусы? Является ли данная схема оптимальной? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2007, 18:20 |
|
||
|
Обсуждение модели ИС
|
|||
|---|---|---|---|
|
#18+
Для проектирования есть отдельный форум. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2007, 18:22 |
|
||
|
Обсуждение модели ИС
|
|||
|---|---|---|---|
|
#18+
Прошу прощения! Модераторам: перенесите, пожалуйста, эту ветку туда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2007, 18:25 |
|
||
|
Обсуждение модели ИС
|
|||
|---|---|---|---|
|
#18+
Den isЯвляется ли данная схема оптимальной? Оптимальной для чего? Какие критерии оптимальности? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2007, 18:37 |
|
||
|
Обсуждение модели ИС
|
|||
|---|---|---|---|
|
#18+
Сергей Васкецов Den isЯвляется ли данная схема оптимальной? Оптимальной для чего? Какие критерии оптимальности? Хотелось бы узнать мнение опытных разработчиков про плюсы и минусы такого подхода. Какие могут быть проблемы и какие преимущества? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2007, 18:41 |
|
||
|
Обсуждение модели ИС
|
|||
|---|---|---|---|
|
#18+
Den isХотелось бы узнать мнение опытных разработчиков про плюсы и минусы такого подхода. Какие могут быть проблемы и какие преимущества? Основной минус указан вами в первом посте, ", не удаляются данные из связанных с ней таблиц". Соответственно все процедуры обработки данных из этих таблиц должны обращаться к PARENT таблице с вопросом "А не удалена ли вся эта группа записей". Чего разработчики часто забывают сделать. А в остальном вполне работоспособная схема эксплуатируемая уже несколько лет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2007, 18:48 |
|
||
|
Обсуждение модели ИС
|
|||
|---|---|---|---|
|
#18+
Но это " Соответственно все процедуры обработки данных из этих таблиц должны обращаться к PARENT таблице с вопросом "А не удалена ли вся эта группа записей"." происходит только если нет специально обученной вьюхи "Актуальные записи". Собственно есть много вариантов такого подхода:все архивные данные в отдельную таблицу (проблема-поддержка в одном виде 2-х таблиц,но через case-средства решается элементарно,+ - быстройдействие) с датой актуальности,все архивные данные в отдельную таблицу с просто номером версии,все архивные записи в отд таблицу, но только 1 запись в архивной таблице,одна таблица и признак Удален (может тормозить на больших объемах, но есть ведь партиционирование...),одна таблица и дата актуальности записи,одна таблица и номер версии записи.у нас, к сожалению, системе нет единого подхода и сделано несколькими из вышеперечисленных способов (само собой разные вещи), но, по-сути такой подход более правилен с точки зрения поддержки истории. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2007, 19:16 |
|
||
|
Обсуждение модели ИС
|
|||
|---|---|---|---|
|
#18+
Den is А'ля ДБФ? Плюс - сомнительная ценность возможности восстановить запись. Часто проще ее снова занести. Я уж не говорю, что удаление записей, которое нарушает целостность базы, должно быть запрещено. Минус, как уже указал Estets - усложнение запросов. Если критически важно знать, кто чего удалил, ввел или изменил, то в базе ведется лог изменений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2007, 19:57 |
|
||
|
Обсуждение модели ИС
|
|||
|---|---|---|---|
|
#18+
Shtockтолько если нет специально обученной вьюхи "Актуальные записи". Ну, допустим она есть. Снижается только сложность написания запросов, что совсем не критично, а вот сложность выполнения остается. Вот нагородили - "case-средства", "партиционирование"... Лог изменеий вовсе не требует столь устрашающих терминов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2007, 20:02 |
|
||
|
Обсуждение модели ИС
|
|||
|---|---|---|---|
|
#18+
Den isв которой в принципе нет удаления записей 1. По уму если, это не может быть требованием заказчика, а лишь одним из способов реализации чего-то. Вы реально так версионность хотите реализовать? Есть методы проще, все обсуждалось. 2. Все запросы, контроль ссылочной целостности - все усложняется. Зачем? Мало того, что надо ходить "до родителя", так еще и индекс по признаку "удален" в любом виде работать не будет из-за низкой селективности. Ссылочную целостность руками придется делать. 3. Банально БД больше по размеру, не смертельно, но приятного тоже мало. Так что так делать не стоит. Удаление - оно и есть удаление, а блокировка сущности - это блокировка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2007, 20:41 |
|
||
|
Обсуждение модели ИС
|
|||
|---|---|---|---|
|
#18+
А где гарантия в словах автора топика что это именно "Лог изменеий вовсе не требует столь устрашающих терминов.",а не история?поэтому таких умных слов и понаписано. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2007, 20:58 |
|
||
|
Обсуждение модели ИС
|
|||
|---|---|---|---|
|
#18+
Эта система нужна только для восстановления удаленных записей. В каждой таблице есть поле del, которое определяет, удалена ли запись. Конечно, это не требования заказчика. Это "фишка" нашей системы. В процессе работы с этой системой были выявлены следующие "минусы". 1. Затруднено проставление уникальности полей, т.к. по логике уникальная запись может иметь копию с del = 1. 2. Подавляющее большинство запросов увеличиваются в размере, т.к. требует добавления проверок del = 0. 3. Я сейчас разрабатываю модуль системы, в котором согласно бизнес-логике для восстановления записи необходимо соблюдение большого кол-ва условий. Поэтому я отключил функцию восстановления (не стоит она таких усилий). Однако разработчики концепции нашей системы требуют все-же не удалять записи, а помечать удаленными. В итоге куча никому не нужных и неиспользуемых данных. 4. Как тут уже говорилось, в процедуры обработки данных нужно учитывать parent. 5. Проверка целостности данных у нас и так хромает. А с этой "фичей" еще большее усложняется разработка. Из плюсов я вижу только возможность восстановления удаленных записей. И по мнению разработчиков ядра этой системы видимо эта возможность стоит такого геморроя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2007, 22:53 |
|
||
|
Обсуждение модели ИС
|
|||
|---|---|---|---|
|
#18+
1. по поводу "1. Затруднено проставление уникальности полей, т.к. по логике уникальная запись может иметь копию с del = 1." ну постройте функциональный индекс или все-таки разнесите на 2 таблицы. 2.del=0 - view 3.а что за супер-система то? p.s.если она уже работает и внедрена,то не тратьте свое время-все равно меняться она не будет.тут просто нужен баланс-в каждой таблице такое вряд ли есть смысл делать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2007, 01:22 |
|
||
|
Обсуждение модели ИС
|
|||
|---|---|---|---|
|
#18+
Ты про 1С что ли толкуешь? Если это так, то тут все в ажуре, дуракам нет права удалять документы, только помечать на удаление. Админ потом смотрит, что удалять. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2007, 08:09 |
|
||
|
Обсуждение модели ИС
|
|||
|---|---|---|---|
|
#18+
У нас есть самописное ядро системы (на Delphi). На основе этого ядра мы разрабатываем функциональные модули (FastScript + MS SQL). Сейчас внедрена первая версия. Мы пишем новую полностью переработанную версию. Shtock3.а что за супер-система то? К примеру, в модуле учета основных средств нельзя восстанавливать данные в закрытом периоде или в закрытом документе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2007, 11:28 |
|
||
|
Обсуждение модели ИС
|
|||
|---|---|---|---|
|
#18+
Den is. Проектирование баз данных пока все-таки является искусством, а не технологией. Потому, что нет четких критериев, по которым можно определить, насколько эффективно будет то или иное решение. Вернее, критерии есть, но они будут доступны после того, как база отработает какой-то период времени. Заранее никто ничего определенно сказать не сможет. Пожалуйста, не забывайте, что кроме удаления есть еще и изменение. По моему опыту, корректировка наносит бОльшую путаницу, чем удаление. Вы полагаете использовать механизм, который может восстановить нужное состояние базы после ошибочного удаления. Нормальное желание. Такой механизм будет работать, если не забывать про внутренние механизмы обеспечения целостности. Можно даже сделать так, что бы не сильно тормозило - создать соответсвующие индексы. Однако накладные расходы по созданию индексов могут оказаться слишком большими. Вы забыли об ИЗМЕНЕНИИ. Да и о ВСТАВКЕ. На мой взгляд, о чем я кажется я уже писал в этом топике, в случае паталогической боязни потерять данные, лучше сделать логирование всех изменений в отдельные таблицы. Причем создание таких таблиц тоже может оказаться неприемлемым с точки зрения быстродействия. Решать Вам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2007, 15:49 |
|
||
|
Обсуждение модели ИС
|
|||
|---|---|---|---|
|
#18+
Den is1. Затруднено проставление уникальности полей, т.к. по логике уникальная запись может иметь копию с del = 1.Дык это уже почти история изменений получается. С двумя датами: сейчас и раньше.:). ИМХО полезная интерпретация чисто del: не использовать. Создание ссылок запрещено, существующие ссылки действительны. Плюс чистка мусора. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2007, 17:15 |
|
||
|
Обсуждение модели ИС
|
|||
|---|---|---|---|
|
#18+
Лучше сделать логирование операций - и пусть туда пишется. Когда надо - оттуда и восстановите. Нет проблем с запросами. -- Tygra's -- Мои фотогалереи тут и тут ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2007, 17:36 |
|
||
|
Обсуждение модели ИС
|
|||
|---|---|---|---|
|
#18+
тоже иногда делаем Корзину. никаких сложностей не замечено. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2007, 18:32 |
|
||
|
Обсуждение модели ИС
|
|||
|---|---|---|---|
|
#18+
Насчет конечно "Когда надо - оттуда и восстановите." обыно восстановление данных - это не просто 1 строка в таблице,надо обычно несколько вытаскивать,например целую накладную,а не 1 строку или откат целого бух дня,а тут уж обычным логом не ограничишься.запаришься выковыривать и расставлять в нужном порядке,чтобы fk не ругались.но варианты то все работающие-не пугайтесь.как уже говорилось-есть работающая система и видать проверенная временем.не надо ее ломать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2007, 23:55 |
|
||
|
Обсуждение модели ИС
|
|||
|---|---|---|---|
|
#18+
Cat2Den is Если критически важно знать, кто чего удалил, ввел или изменил, то в базе ведется лог изменений. встречный вопрос. у меня подобная необходимость. но, вести лог в отдельной группе таблиц или в специальной, для каждого типа? пример. есть таблица пользователи, и все ее изменения хранить в логе пользователей, есть таблица тарифы, и все их изменения хранить в таблице лог тарифов и т.п. таблиц таких полно. ну штук 10 будет точно... или вести лог типизованный? просто мне сказали будет лучше чтобы логи были разделены на разные таблицы, для возможности помещения их на разные группы фалов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2007, 08:55 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=34431639&tid=1544562]: |
0ms |
get settings: |
8ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
143ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
34ms |
get tp. blocked users: |
1ms |
| others: | 216ms |
| total: | 426ms |

| 0 / 0 |
