1

这是涉及的数据,

在此处输入图像描述

这是我想出的架构

范围

id 名称(例如:区域...)

类别

id、名称(例如:资源)、scope_id

子类别

id、名称(例如:法律、赞助...)、category_id

问题是,如您所见,由于同一类别出现在所有范围下,相同的子类别出现在所有类别下,因此存在大量重复数据。当然,案例中会有一些独特的价值,但它们很少。此外,即使类别/子类别的名称相同,它们也会根据其父范围/类别持有对不同数据集的引用。这将用于分离内容并生成菜单以浏览这些内容。我想知道的是,这是否是解决此问题的正确方法,或者任何人都可以建议我有更好的方法/模式?

4

1 回答 1

1

根据您提供的有限信息,我会这样做:

categories
    id                  unsigned int(P)
    name                varchar(15)

+----+-----------+
| id | name      |
+----+-----------+
|  1 | Assets    |
|  2 | Resources |
| .. | ......... |
+----+-----------+

categories_subcategories
    id                  unsigned int(P)
    category_id         unsigned int(F categories.id)
    subcategory_id      unsigned int(F subcategories.id)

+----+-------------+----------------+
| id | category_id | subcategory_id |
+----+-------------+----------------+
|  1 |           1 |              4 |
|  2 |           1 |              1 |
| .. | ........... | .............. |
+----+-------------+----------------+

levels
    id                  unsigned int(P)
    name                varchar(15)

+----+----------+
| id | name     |
+----+----------+
|  1 | National |
|  2 | Regional |
|  3 | Zonal    |
| .. | ........ |
+----+----------+

levels_categories
    id              unsigned int(P)
    level_id        unsigned int(F levels.id)
    category.id     unsigned int(F category.id)

+----+----------+-------------+
| id | level_id | category_id |
+----+----------+-------------+
|  1 |        1 |           1 |
|  2 |        1 |           2 |
| .. | ........ | ........... |
+----+----------+-------------+

subcategories
    id                  unsigned int(P)
    name                varchar(15)

+----+-------------+
| id | name        |
+----+-------------+
|  1 | Contributed |
|  2 | Financial   |
|  3 | Legal       |
|  4 | Sponsored   |
| .. | ........... |
+----+-------------+
于 2013-11-12T14:18:11.333 回答