我有以下格式的 csv 文件:
1043374544±Collectibles
1043374544±Decorative & Holiday
1043374544±Decorative by Brand
1043374544±Christopher Radko
1043397455±Collectibles
1043397455±Decorative & Holiday
1043397455±Decorative by Brand
1043397455±Enesco
1043397455±Precious Moments
数字是itemID,'±'是分隔符,分隔符后面是该item所属的类别。底部的每个类别都是前一个类别的子类别。因此,在本例中,就像收藏品 --> 装饰和假日 --> 按品牌装饰 --> Christopher Radko。问题是项目会有不同数量的类别。
那么我如何创建一个表格,以便我能够查询并知道每个类别或子类别中有哪些项目。
最佳答案
当一个项目可以有任意数量的类别并且一个类别可以包含任意数量的项目时,您就拥有了通常所说的 n:m
关系。
解决此问题的常用方法是添加第三个表“关系”,其中主键是另外两个表的表。
这是一个示例(* 表示属于主键一部分的列)
表格产品
id* | name | price
----+-----------------+--------
1 | Thingamy | 3.45
2 | Whatchamacallit | 2.99
3 | FooBarWidget | 1.00
表格类别:
id* | name
----+-------------
1 | Collectibles
2 | Holiday
3 | Decorative
表类别_产品
product_id* | category_id*
------------+---------------
1 | 1 // Thingamy is a Collectible item
2 | 1 // Whatchamacallit is a Collectible item
2 | 2 // Whatchamacallit is also a Holiday item
由于关系表的两列都是主键的一部分,因此对于每种可能的组合,它只能有一个条目。拥有该条目意味着拥有该类别分配。
关于mysql - 如何处理数据库中的子类别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35227955/