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

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

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

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

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

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

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

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

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

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

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


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


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