存储值列表(例如兴趣)

时间:2011-10-14 10:24:35

标签: mysql list database-design

我有一张用户表(ID,FNAME,LNAME,INTERESTS,...)以及另一张表来保存他们可以选择的特定利益集:电影,电视,广播,舞台,站立。< / p>

他们可以有多个兴趣,那么如何将这些信息存储在Users INTERESTS的字段中呢?或者实现这一目标的最佳替代方法是什么?

3 个答案:

答案 0 :(得分:7)

这是一种多对多的关系。您可以通过引入“连接表”来存储它们。

Table Users:
-----------
UserID PK
Name
...


Table Interests
-------
InterestID PK
Description.
....


User_interest
-----------
UserID PK, FK
InterestID PK, FK

答案 1 :(得分:4)

阅读MySQL书籍中的database normalisation。这是一个重要的主题,所以可能有一个很大的篇章。

简而言之,您删除interests并最终使用第三个​​表结束,例如:

user_id | interest_id
--------+------------
   1    |     1
   1    |     2
   2    |     1
   3    |     4

这可以为您提供多对多的关系。

答案 2 :(得分:2)

对此最好的解决方案是使用3个表(第三个用于存储利益连接到用户):

user (id, name)
interest (id, description)
user_interest (user, interest)

这称为database normalization