ハッシュタグを作ってみる
RYです。
今日は最近作ったハッシュタグのデータベースに関して書いていきます。
久しぶりに技術ネタですね。
その前に、そもそもなんで作りたかったのか?
なんでハッシュタグを作ろうと思ったかなのですが、ユーザー同士を簡単に繋ぎたかったんですよね。
例えば
「React.js詳しい人いないかなー」
とかいうのをすぐに調べたいのです。
他にも「ラブライブ!好きな人いないかなー」とか、「ポケモンGO一緒にやってくれる人探したいよー」とかそんな感じに使えるだろうなーと。
作るのは決まった。どう作るか。
どう実装するかは色々な方法があるんですけど、今回は普通のRDBで”Toxi” solutionを使おうと思います。
詳細は以下のページより。
他の方法も紹介されていますが、このToxi法はタグのマッピング用テーブルを使うのがポイントですね。
http://tagging.pui.ch/post/37027745720/tags-database-schemas
簡単に解説
まず、タグテーブルがあります。
最低限必要なのはIDとタグの文字列。
そして、そのタグIDとユーザーIDをマッピングするタグマップテーブルが必要です。
あとはユーザーIDがあるユーザーのテーブル(これは元々あるでしょう)があれば出来ます。
RDBでは極々自然な考え方だと思います。
そんな感じで作ってみる
まずタグマップ
create table tag_map ( id int auto_increment, user_no int(10) unsigned, tag_id int, created_at timestamp not null default current_timestamp, updated_at timestamp not null default current_timestamp on update current_timestamp, primary key(id) );
次にタグ自体のやつ
create table hashtags ( id int auto_increment, tag varchar(140), created_at timestamp not null default current_timestamp, updated_at timestamp not null default current_timestamp on update current_timestamp, primary key(id) );
今回は楽になるようにちょっとしたビューも作りました。
そんな感じで…
さて、適当なデータを作って試してみましょう
select * from user_hashtag where user_no = 1; +----+--------+--------------------+---------+------------+ | id | tag_id | tag | user_no | user_name | +----+--------+--------------------+---------+------------+ | 1 | 1 | php | 1 | 矢澤 にこ | | 2 | 2 | javascript | 1 | 矢澤 にこ | | 3 | 3 | ラブライブ! | 1 | 矢澤 にこ | +----+--------+--------------------+---------+------------+
これでプログラミングのみならず、アニメでも他のユーザーと繋がれるようになりました!
めでたしめでたし