|
趣味と実益と現実逃避で更新されるblogです.
役に立つことから無意味なことまでさまざま書いていきます.
|
| May 28th, 2007 | ||||||||
タグを実現するテーブル設計を妄想する(Read: 7375) |
||||||||
参照: はてなブクマやblog等で最近よく見かける「タグ」システムについて。 自分のサイトの商品に、 ユーザーが自分で「タグ」を指定することができるようにするには、 どういう.. - 人力検索は | ||||||||
| そういえばちゃんとタグ関連の処理って書いたことがないなーと思ったので妄想してみた. パフォーマンス的には天井が高くなさそうだけど. | ||||||||
|
下記はてなに書いたのをそのままコピペ.
テーブル構造
CREATE TABLE items ( id integer NOT NULL PRIMARY KEY, name varchar(200) NOT NULL, price integer NOT NULL ); CREATE TABLE users ( id integer NOT NULL PRIMARY KEY, name varchar(200) NOT NULL, email varchar(200) NOT NULL, login_name varchar(100) NOT NULL, login_password varchar(40) NOT NULL ); CREATE TABLE item_tags ( id integer NOT NULL PRIMARY KEY, user_id integer NOT NULL, item_id integer NOT NULL, name varchar(200) );
レコードの追加商品の追加は下記のようにやります.INSERT INTO items (id, name, price) VALUES( 1, '商品1', 100); INSERT INTO items (id, name, price) VALUES( 2, '商品2', 200); INSERT INTO users (id, name, email, login_name, login_password) VALUES( 1, 'ユーザー1', 'user1', 'user1@example.com', '暗号化,ハッシュ化したパスワード'); INSERT INTO users (id, name, email, login_name, login_password) VALUES( 2, 'ユーザー2', 'user2', 'user2@example.com', '暗号化,ハッシュ化したパスワード'); INSERT INTO item_tags (id, user_id, item_id, name) VALUES( 1, 1, 1, '書籍'); INSERT INTO item_tags (id, user_id, item_id, name) VALUES( 2, 1, 1, '参考書'); INSERT INTO item_tags (id, user_id, item_id, name) VALUES( 3, 1, 2, 'MUSIC'); INSERT INTO item_tags (id, user_id, item_id, name) VALUES( 4, 1, 2, 'CD'); INSERT INTO item_tags (id, user_id, item_id, name) VALUES( 5, 2, 1, '本'); INSERT INTO item_tags (id, user_id, item_id, name) VALUES( 6, 2, 1, '後で読む'); INSERT INTO item_tags (id, user_id, item_id, name) VALUES( 7, 2, 1, '参考書'); INSERT INTO item_tags (id, user_id, item_id, name) VALUES( 8, 2, 2, 'CD'); INSERT INTO item_tags (id, user_id, item_id, name) VALUES( 9, 2, 2, '音楽'); テストSQLユーザー1が商品1に付加している商品にタグSELECT * FROM item_tags WHERE user_id = 1 AND item_id = 1; SELECT COUNT(*) FROM (SELECT user_id FROM item_tags WHERE item_id = 1 GROUP BY user_id) AS rows; SELECT * FROM item_tags WHERE item_id = 1 GROUP BY name; SELECT name FROM item_tags WHERE user_id = 1 GROUP BY name; |
||||||||
| ELF May 28th, 2007 13:33 / [ 編集 ]
[ コメントする ] [ トラックバック(3) ] [ ] |
| The $5 Script Archive The best of PHP, MySQL, Flash and XML technologies, brought together at one low price. |
[ POST ] [ AddLink ] [ CtlPanel ]
| << | 2月 | >> | ||||
| 日 | 月 | 火 | 水 | 木 | 金 | 土 |
| * | * | * | 1 | 2 | 3 | 4 |
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | * | * | * |