这是涉及的数据,
这是我提出的架构
ID 名称(例如:区域......)
ID, 名称(例如:资源), scope_id
ID, 名称(例如:合法,赞助......), CATEGORY_ID
问题是,正如您所看到的,有很多重复数据,因为同一类别出现在所有范围内,相同的子类别出现在所有类别下。当然,在这种情况下会有一些独特的价值,但它们很少。此外,即使类别/子类别的名称相同,它们也将根据其父范围/类别保留对不同数据集的引用。这将用于隔离内容并生成菜单以浏览这些内容。我想知道的是,如果这是解决这个问题的正确方法,或者有更好的方法/模式,任何人都可以建议我?
答案 0 :(得分: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 |
| .. | ........... |
+----+-------------+