0

我已经在 MySQL 上摸索了一段时间,阅读教程等,但我对事情的工作原理有一个很好的了解,所以这一次我想看看我是否可以自己做,但我我在某一方面有点困惑。

我正在尝试为用户创建一个兴趣表,以便在他们的兴趣之间进行交互。我对如何为用户存储兴趣信息感到困惑。

用户兴趣

interest_id | interests_names |

我怎么能输入特定的兴趣供他们使用,而不让他们在数据库中输入自己的兴趣,例如运动、生活、爱好、食物、音乐、游戏等。

我应该在 user_interests 中为每个要存储的用户 ID 创建另一列吗?

我迷失在表结构上。

4

2 回答 2

2

你在寻找这样的东西吗?

CREATE TABLE users
(
  user_id int not null auto_increment primary key, 
  user_name varchar(32)
);
CREATE TABLE interests
(
  interest_id int not null auto_increment primary key, 
  interest_name varchar(32)
);
CREATE TABLE user_interests
(
  user_id int not null, 
  interest_id int not null,
  foreign key (user_id) references users (user_id),
  foreign key (interest_id) references interests (interest_id)
);

列出所有用户及其兴趣

SELECT user_id, interest_name
  FROM user_interests ui JOIN interests i
    ON ui.interest_id = i.interest_id

获取对“运动”有相同兴趣的用户列表

SELECT q.user_id, u.user_name
  FROM
(
  SELECT ui.user_id
    FROM user_interests ui JOIN interests i
      ON ui.interest_id = i.interest_id
   GROUP BY user_id
  HAVING MAX(i.interest_name = 'sports') = 1
) q JOIN users u
    ON q.user_id = u.user_id

这是SQLFiddle演示

于 2013-09-16T04:55:12.220 回答
0

创建另一个名为 standardInterests 或类似的表,并将其插入应用程序的列表框中,作为他们从中选择兴趣的数据源。

于 2013-09-16T04:42:42.960 回答