一级目录跟一级目录在同一张表内 如何建表
时间: 2024-05-07 18:19:30 浏览: 17
要在同一张表内存储一级目录和二级目录,可以使用以下方法来建表:
```
CREATE TABLE `directory` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`parent_id` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `parent_id` (`parent_id`),
CONSTRAINT `directory_ibfk_1` FOREIGN KEY (`parent_id`) REFERENCES `directory` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
```
该表包含三个字段:
- `id`:每个目录的唯一标识符,自增长整数类型。
- `name`:目录的名称,作为必填字段。
- `parent_id`:指向父目录的 `id`,可为空。
通过使用 `parent_id` 字段,可以将子目录与其父目录关联在一起。在此表中,`parent_id` 是对 `id` 的外键引用,这意味着每个子目录必须引用其父目录中已存在的 `id`。通过使用 `ON DELETE CASCADE` 约束,可以确保当父目录被删除时,所有子目录也会被删除。
例如,如果您想要创建一个名为 `animals` 的父目录,并将其与名为 `dogs` 和 `cats` 的子目录关联在一起,则可以使用以下查询:
```
INSERT INTO directory (name, parent_id) VALUES ('animals', NULL);
INSERT INTO directory (name, parent_id) VALUES ('dogs', 1);
INSERT INTO directory (name, parent_id) VALUES ('cats', 1);
```
这将创建一个包含三个目录的表,其中 `animals` 是一级目录,而 `dogs` 和 `cats` 是二级目录。
阅读全文