我有一个用户表(ID、FNAME、LNAME、兴趣等),另外还有一个表来保存他们可以选择的特定兴趣集:电影、电视、广播、舞台、单口喜剧。
他们可以有多个兴趣,那么我如何将此信息存储在“用户兴趣”字段中?或者实现这一目标的最佳替代方法是什么?
这是多对多的关系。您可以通过引入“连接表”来存储这些。
Table Users:
-----------
UserID PK
Name
...
Table Interests
-------
InterestID PK
Description.
....
User_interest
-----------
UserID PK, FK
InterestID PK, FK
阅读 MySQL 书中的数据库规范化。这是一个重要的主题,因此可能有一个很大的章节来介绍它。
简而言之,您删除了
interests
并最终得到了 third 表,例如:
user_id | interest_id
--------+------------
1 | 1
1 | 2
2 | 1
3 | 4
这为您提供了多对多关系。
对此问题的最佳解决方案是使用 3 个表(第三个表用于存储兴趣与用户的连接):
user (id, name)
interest (id, description)
user_interest (user, interest)
这称为数据库规范化。