1

好的,我正在制作一个个人资料页面,我将在其中调用所有用户的信息。在网站内,用户将获得积分并获得徽章。我有35个徽章。而不是在我的用户表中为每个用户的每个徽章(是/否来决定用户是否获得徽章)都保留一行,我想知道如何在不炸毁用户表的情况下做到这一点。

我有一个带有索引、名称、描述和照片的徽章表。我想知道我可以在我的用户表中为徽章制作一行,并用“,”分隔徽章编号。然后破译徽章,使它们都打印在页面上。我觉得我可以做到,但不知道怎么做。

请帮忙。接受其他建议

4

3 回答 3

2

您正在描述多对多关系;使用联结表来表示它。

创建一个用户表和一个徽章表。然后创建一个带有user_idbadge_id作为外键的 Users_Badges 表(它们将一起形成一个复合键)。

于 2012-10-14T19:25:53.910 回答
1

您可以创建这样的表结构。

表结构

用户

userId 用户名

徽章

徽章ID 徽章名称

用户徽章

userId 徽章ID

-- 返回给定用户在单行和逗号分隔字段中的所有徽章。

select group_concat(b.badgeName) as usersAllBadges
from user_badges ub
inner join users u on u.userId = ub.userId
inner join badges b on b.badgeId = ub.badgeID
where ub.userID=1

-- 返回给定用户的所有徽章单独的行。

select b.badgeName
from user_badges ub
inner join users u on u.userId = ub.userId
inner join badges b on b.badgeId = ub.badgeID
where ub.userID=1
于 2012-10-14T19:28:16.340 回答
1

你标记了 php 所以我假设 php

 explode(',',$data);

http://www.php.net

于 2012-10-14T19:32:01.200 回答