powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Что делать с дочерними записями
13 сообщений из 13, страница 1 из 1
Что делать с дочерними записями
    #35523511
Dim@sty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго времени суток.

Есть родительская запись к которой привязано куча дочерних и пользователь хочет удалить эту родительскую запись. Посоветуйте как лучше обрабатывать эту ситуацию (с точки зрения хорошего тона).

У меня есть несколько вариантов.

Удалять все записи каскадно. (что мне кажеться не очень хорошо)
Не разрешать удалять запись, пока существуют дочерние. (при больших объемах по моему не совсем удобно пользователю)
Показать пользователю все дочерние записи, и с повторным подтверждением удалить все каскадно.

Всем заранее спасибо за дельные советы.
...
Рейтинг: 0 / 0
Что делать с дочерними записями
    #35523521
Фотография sashka304
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а дочерние еще где-то юзаются или они должны умереть при смерти родителя?

_______________________________________________________________
Самурай без меча - это как самурай с мечем но, только без меча
...
Рейтинг: 0 / 0
Что делать с дочерними записями
    #35523530
зы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я бы грохнул все каскадно, спросив предварительно уверен ли юзер
...
Рейтинг: 0 / 0
Что делать с дочерними записями
    #35523626
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С точки зрения правильности (в контексте реляционной БД) есть два решения:
1. Не давать удалять, пока есть дочерние.
2. Каскадное удаление.
Первое - самое древнее и проверенное решение. Второе - иногда лучше, удобнее. Все другие - просто бред.
В любом случае, никогда не должно оставаться "висячих" ссылок - это не два балла - это ... (боюсь выразиться).
...
Рейтинг: 0 / 0
Что делать с дочерними записями
    #35523723
Фотография Ъй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Самое главное в случае каскадного удаления - чтобы дочерние записи не являлись родетельскими для каких-то других записей, и т.д. по цепочке. Сам недавно нарвался на такую ситуацию - удалил одну запись в таблице, в результате волна каскадного удаления прошла по ~20 таблицам, удалилось ~1000 записей. После этого все foreign keys перевел с опции on delete cascade на on delete no action.
...
Рейтинг: 0 / 0
Что делать с дочерними записями
    #35523773
Фотография WYPMAH
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЪйСамое главное в случае каскадного удаления - чтобы дочерние записи не являлись родетельскими для каких-то других записей, и т.д. по цепочке.
а вот это уже вопрос к разработчику БД, нужно делать логически завершенные цепочки, и если и удалять головную запись, то вместе с ней уходили лишь те данные, которые без этой, головной записи, смысла не несут.
...
Рейтинг: 0 / 0
Что делать с дочерними записями
    #35523928
Фотография Ъй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WYPMAHа вот это уже вопрос к разработчику БД, нужно делать логически завершенные цепочки, и если и удалять головную запись, то вместе с ней уходили лишь те данные, которые без этой, головной записи, смысла не несут.
Да кто бы в этом сомневался. Если б я мог задать вопрос разработчику, я бы ему только спросил... Примерно вот как тут
...
Рейтинг: 0 / 0
Что делать с дочерними записями
    #35524091
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dim@styПосоветуйте как лучше обрабатывать эту ситуацию (с точки зрения хорошего тона).Хороший тон тут не при чём. Поведение системы в данной ситуации должно регламентироваться техническим заданием.
...
Рейтинг: 0 / 0
Что делать с дочерними записями
    #35525101
Dim@sty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К Dim@styПосоветуйте как лучше обрабатывать эту ситуацию (с точки зрения хорошего тона).Хороший тон тут не при чём. Поведение системы в данной ситуации должно регламентироваться техническим заданием.

Ну вы как скажете тоже!!!!! Может я учусь, какое ТЗ?????

Решил запретить удалять запись, пока присутствуют дочерние.

Всем спасибо коллеги.
...
Рейтинг: 0 / 0
Что делать с дочерними записями
    #35525839
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dim@styНу вы как скажете тоже!!!!! Может я учусь, какое ТЗ?????Частный случай. Техническое задание Вы для себя составляете сами.
...
Рейтинг: 0 / 0
Что делать с дочерними записями
    #35554333
Фотография Strassebahn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну вы блин даёте .....

Пусть решает пользователь - выдать диалоговое окно с вышеукакаными вариантами:
Dim@styУдалять все записи каскадно. (что мне кажеться не очень хорошо)
Не разрешать удалять запись, пока существуют дочерние. (при больших объемах по моему не совсем удобно пользователю)
Показать пользователю все дочерние записи, и с повторным подтверждением удалить все каскадно.
...
Рейтинг: 0 / 0
Что делать с дочерними записями
    #35554435
Фотография Ъй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
StrassebahnНу вы блин даёте .....

Пусть решает пользователь - выдать диалоговое окно с вышеукакаными вариантами:
Dim@styУдалять все записи каскадно. (что мне кажеться не очень хорошо)
Не разрешать удалять запись, пока существуют дочерние. (при больших объемах по моему не совсем удобно пользователю)
Показать пользователю все дочерние записи, и с повторным подтверждением удалить все каскадно.


"Ну вы блин даете". Тетенька из отдела кадров при увольнении сотрудника, например, удаляет запись, я ей вываливаю все дочерние из 15 таблиц общим количеством штук 500-1000 (кстати, что подразумевалось под "показать все дочерние записи"? все поля записей? какое-то одно поле? какое? а в общем случае оно может вообще не иметь содержательной для энд-юзера информации). Далее. Как будем удалять дочерние записи? Отказываемся от ключей, и удаляем в транзакции из кода? Тогда информацию о всех связях придется держать где-то в коде проекта, а не в БД, и самому контролировать целостность данных. Или от ключей не отказываемся? Тогда бежать по всем таблицам, и пересоздавать ключи с нужной опцией? Ну, и не говоря о том, что решение относительно дочерних записей может лежать вообще вне рамок компетенции пользователя. Как выше уже правильно писали, такие вопросы должны быть раз и навсегда определены при проектировании системы в целом, и БД в частности (и оговорены в ТЗ на систему).
...
Рейтинг: 0 / 0
Что делать с дочерними записями
    #35555080
Фотография Strassebahn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всё видно при анализе задачи. А ТЗ ведь часто приходиться ставить себе самому, так что фраза не всегда имеет смысл. авторКак выше уже правильно писали, такие вопросы должны быть раз и навсегда определены при проектировании системы в целом, и БД в частности (и оговорены в ТЗ на систему).
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Что делать с дочерними записями
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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