НА УДАЛЕННОМ КАСКАДЕ в этом случае?
Мне нужен совет о том, 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 для умников"