我有一张看起来像这样的表:
ID |关键字|类别|子类别|子分类|子子子类别
我是否需要将其拆分为两个表(关键字表和具有父ID的类别表) 如果一个关键字只能属于一个类别,子类别......等等。意思是没有重复。是否还需要拆分它?
答案 0 :(得分:6)
我会在两个表中执行此操作,每个外键来自Categories表:
Keywords
id (PK)
keyword
category_id (FK)
Categories
category_id (PK)
category
parent_category_id (FK)
“类别”表格中的数据如下所示:
category_id category parent_category_id
1 Food null
2 meat 1
3 organic 1
4 fruit 3
并且关键字表格中的数据如下所示:
id keyword category_id
1 grapes 4
2 chicken 2
答案 1 :(得分:5)
您只需要一个表来表示1-1映射。要表示1-many或many-many映射,您应该使用多个表。
如果关键字只能对应一个类别/子类别/子子类别,那么您当前的布局应该没问题。
有一点需要注意:如果您想根据关键字进行搜索,则可以在分离表格时获得性能提升。执行整数搜索要快得多。
将关键字值存储在另一个表中的讨论粗略地对应于另一个表中存储的国家/地区名称(大多数是静态的)this discussion。使用另一个表的一些关键优势可能是(口语)语言独立性,快速搜索以及以后易于更新等。
答案 2 :(得分:1)
我会使用这样的两个表。
Categories
-------------------
PK,FK1 | CategoryID
| Keyword
| Category
SubCategories
--------------------
PK,FK1 | CategoryID
PK,FK1 | SubCategoryID
答案 3 :(得分:1)
将它拆分如果您希望稍后重命名或重新排列类别可能是有意义的:
权衡两者的缺点和优点,然后做出决定.m
答案 4 :(得分:1)
为什么不在PK中添加ParentID列和FK?