不同类别的数据库结构设计

时间:2015-03-05 03:55:23

标签: mysql database database-design relational-database directory-structure

我的数据库中有两个表...名为categories的第一个表包含所有父类别和子类别......如下图所示......

    Categories_id   name            Parent_Categories
    1               art                 0
    2               entertainment       0
    3               music               2
    4               dance               3
    5               songs               3

现在我必须创建第二个表名为Users_table ..但条件是...... 1)我们可以为每个用户分配多个类别ID ... 2)多个用户可以拥有相同的类别。 下图是当前的数据库结构..还有更好的方法吗?

 User_Id        Categories_id
    1           4,5
    2           1,2
    3           1,2,4
    4           1,5,4

3 个答案:

答案 0 :(得分:0)

用户:

- UserID

UserCategory:

- UserID
- CategoryID

类别:

- CategoryID
- ParentID

答案 1 :(得分:0)

create table Users_table (User_Id integer,Categories_id integer, primary key(User_Id,Categories_id), foreign key (Categories_id) references categories(Categories_id);

...

primary key(User_Id,Categories_id)< - 可以为每个用户分配多个类别ID,并且仅限制具有相同值的行的重复。因此,您可以让多个用户具有相同的类别,并且用户具有多个类别ID。但不是2行具有相同的用户ID和相同的类别ID

foreign key (Categories_id) references categories(Categories_id)< - 此类别ID引用类别表

答案 2 :(得分:0)

在这种情况下使用标准化,如下所示 -

1)用户表    - ID     - 用户名

2)类别表    - ID     - parent_category_id

3)user_categories表    - ID    - 用户身份     - categories_id