我今天去接受采访,有一个问题我没有听说过,我想知道如何做到这一点......如何使用查询执行此操作
创建一个可以保持到 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
- (主键、类别 ID)
- parent_id(指向父类别 ID)
- category_name(类别名称的文本表示形式)
因此,在您的示例中,数据将存储如下:
1 | 0 | root
2 | 1 | MEN
3 | 2 | shirt
4 | 2 | trousers
5 | 1 | women
6 | 5 | shirt & top
。等等