powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Обсуждение модели ИС
21 сообщений из 21, страница 1 из 1
Обсуждение модели ИС
    #34428477
Den is
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть Информационная система, в которой в принципе нет удаления записей. Записи только помечаются удаленными (в каждой таблице есть специальное поле). И их впоследствии очень легко восстановить. Как вы относитесь к такому подходу?
И еще. По логике системы после удаления записей из какой-либо таблицы, не удаляются данные из связанных с ней таблиц (под удалением имеется в виду пометить удаленным). Какие тут плюсы и минусы? Является ли данная схема оптимальной?
...
Рейтинг: 0 / 0
Обсуждение модели ИС
    #34428484
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для проектирования есть отдельный форум.
...
Рейтинг: 0 / 0
Обсуждение модели ИС
    #34428491
Den is
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прошу прощения!
Модераторам: перенесите, пожалуйста, эту ветку туда.
...
Рейтинг: 0 / 0
Обсуждение модели ИС
    #34428529
Фотография Сергей Васкецов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Den isЯвляется ли данная схема оптимальной?
Оптимальной для чего? Какие критерии оптимальности?
...
Рейтинг: 0 / 0
Обсуждение модели ИС
    #34428535
Den is
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Васкецов Den isЯвляется ли данная схема оптимальной?
Оптимальной для чего? Какие критерии оптимальности?
Хотелось бы узнать мнение опытных разработчиков про плюсы и минусы такого подхода. Какие могут быть проблемы и какие преимущества?
...
Рейтинг: 0 / 0
Обсуждение модели ИС
    #34428560
Estets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Den isХотелось бы узнать мнение опытных разработчиков про плюсы и минусы такого подхода. Какие могут быть проблемы и какие преимущества?

Основной минус указан вами в первом посте, ", не удаляются данные из связанных с ней таблиц". Соответственно все процедуры обработки данных из этих таблиц должны обращаться к PARENT таблице с вопросом "А не удалена ли вся эта группа записей". Чего разработчики часто забывают сделать.

А в остальном вполне работоспособная схема эксплуатируемая уже несколько лет.
...
Рейтинг: 0 / 0
Обсуждение модели ИС
    #34428617
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Но это " Соответственно все процедуры обработки данных из этих таблиц должны обращаться к PARENT таблице с вопросом "А не удалена ли вся эта группа записей"." происходит только если нет специально обученной вьюхи "Актуальные записи". Собственно есть много вариантов такого подхода:все архивные данные в отдельную таблицу (проблема-поддержка в одном виде 2-х таблиц,но через case-средства решается элементарно,+ - быстройдействие) с датой актуальности,все архивные данные в отдельную таблицу с просто номером версии,все архивные записи в отд таблицу, но только 1 запись в архивной таблице,одна таблица и признак Удален (может тормозить на больших объемах, но есть ведь партиционирование...),одна таблица и дата актуальности записи,одна таблица и номер версии записи.у нас, к сожалению, системе нет единого подхода и сделано несколькими из вышеперечисленных способов (само собой разные вещи), но, по-сути такой подход более правилен с точки зрения поддержки истории.
...
Рейтинг: 0 / 0
Обсуждение модели ИС
    #34428703
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Den is
А'ля ДБФ? Плюс - сомнительная ценность возможности восстановить запись. Часто проще ее снова занести.
Я уж не говорю, что удаление записей, которое нарушает целостность базы, должно быть запрещено.

Минус, как уже указал Estets - усложнение запросов.

Если критически важно знать, кто чего удалил, ввел или изменил, то в базе ведется лог изменений.
...
Рейтинг: 0 / 0
Обсуждение модели ИС
    #34428711
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Shtockтолько если нет специально обученной вьюхи "Актуальные записи".
Ну, допустим она есть. Снижается только сложность написания запросов, что совсем не критично, а вот сложность выполнения остается.
Вот нагородили - "case-средства", "партиционирование"... Лог изменеий вовсе не требует столь устрашающих терминов.
...
Рейтинг: 0 / 0
Обсуждение модели ИС
    #34428756
Фотография Сергей Васкецов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Den isв которой в принципе нет удаления записей
1. По уму если, это не может быть требованием заказчика, а лишь одним из способов реализации чего-то. Вы реально так версионность хотите реализовать? Есть методы проще, все обсуждалось.
2. Все запросы, контроль ссылочной целостности - все усложняется. Зачем? Мало того, что надо ходить "до родителя", так еще и индекс по признаку "удален" в любом виде работать не будет из-за низкой селективности. Ссылочную целостность руками придется делать.
3. Банально БД больше по размеру, не смертельно, но приятного тоже мало.

Так что так делать не стоит. Удаление - оно и есть удаление, а блокировка сущности - это блокировка.
...
Рейтинг: 0 / 0
Обсуждение модели ИС
    #34428767
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А где гарантия в словах автора топика что это именно "Лог изменеий вовсе не требует столь устрашающих терминов.",а не история?поэтому таких умных слов и понаписано.
...
Рейтинг: 0 / 0
Обсуждение модели ИС
    #34428832
Den is
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Эта система нужна только для восстановления удаленных записей. В каждой таблице есть поле del, которое определяет, удалена ли запись.
Конечно, это не требования заказчика. Это "фишка" нашей системы.
В процессе работы с этой системой были выявлены следующие "минусы".
1. Затруднено проставление уникальности полей, т.к. по логике уникальная запись может иметь копию с del = 1.
2. Подавляющее большинство запросов увеличиваются в размере, т.к. требует добавления проверок del = 0.
3. Я сейчас разрабатываю модуль системы, в котором согласно бизнес-логике для восстановления записи необходимо соблюдение большого кол-ва условий. Поэтому я отключил функцию восстановления (не стоит она таких усилий). Однако разработчики концепции нашей системы требуют все-же не удалять записи, а помечать удаленными. В итоге куча никому не нужных и неиспользуемых данных.
4. Как тут уже говорилось, в процедуры обработки данных нужно учитывать parent.
5. Проверка целостности данных у нас и так хромает. А с этой "фичей" еще большее усложняется разработка.

Из плюсов я вижу только возможность восстановления удаленных записей. И по мнению разработчиков ядра этой системы видимо эта возможность стоит такого геморроя.
...
Рейтинг: 0 / 0
Обсуждение модели ИС
    #34428930
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. по поводу "1. Затруднено проставление уникальности полей, т.к. по логике уникальная запись может иметь копию с del = 1." ну постройте функциональный индекс или все-таки разнесите на 2 таблицы.
2.del=0 - view
3.а что за супер-система то?
p.s.если она уже работает и внедрена,то не тратьте свое время-все равно меняться она не будет.тут просто нужен баланс-в каждой таблице такое вряд ли есть смысл делать.
...
Рейтинг: 0 / 0
Обсуждение модели ИС
    #34428977
Martin_M
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ты про 1С что ли толкуешь? Если это так, то тут все в ажуре, дуракам нет права удалять документы, только помечать на удаление. Админ потом смотрит, что удалять.
...
Рейтинг: 0 / 0
Обсуждение модели ИС
    #34429069
Den is
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У нас есть самописное ядро системы (на Delphi). На основе этого ядра мы разрабатываем функциональные модули (FastScript + MS SQL). Сейчас внедрена первая версия. Мы пишем новую полностью переработанную версию.

Shtock3.а что за супер-система то?
К примеру, в модуле учета основных средств нельзя восстанавливать данные в закрытом периоде или в закрытом документе.
...
Рейтинг: 0 / 0
Обсуждение модели ИС
    #34431639
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Den is.

Проектирование баз данных пока все-таки является искусством, а не технологией. Потому, что нет четких критериев, по которым можно определить, насколько эффективно будет то или иное решение. Вернее, критерии есть, но они будут доступны после того, как база отработает какой-то период времени. Заранее никто ничего определенно сказать не сможет.

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

Вы полагаете использовать механизм, который может восстановить нужное состояние базы после ошибочного удаления. Нормальное желание. Такой механизм будет работать, если не забывать про внутренние механизмы обеспечения целостности. Можно даже сделать так, что бы не сильно тормозило - создать соответсвующие индексы. Однако накладные расходы по созданию индексов могут оказаться слишком большими.

Вы забыли об ИЗМЕНЕНИИ. Да и о ВСТАВКЕ. На мой взгляд, о чем я кажется я уже писал в этом топике, в случае паталогической боязни потерять данные, лучше сделать логирование всех изменений в отдельные таблицы. Причем создание таких таблиц тоже может оказаться неприемлемым с точки зрения быстродействия.

Решать Вам.
...
Рейтинг: 0 / 0
Обсуждение модели ИС
    #34431966
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Den is1. Затруднено проставление уникальности полей, т.к. по логике уникальная запись может иметь копию с del = 1.Дык это уже почти история изменений получается. С двумя датами: сейчас и раньше.:).

ИМХО полезная интерпретация чисто del: не использовать. Создание ссылок запрещено, существующие ссылки действительны. Плюс чистка мусора.
...
Рейтинг: 0 / 0
Обсуждение модели ИС
    #34432048
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лучше сделать логирование операций - и пусть туда пишется. Когда надо - оттуда и восстановите. Нет проблем с запросами.

-- Tygra's --
Мои фотогалереи тут и тут
...
Рейтинг: 0 / 0
Обсуждение модели ИС
    #34432290
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тоже иногда делаем Корзину.
никаких сложностей не замечено.
...
Рейтинг: 0 / 0
Обсуждение модели ИС
    #34432682
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Насчет конечно "Когда надо - оттуда и восстановите." обыно восстановление данных - это не просто 1 строка в таблице,надо обычно несколько вытаскивать,например целую накладную,а не 1 строку или откат целого бух дня,а тут уж обычным логом не ограничишься.запаришься выковыривать и расставлять в нужном порядке,чтобы fk не ругались.но варианты то все работающие-не пугайтесь.как уже говорилось-есть работающая система и видать проверенная временем.не надо ее ломать.
...
Рейтинг: 0 / 0
Обсуждение модели ИС
    #34503879
Glorfindel_lostpass
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cat2Den is
Если критически важно знать, кто чего удалил, ввел или изменил, то в базе ведется лог изменений.
встречный вопрос.
у меня подобная необходимость.
но, вести лог в отдельной группе таблиц или в специальной, для каждого типа?
пример.
есть таблица пользователи, и все ее изменения хранить в логе пользователей,
есть таблица тарифы, и все их изменения хранить в таблице лог тарифов и т.п. таблиц таких полно. ну штук 10 будет точно...
или вести лог типизованный? просто мне сказали будет лучше чтобы логи были разделены на разные таблицы, для возможности помещения их на разные группы фалов.
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Обсуждение модели ИС
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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