MySQL递归分类表

时间:2018-02-17 10:54:48

标签: mysql

我有3个顶级类别(化妆,药房,其他),每个顶级类别都有 SAME 子类别和子类别。例如

Makeup->Products->Face->Eye..
Pharmacy->Products->Face->Eye..
Someother->Products->Face->Eye..

我需要为它创建表模式,我不知道如何实现它。我将在页面上有链接,例如点击“面部”时它也会检索其他顶级类别的产品。

我有这个架构

CREATE TABLE category(
        category_id INT AUTO_INCREMENT PRIMARY KEY,
        name VARCHAR(20) NOT NULL,
        parent_id INT DEFAULT NULL
);

和类别

id | name        | parent_id
1 | Makeup   | 0
2 | Pharmacy   | 0
3 | Someother   | 0
4 | Products   | 1
5 | Products   | 2
6 | Products   | 3

如果我在上面插入数据,我有3个“产品”,父母不同,我想只有1个“产品”。

我应该创建另一个表来存储第二级类别吗?另一个表来存储第三个标签类别吗?混淆

enter image description here

TopLevel=Makeup
 ->Products 
  --Face 
    --Eye
      --Sub-category
        --Product1
        --Product2
        --...
      --Sub-category
        --Product1
        --Product2
        --...
    --Lips
      --Sub-category
        --Product1
        --Product2
        --...
      --Sub-category
        --Product1
        --Product2
        --...
  --Hand
    --Nails
      --Sub-category
        --Product1
        --Product2
        --...
      --Sub-category
        --Product1
        --Product2
        --...
    --Finger
      --Sub-category
        --Product1
        --Product2
        --...
      --Sub-category
        --Product1
        --Product2
        --...
  --Head
    --Hair
      --Sub-category
        --Product1
        --Product2
        --...
      --Sub-category
        --Product1
        --Product2
        --...
    --Ear
      --Sub-category
        --Product1
        --Product2
        --...
      --Sub-category
        --Product1
        --Product2
        --...
 ->Services
  --Face 
    --Eye
      --Sub-category
        --Product1
        --Product2
        --...
      --Sub-category
        --Product1
        --Product2
        --...
    --Lips
      --Sub-category
        --Product1
        --Product2
        --...
      --Sub-category
        --Product1
        --Product2
        --...
  --Hand
    --Nails
      --Sub-category
        --Product1
        --Product2
        --...
      --Sub-category
        --Product1
        --Product2
        --...
    --Finger
      --Sub-category
        --Product1
        --Product2
        --...
      --Sub-category
        --Product1
        --Product2
        --...
  --Head
    --Hair
      --Sub-category
        --Product1
        --Product2
        --...
      --Sub-category
        --Product1
        --Product2
        --...
    --Ear
      --Sub-category
        --Product1
        --Product2
        --...
      --Sub-category
        --Product1
        --Product2
        --...
TopLevel=Pharmacy
 ....
TopLevel=SomeOther
....

0 个答案:

没有答案