|
|
|
Что делать с дочерними записями
|
|||
|---|---|---|---|
|
#18+
Доброго времени суток. Есть родительская запись к которой привязано куча дочерних и пользователь хочет удалить эту родительскую запись. Посоветуйте как лучше обрабатывать эту ситуацию (с точки зрения хорошего тона). У меня есть несколько вариантов. Удалять все записи каскадно. (что мне кажеться не очень хорошо) Не разрешать удалять запись, пока существуют дочерние. (при больших объемах по моему не совсем удобно пользователю) Показать пользователю все дочерние записи, и с повторным подтверждением удалить все каскадно. Всем заранее спасибо за дельные советы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2008, 21:43 |
|
||
|
Что делать с дочерними записями
|
|||
|---|---|---|---|
|
#18+
а дочерние еще где-то юзаются или они должны умереть при смерти родителя? _______________________________________________________________ Самурай без меча - это как самурай с мечем но, только без меча ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2008, 21:54 |
|
||
|
Что делать с дочерними записями
|
|||
|---|---|---|---|
|
#18+
я бы грохнул все каскадно, спросив предварительно уверен ли юзер ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2008, 22:06 |
|
||
|
Что делать с дочерними записями
|
|||
|---|---|---|---|
|
#18+
С точки зрения правильности (в контексте реляционной БД) есть два решения: 1. Не давать удалять, пока есть дочерние. 2. Каскадное удаление. Первое - самое древнее и проверенное решение. Второе - иногда лучше, удобнее. Все другие - просто бред. В любом случае, никогда не должно оставаться "висячих" ссылок - это не два балла - это ... (боюсь выразиться). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.09.2008, 00:08 |
|
||
|
Что делать с дочерними записями
|
|||
|---|---|---|---|
|
#18+
Самое главное в случае каскадного удаления - чтобы дочерние записи не являлись родетельскими для каких-то других записей, и т.д. по цепочке. Сам недавно нарвался на такую ситуацию - удалил одну запись в таблице, в результате волна каскадного удаления прошла по ~20 таблицам, удалилось ~1000 записей. После этого все foreign keys перевел с опции on delete cascade на on delete no action. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.09.2008, 07:48 |
|
||
|
Что делать с дочерними записями
|
|||
|---|---|---|---|
|
#18+
ЪйСамое главное в случае каскадного удаления - чтобы дочерние записи не являлись родетельскими для каких-то других записей, и т.д. по цепочке. а вот это уже вопрос к разработчику БД, нужно делать логически завершенные цепочки, и если и удалять головную запись, то вместе с ней уходили лишь те данные, которые без этой, головной записи, смысла не несут. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.09.2008, 09:04 |
|
||
|
Что делать с дочерними записями
|
|||
|---|---|---|---|
|
#18+
WYPMAHа вот это уже вопрос к разработчику БД, нужно делать логически завершенные цепочки, и если и удалять головную запись, то вместе с ней уходили лишь те данные, которые без этой, головной записи, смысла не несут. Да кто бы в этом сомневался. Если б я мог задать вопрос разработчику, я бы ему только спросил... Примерно вот как тут ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.09.2008, 10:18 |
|
||
|
Что делать с дочерними записями
|
|||
|---|---|---|---|
|
#18+
Dim@styПосоветуйте как лучше обрабатывать эту ситуацию (с точки зрения хорошего тона).Хороший тон тут не при чём. Поведение системы в данной ситуации должно регламентироваться техническим заданием. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.09.2008, 11:17 |
|
||
|
Что делать с дочерними записями
|
|||
|---|---|---|---|
|
#18+
Алексей К Dim@styПосоветуйте как лучше обрабатывать эту ситуацию (с точки зрения хорошего тона).Хороший тон тут не при чём. Поведение системы в данной ситуации должно регламентироваться техническим заданием. Ну вы как скажете тоже!!!!! Может я учусь, какое ТЗ????? Решил запретить удалять запись, пока присутствуют дочерние. Всем спасибо коллеги. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.09.2008, 16:10 |
|
||
|
Что делать с дочерними записями
|
|||
|---|---|---|---|
|
#18+
Dim@styНу вы как скажете тоже!!!!! Может я учусь, какое ТЗ?????Частный случай. Техническое задание Вы для себя составляете сами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2008, 11:08 |
|
||
|
Что делать с дочерними записями
|
|||
|---|---|---|---|
|
#18+
Ну вы блин даёте ..... Пусть решает пользователь - выдать диалоговое окно с вышеукакаными вариантами: Dim@styУдалять все записи каскадно. (что мне кажеться не очень хорошо) Не разрешать удалять запись, пока существуют дочерние. (при больших объемах по моему не совсем удобно пользователю) Показать пользователю все дочерние записи, и с повторным подтверждением удалить все каскадно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2008, 14:05 |
|
||
|
Что делать с дочерними записями
|
|||
|---|---|---|---|
|
#18+
StrassebahnНу вы блин даёте ..... Пусть решает пользователь - выдать диалоговое окно с вышеукакаными вариантами: Dim@styУдалять все записи каскадно. (что мне кажеться не очень хорошо) Не разрешать удалять запись, пока существуют дочерние. (при больших объемах по моему не совсем удобно пользователю) Показать пользователю все дочерние записи, и с повторным подтверждением удалить все каскадно. "Ну вы блин даете". Тетенька из отдела кадров при увольнении сотрудника, например, удаляет запись, я ей вываливаю все дочерние из 15 таблиц общим количеством штук 500-1000 (кстати, что подразумевалось под "показать все дочерние записи"? все поля записей? какое-то одно поле? какое? а в общем случае оно может вообще не иметь содержательной для энд-юзера информации). Далее. Как будем удалять дочерние записи? Отказываемся от ключей, и удаляем в транзакции из кода? Тогда информацию о всех связях придется держать где-то в коде проекта, а не в БД, и самому контролировать целостность данных. Или от ключей не отказываемся? Тогда бежать по всем таблицам, и пересоздавать ключи с нужной опцией? Ну, и не говоря о том, что решение относительно дочерних записей может лежать вообще вне рамок компетенции пользователя. Как выше уже правильно писали, такие вопросы должны быть раз и навсегда определены при проектировании системы в целом, и БД в частности (и оговорены в ТЗ на систему). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2008, 14:29 |
|
||
|
Что делать с дочерними записями
|
|||
|---|---|---|---|
|
#18+
Всё видно при анализе задачи. А ТЗ ведь часто приходиться ставить себе самому, так что фраза не всегда имеет смысл. авторКак выше уже правильно писали, такие вопросы должны быть раз и навсегда определены при проектировании системы в целом, и БД в частности (и оговорены в ТЗ на систему). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2008, 17:41 |
|
||
|
|

start [/forum/topic.php?fid=17&msg=35523626&tid=1352139]: |
0ms |
get settings: |
11ms |
get forum list: |
22ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
51ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
64ms |
get tp. blocked users: |
1ms |
| others: | 246ms |
| total: | 416ms |

| 0 / 0 |
