存储值列表(例如兴趣)

问题描述 投票:0回答:3

我有一个用户表(ID、FNAME、LNAME、兴趣等),另外还有一个表来保存他们可以选择的特定兴趣集:电影、电视、广播、舞台、单口喜剧。

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

mysql list database-design
3个回答
9
投票

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

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


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


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

8
投票

阅读 MySQL 书中的数据库规范化。这是一个重要的主题,因此可能有一个很大的章节来介绍它。

简而言之,您删除了

interests
并最终得到了 third 表,例如:

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

这为您提供了多对多关系。


3
投票

对此问题的最佳解决方案是使用 3 个表(第三个表用于存储兴趣与用户的连接):

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

这称为数据库规范化

© www.soinside.com 2019 - 2024. All rights reserved.