【问题标题】:How can I deal with the sub category in database?如何处理数据库中的子类别?
【发布时间】:2016-02-05 15:38:06
【问题描述】:

我有以下格式的 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,'±'是分隔符,分隔符后面是物品所属的类别。底部的每个类别都是前一个的子类别。因此,在这种情况下,它就像收藏品 --> 装饰和假日 --> 品牌装饰 --> Christopher Radko。问题是项目会有不同数量的类别。

那么我如何创建可以查询并知道每个类别或子类别中的项目的表。

【问题讨论】:

  • 抱歉,1043374544±Collectibles 应该在每一行
  • 请不要以“So”开头所有句子 - 这会使您的问题更容易被忽略。
  • 你看到了一些 Tree DB; stackoverflow.com/questions/2378678/… 可以帮到你
  • @Strawberry 它是 ± 分隔的,不会改变任何东西...

标签: mysql sql database


【解决方案1】:

当一个项目可以有任意数量的类别并且一个类别可以包含任意数量的项目时,您就有了通常所说的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

因为关系表的两个列都是主键的一部分,所以每个可能的组合只能有一个条目。拥有条目意味着拥有该类别分配。

【讨论】:

  • 有没有办法知道哪个类别是子类别,哪个是父类别?
猜你喜欢
  • 2023-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-30
  • 1970-01-01
  • 1970-01-01
  • 2017-12-08
  • 1970-01-01
相关资源
最近更新 更多