在(如何)在我的数据库中存储类别(种类)树的位置?

时间:2012-05-27 00:24:32

标签: mysql database-design csv entity-relationship

所以,我正在使用MySQL Workbench建模数据库。我有一个名为Category(两个字段,id和描述)的表和一个名为Event的表。我想在Event中有一个列,其中包含来自Categories的任意数量的id(作为CSV,它们的顺序很重要)。 我如何在MySQL Workbench中表示这一点(我的意思是在ER模型中)?或者我这样做真的错了?

它看起来像这样:

| ID | Descripion
|  1 | Lorem...
|  2 | Ipsum...
|  3 | Dolor...
|  4 | Sit...
|  5 | Amet...


| ID | Name   | Categories
|  1 | John   | 2,1,5,4
|  2 | Reese  | 3,5,4
|  3 | Ben    | 1,5
|  4 | Linus  | 3,4,2
|  5 | Jack   | 5
|  6 | Lemon  | 4,5,2

(我已经读过这个:How to structure "categories" data in the database?但是我不确定我处于相同的情况。我的类别更像是一个'树'而不是标签......)

1 个答案:

答案 0 :(得分:2)

对于许多关系,你需要一个中间表来保存两个表中的id,你正在创建它们之间的关系。在此表中,您还可以设置一个订购列,指明如何对类别进行排序。

| ID_Event | ID_Cat | Order
| 1        | 1      | 2000 
| 1        | 2      | 1000
| 1        | 5      | 3000
| 1        | 4      | 4000 

等等。

您可以选择在订购栏中留出1000个以上的差距,以便您可以轻松地在现有订购商品之间添加类别。