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

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

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

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

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

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

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

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

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

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

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

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


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