问大家一个问题,网站上的用户注册,很多时候都会有个人兴趣爱好这一项,有多个选项供选择。
这种表怎么关联的?
比如用户信息表名为 tb_User
里面有 userid,username ......等单项信息 (就是一个字段对应唯一一项这种资料)。兴趣爱好 有如下选项 羽毛球、兵乓球 、足球、篮球、健身、自行车、游泳、瑜伽、街舞、交谊舞、画画、书法、唱歌、下棋。当某人选了其中几个选项后怎样在tb_User中体现出来?        
建表兴趣爱好关联

解决方案 »

  1.   

    应该另外建一个表来存放每个用户的兴趣爱好了
    tb_favor(userid,favorID) --favorId对应兴趣爱好表中的favorID
      

  2.   

    建立一个关系表,假设为A,里面有一个userid,然后有一个兴趣ID,然后兴趣ID关联兴趣表,userid关联用户表,查询的时候3表关联
      

  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 = '张三'