ФорумПрограммированиеPHP для идиотов → Как быть со связями при удалении раздела из базы?

Как быть со связями при удалении раздела из базы?

  • kolobok

    Сообщения: 48 Репутация: N Группа: Кто попало

    Spritz 13 октября 2011 г. 10:52

    В админке сейчас делаю стандартную возможность добавлять/редактировать/удалять раздел. Но вот хочу спросить, есть ли какое то обкатанное решение при удалении связанных разделов? Т.е. допустим есть таблица с автомобильными агрегатами (ну там ГРМ, тормоза, система охлаждения). Решил вдруг админ удалить пункт ГРМ, что тогда делать с запчастями которые входили в ГРМ? Сделать выборку и предложить админу раскидать их в другие системы? Как это правильно делается, или можно как то изначально было по другому все спроектировать?
  • technobulka

    Сообщения: 4540 Репутация: N Группа: Джедаи

    Spritz 13 октября 2011 г. 10:54, спустя 1 минуту 49 секунд

    триггеры?
    Высокоуровневое абстрактное говно
  • Givi

    Сообщения: 2284 Репутация: N Группа: Адекваты

    Spritz 13 октября 2011 г. 11:32, спустя 37 минут 58 секунд

    kolobok, все зависит от того, что с теми "остатками" нужно сделать администратору. К примеру, это может быть сплошное удаление без угрызений совести, может быть простое "скидывание" всех таких товаров в некую корзину, где они будут себе лежать до того времени, пока администратор не решит их куда-то переместить. По сути они станут не активными. Либо же "сбросятся" все в определенную активную категорию, к примеру "разное/прочее". В общем, вариантов масса, и реализация зависит от задач.
    п.с. Вообще один из правильных вариантов на мой взгляд это либо полное удаление всего либо же запрет на удаление категории, пока в ней будет хоть один товар.
  • adw0rd

    Сообщения: 22959 Репутация: N Группа: в ухо

    Spritz 13 октября 2011 г. 11:55, спустя 22 минуты 54 секунды

    Вообще удалять плохо, надо скрывать, так как история теряется
    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • kolobok

    Сообщения: 48 Репутация: N Группа: Кто попало

    Spritz 13 октября 2011 г. 13:54, спустя 1 час 58 минут 53 секунды

    Просто есть заказ сделать довольно простой сайт для автозапчастей. Вот решил наконец узнать у тех кто с этим сталкивался, как обычно поступают в этом вопросе. Т.е по хорошему мне у заказчика надо было спросить делать ли пункт удаления или нет? Я решил сделать, так как вроде это очевидный пункт, вполне вероятно что им никогда и не воспользуются. Просто в голове пронеслись сразу аналоги, а если бы это были статьи в категориях, или фото в подрубриках каких то, и т.п., т.е то с чем по идее все уже сталкивались и выработано какое то универсальное правило при удалении рубрик/категорий и т.п.
  • Nyaah

    Сообщения: 574 Репутация: N Группа: Джедаи

    Spritz 13 октября 2011 г. 14:51, спустя 57 минут 14 секунд

    внешние ключи ON DELETE RESTRICT, чтобы точно ничего не удалилось, а при удалении не пустой категории просто говорить: "переместите всё что внутри куда-нибудь"
    Work, buy, consume, die
  • Ivan

    Сообщения: 1316 Репутация: N Группа: Адекваты

    Spritz 13 октября 2011 г. 17:11, спустя 2 часа 19 минут 52 секунды

    Делай тип таблиц InnoDB и ставь FOREIGN KEY (внешний ключ) в зависимую таблицу
    Затем делай связь с ON DELETE CASCADE (что-то такое) - юзай phpmyadmin там удобная менюшка с чекбоксами и подсказками есть для этого)
  • Nyaah

    Сообщения: 574 Репутация: N Группа: Джедаи

    Spritz 13 октября 2011 г. 17:19, спустя 7 минут 45 секунд

    on delete cascade точно не стоит делать )))
    два клика мышью минус пол сайта, было такое, девочка на вопрос "Вы точно хотите удалить раздел такой-то, в котором находится 12 подразделов и 90 статей?" ответила Да, удалить )
    Work, buy, consume, die

Пожалуйста, авторизуйтесь, чтобы написать комментарий!