1

さて、ユーザーのすべての情報を呼び出すプロファイル ページを作成しています。Web サイト内で、ユーザーはポイントを獲得し、バッジを獲得します。私は35個のバッジのようなものを持っています。すべてのバッジのユーザー テーブルに行を作成するのではなく (ユーザーがバッジを獲得したかどうかを判断するためにはい/いいえ)、ユーザー テーブルを爆破せずにこれを行う方法を考えていました。

インデックス、名前、説明、写真を含むバッジ テーブルがあります。ユーザー テーブルにバッジ用の 1 行を作成し、バッジ番号を「,」で区切ることはできないかと考えていました。次に、バッジを解読して、すべてがページに印刷されるようにします。私はこれを行うことができると感じていますが、方法がわかりません。

助けてください。他の提案を受け入れる

4

3 に答える 3

2

あなたは多対多の関係を説明しています。ジャンクション テーブルを使用してそれを表します。

ユーザーのテーブルとバッジのテーブルを作成します。user_id次に、とを外部キーとして使用して、Users_Badges テーブルを作成しますbadge_id(一緒に複合キーを形成します)。

于 2012-10-14T19:25:53.910 に答える
1

このようなテーブル構造を作成できます。

テーブル構造

ユーザー

ユーザー ID ユーザー名

バッジ

BadgeId BadgeName

ユーザーバッジ

ユーザー ID バッジ 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 に答える