powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Почему нельзя удаляь данные из таблиц а нужно помечать как удаленные например?
16 сообщений из 16, страница 1 из 1
Почему нельзя удаляь данные из таблиц а нужно помечать как удаленные например?
    #38962521
ziver87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброй день. Вопрос собственно говоря в теме. Спасибо.
...
Рейтинг: 0 / 0
Почему нельзя удаляь данные из таблиц а нужно помечать как удаленные например?
    #38962535
Фотография Павел Воронцов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ziver87,

Кто сказал, что нельзя?

Бизнес? Значит им эти данные нужны. Удалять нельзя. Точка.
Архитектор? Либо так нужно бизнесу и поэтому см. выше, либо есть существенные ограничения по архитектуре. Например - нужно будет периодически удалять большие объемы данных и это (возможно) будет очень ресурсно затратной операцией, поскольку удаление для БД тяжелее, чем апдейт. Тогда см. ниже.
ДБА? У него могут быть резоны, но их надо рассматривать в пятую очередь.
...
Рейтинг: 0 / 0
Почему нельзя удаляь данные из таблиц а нужно помечать как удаленные например?
    #38962549
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Нельзя" это слишком категоричное заявление. Можно, но не всегда. Правильнее "нельзя в некоторых случаях":
1. На запись ссылаются записи других таблиц, т.е. при удалении нарущится целостность БД
2. Удаление записи требует физического перестроения таблицы (например в DBF)
3. Репликацию удаления сложнее делать чем репликацию изменения
...
Рейтинг: 0 / 0
Почему нельзя удаляь данные из таблиц а нужно помечать как удаленные например?
    #38962594
Фотография eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
[не одобрен]
+ реализовать отмену проще сняв пометку, а не роясь в логах.
...
Рейтинг: 0 / 0
Почему нельзя удаляь данные из таблиц а нужно помечать как удаленные например?
    #38962621
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Помеченное всегда можно удалить, если понадобится.
А вот удалённое, если понадобится, поднять уже не получится.
...
Рейтинг: 0 / 0
Почему нельзя удаляь данные из таблиц а нужно помечать как удаленные например?
    #38962900
Фотография S.G.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если данные не удалять, и не помечать как удаленные, а ставить им временную метку (дату, то есть), то можно получать из БД данные или состояние "назад, на момент времени".
...
Рейтинг: 0 / 0
Почему нельзя удаляь данные из таблиц а нужно помечать как удаленные например?
    #38963227
Фотография eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
[не одобрен]
S.G.Если данные не удалять, и не помечать как удаленные, а ставить им временную метку (дату, то есть), то можно получать из БД данные или состояние "назад, на момент времени". это метка "дата внесения записи".
метка удаления - отдельно.

метка внесения подразумевает хранение изменений (отдельно или еще как-то).
...
Рейтинг: 0 / 0
Почему нельзя удаляь данные из таблиц а нужно помечать как удаленные например?
    #38963276
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkinaА вот удалённое, если понадобится, поднять уже не получится.
Зависит от состояния бэкапов. По большому счету желание вернуть удаленное говорит о том что что-то ненормально в администрировании БД.
S.G.можно получать из БД данные или состояние "назад, на момент времени".
Это на усмотрение паранойи админа БД.
...
Рейтинг: 0 / 0
Почему нельзя удаляь данные из таблиц а нужно помечать как удаленные например?
    #38963333
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T, бэкапы редко и хранятся долго, и при этом остаются бессбойными. А главное - назначение бэкапов вовсе не в восстановлении неожиданно потребовавшихся старых данных.
...
Рейтинг: 0 / 0
Почему нельзя удаляь данные из таблиц а нужно помечать как удаленные например?
    #38963497
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ziver87,

Почему нельзя удаляь данные из таблиц а нужно помечать как удаленные например?

Можно, а иногда даже нужно, и это все - требование постановки задачи, так что обсуждать вопрос в общем ключе нет смысла.
...
Рейтинг: 0 / 0
Почему нельзя удаляь данные из таблиц а нужно помечать как удаленные например?
    #38963539
Фотография eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
[не одобрен]
Павел Воронцовудаление для БД тяжелее, чем апдейт где-то на sql.ru была целая дискуссия по этой теме и пришли к выводу, что дешевле удалить и создать, нежели обновлять.
...
Рейтинг: 0 / 0
Почему нельзя удаляь данные из таблиц а нужно помечать как удаленные например?
    #38963824
Фотография Павел Воронцов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
eNoseПавел Воронцовудаление для БД тяжелее, чем апдейт где-то на sql.ru была целая дискуссия по этой теме и пришли к выводу, что дешевле удалить и создать, нежели обновлять.Сильно зависит от того что и где удаляется/апдейтится. В оракле так, в мс этак, а мускуль ваще третьим образом. Архитектор должен быть в курсе всех ньюансов, их тут вон еще пяток здравых накидали (репликация и пр.)
...
Рейтинг: 0 / 0
Почему нельзя удаляь данные из таблиц а нужно помечать как удаленные например?
    #38965232
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ziver87Доброй день. Вопрос собственно говоря в теме. Спасибо.
Вопрос в теме сформулирован категорически неверно.

Основной фактор, который действует в данном случае, таков: если информационная система так или иначе документирует "обычную повседневную деятельность" предприятия, то у работающих с ней время от времени возникает необходимость "найти концы", то есть: обнаружив какое-либо несоответствие, какую-либо неожиданную ситуацию, понять, из-за чего она возникла, проанализировать, действительно ли всё должно так быть и при необходимости исправить. Ну а для того, чтобы это было возможно, необходимо иметь не только текущие данные, но и исторические. Необходимость же иметь исторические данные, в свою очередь, порождает необходимость хранить соответствующие им записи в справочниках и т. п.

Например, в моей практике был такой эпизод. Клиент пожаловался на то, что ему для договора рассчитаны совершенно левые цены на сервисное обслуживание. Разбирательство показало, что в какой-то момент сотрудник ошибся и ввёл на некоторые товарные позиции неверные цены (в несколько раз отличающиеся от истинных). Через несколько минут он исправил свою ошибку, но именно в это время другой сотрудник нажал кнопку "договор заключён", и тот сформировался с ценами, рассчитанными на основании кривых товарных. Таким образом, если бы неактуальные цены удалялись, разобраться в этой истории оказалось бы невозможным, и она завершилась бы претензией к программистам на тему "опять ваша программа сделала полную хрень" и поиском отсутствующей ошибки. Отсюда и следует вывод, когда можно удалять операционные данные - тогда, когда они не успели повлиять на какие-нибудь бизнес-процессы в системе.

В других типах систем могут быть другие правила. Скажем, когда считается аналитика, одним из возможных подходов является удалить вообще всё и заново загрузить и обсчитать данные с нуля.
...
Рейтинг: 0 / 0
Почему нельзя удаляь данные из таблиц а нужно помечать как удаленные например?
    #38965393
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть системы данных которые изначально проектировались как неудаляемые. EventStore например.
Ты можешь строить сколь угодно сложные mviews над ними но из главного потока событий ничего удалить
невозможно если оно попало в хранилище.

Требование - нельзя удалять данные из таблиц вполне себе обыденно. Такое бывает. Обычно это вешают
на шибко важные справочники. Если надо их поправить - то заводится новая запись с новой датой
или version number.
...
Рейтинг: 0 / 0
Почему нельзя удаляь данные из таблиц а нужно помечать как удаленные например?
    #38978708
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вообще читал в книжке умной, что делать такое очень плохая практика. Так как такое поле ведет большой путанице и образованию гор мусора. В почти во всех реляционных базах данных есть каскадное удаление для сохранения целостности. А если нужно "удалить" строку, то более правильно переместить её в другое место (как вариант). То есть сохранить в другом месте или в другом виде, а потом восстановить по необходимости.
...
Рейтинг: 0 / 0
Почему нельзя удаляь данные из таблиц а нужно помечать как удаленные например?
    #38978729
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В реляционных БД в любой таблице должен существовать идентифицирующий суб-набор данных, значение которого однозначно и бесконфликтно идентифицирует запись. В простейшем случае это первичный (или хотя бы просто уникальный, возможно также составной) ключ. Именно этот субнабор отвечает в т.ч. за работу подсистемы целостности и непротиворечивости данных.

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

Насколько я знаю, на текущий момент не существует СУБД, поддерживающих такое ограничение целостности - все они оперируют исключительно данными, присутствующими в таблицах. Т.е. существующие реализации подсистемы контроля целостности просто не готовы к тому, чтобы отслеживать целостность и непротиворечивость связей физически удалённой из таблицы записи. Именно поэтому данные удалять нельзя.
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Почему нельзя удаляь данные из таблиц а нужно помечать как удаленные например?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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