日期:2014-05-17  浏览次数:20640 次

怎样建用户信息与兴趣爱好表
问大家一个问题,网站上的用户注册,很多时候都会有个人兴趣爱好这一项,有多个选项供选择。
这种表怎么关联的?


比如用户信息表名为 tb_User
里面有 userid,username ......等单项信息 (就是一个字段对应唯一一项这种资料)。

兴趣爱好 有如下选项 羽毛球、兵乓球?、足球、篮球、健身、自行车、游泳、瑜伽、街舞、交谊舞、画画、书法、唱歌、下棋。

当某人选了其中几个选项后怎样在tb_User中体现出来? ??? ???
建表 兴趣爱好 关联

------解决方案--------------------
应该另外建一个表来存放每个用户的兴趣爱好了
tb_favor(userid,favorID) --favorId对应兴趣爱好表中的favorID
------解决方案--------------------
建立一个关系表,假设为A,里面有一个userid,然后有一个兴趣ID,然后兴趣ID关联兴趣表,userid关联用户表,查询的时候3表关联
------解决方案--------------------
--user 表
CREATE TABLE tb_user
(
userid INT IDENTITY NOT NULL PRIMARY KEY,
username NVARCHAR(100) --张三,李四
)
--兴趣爱好表
CREATE TABLE tb_savour
(
savourid INT IDENTITY NOT NULL PRIMARY KEY,
savourname NVARCHAR(100) --羽毛球、兵乓球 、足球、篮球、健身、自行车、
)
--关系表
CREATE TABLE tb_userSavour
(
id INT IDENTITY NOT NULL PRIMARY KEY,
userid INT NOT NULL,
savourid INT NOT NULL
)

--保存某人兴趣爱好
INSERT INTO tb_userSavour(userid, savourid) VALUES(1, 2)
INSERT INTO tb_userSavour(userid, savourid) VALUES(1, 3)
INSERT INTO tb_userSavour(userid, savourid) VALUES(1, 4)
--查询某人兴趣爱好
SELECT a.userid,a.username,c.savourname
FROM dbo.tb_user a
LEFT JOIN dbo.tb_userSavour b
ON a.userid = b.userid
LEFT JOIN dbo.tb_savour c
ON b.savourid = c.savourid
WHERE a.username = '张三'