创建 Sql 子类别表


Create Sql subcategory table

我今天去接受采访,有一个问题我没有听说过,我想知道如何做到这一点......如何使用查询执行此操作

创建一个可以保持到 n 级类别的表。 创建一个表到可展开的类别树,给出以下示例。现在,表格的设计方式应使类别级别可以根据需要扩展到尽可能多的。

                                  root
                                  /   '
                                 /     '
                               MEN      women------------
                               / '         /            |
                              /   '       Shirt&top     paints
                         shirt   trousers                /   ' 
                                                        /     '
                                                       /       '
                                                      /         '
                                                    trouser     Skirts and jeans

"说明书"解决方案是让父 id 列指向单个表中的类别 id:

CREATE TABLE categories (
    category_id INT PRIMARY KEY,
    parent_id INT REFERENCES category_id,
    name VARCHAR(100)
)

因此,对于上面给出的示例:

INSERT INTO categories VALUES (1, null, 'root'),
(2, 1, 'Men'),
(3, 2, 'shirt'),
(4, 2, 'trousers'),
(5, 1, 'women'),
(6, 5, 'shirt & top'),
(7, 5, 'pants'),
(8, 7, 'trousers'),
(9, 7, 'skirts and jeans');

如果需要在单个表中实现该结构,则可以每行存储以下信息:

    ID
  1. (主键、类别 ID)
  2. parent_id(指向父类别 ID)
  3. category_name(类别名称的文本表示形式)

因此,在您的示例中,数据将存储如下:

1 | 0 | root
2 | 1 | MEN
3 | 2 | shirt
4 | 2 | trousers
5 | 1 | women
6 | 5 | shirt & top

。等等