НА УДАЛЕННОМ КАСКАДЕ в этом случае?

Мне нужен совет о том, ON DELETE CASCADE подходит для использования в следующей таблице

CREATE TABLE category
(
    id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255) NOT NULL,
    maincategory INT DEFAULT NULL,
    FOREIGN KEY(maincategory) REFERENCES category(id) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE = InnoDB DEFAULT CHARSET = utf8;

В этом случае ON DELETE CASCADE просто удалит все подкатегории, если основная категория будет удалена. Это рекомендуемый подход?

1 ответ

Решение

Вы пытаетесь создать табличное представление древовидной структуры. Вы используете модель смежности, сохраняя идентификатор родителя в maincategory поле (обычно оно называется parent_id).

Да, этот подход полностью действителен. С помощью ON DELETE CASCADE Вы обезопасите себя от аномалий DELETE.

Я также рекомендовал бы вам прочитать о вложенных множествах - это очень эффективный способ представления деревьев в SQL:

http://www.evanpetersen.com/item/nested-sets.html

Как представить дерево данных в SQL?

http://en.wikipedia.org/wiki/Nested_set_model

И эта книга: Джо Селко "Деревья и иерархии в SQL для умников"

Другие вопросы по тегам