Я пытаюсь создать таблицу в MySQL для хранения иерархии файлов. В этой таблице столбец родительской_папки_id будет содержать ссылку на идентификатор родительской папки. Если у папки нет родительского элемента, значение этого столбца будет NULL, что означает, что папка является корневой. У каждого пользователя может быть только одна папка с уникальным именем.
Код: Выделить всё
CREATE TABLE folders (
id INT NOT NULL AUTO_INCREMENT,
user_id INT NOT NULL,
parent_folder_id INT DEFAULT NULL,
folder_name VARCHAR(255) NOT NULL,
PRIMARY KEY (id),
FOREIGN KEY (user_id) REFERENCES users(id),
FOREIGN KEY (parent_folder_id) REFERENCES folders(id),
CONSTRAINT uq_user_folder_name UNIQUE KEY (user_id, parent_folder_id, folder_name)
);
Проблема возникает, когда родительская_папка_id имеет значение NULL. В этом случае MySQL не выполняет сравнение должным образом, и у пользователя может быть бесконечное количество корневых папок. Как этого избежать?
Подробнее здесь:
https://stackoverflow.com/questions/798 ... table-if-t