Mysql 具有重复数据的多类别数据库模式

Mysql 具有重复数据的多类别数据库模式,mysql,database-schema,Mysql,Database Schema,这是涉及的数据 这是我提出的模式 范围 身份证 名称(例如:区域…) 类别 身份证, 名称(例如:资源), 作用域id 子类别 身份证, 名称(例如:法律、赞助……), 类别识别码 问题是,正如您所看到的,有很多重复的数据,因为相同的类别出现在所有范围下,相同的子类别出现在所有类别下。当然,在这种情况下会有一些独特的值,但它们很少。此外,即使类别/子类别的名称相同,它们也会根据其父范围/类别保留对不同数据集的引用。这将用于分离内容并生成一个菜单来浏览这些内容。我想知道的是,这是解决这个问题的正

这是涉及的数据

这是我提出的模式

范围 身份证 名称(例如:区域…)

类别 身份证, 名称(例如:资源), 作用域id

子类别 身份证, 名称(例如:法律、赞助……), 类别识别码


问题是,正如您所看到的,有很多重复的数据,因为相同的类别出现在所有范围下,相同的子类别出现在所有类别下。当然,在这种情况下会有一些独特的值,但它们很少。此外,即使类别/子类别的名称相同,它们也会根据其父范围/类别保留对不同数据集的引用。这将用于分离内容并生成一个菜单来浏览这些内容。我想知道的是,这是解决这个问题的正确方法,还是有更好的方法/模式可以推荐给我

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

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   |
| .. | ........... |
+----+-------------+

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

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   |
| .. | ........... |
+----+-------------+

是的,正是我想要的。谢谢。是的,正是我想要的。谢谢