2005年10月30日

テーブルの設計って・・・

やったことないんですよねぇ・・・
なんせいつも「とにかく君はJava書いてJava教えて、他にJavaできる人いないから」ってプロジェクトばかり転々としてきたせいか、データベース周りはほとんど触ってない

そーいう時は、決められてきたものに従って作っちゃえばまあいいんですけどねぇ・・・

自分のサイトのテーブル構成をまじめに作り直そうと思って悩んでます。

今の構成は正規化すらサボってるので絶対人に言えません(笑)
で、俺のサイトってのがこれ

http://j-world.nu/

詩が投稿されてきて作者別にまとめられてて感想つけられますよーって作り。

単純に考えると

作者
作品
感想

の3つくらいに分けて考えたらいいんだよなー、くらいまではわかるんです。
が、たとえば・・・
http://j-world.nu/servlet/do/viewer?id=4305&poet=343
こんな風に、感想何件ついてますーとか表示したら、作品と感想のテーブルから取得しなきゃいけない、まあもちろんSQL的には一緒に取れるますし、この程度ならまあいいやって気にもなるけど。

http://j-world.nu/index/poetsindex.html

例えばこんなばかでかいリストになるとどうしたものか・・・作者名は作者のテーブルが持ってますし、作品数と最終更新日は作品のテーブルから求められます。
※テーブルの詳しい内容を説明してないから説明不足かもだけど

http://j-world.nu/system/poetinfo.cgi?POET_NO=0343

さらにこっちまで行くと、作者と作品と感想それぞれ読まないといけません、もちろん、SQL使い慣れた方ならそんなもんどうってことないんでしょうけど、そもそもうちのレンタルサーバがMySQL3系なので凝ったクエリーが非常に書きづらいし、俺はSQL使いとしては低レベルなのでいまいち自信が持てません。

例えばこれで、作品のテーブルにその作品への感想総数(と感想の最新日付)のカラム持ったりとかって、アリですかねぇ?

当然、感想書くときに作品のテーブルを更新しないといけなくなりますが・・・

設計としてクリーンなのはあくまでそれぞれのテーブルから必要な値を求める。って形だと思うんですけど、このあたり柔軟に曲げてしまうのってアリなんでしょうか?

もちろん、それぞれの画面へのアクセス数とかから負荷を考慮して、その上でどうするか、って考え方もあると思うし、実のところ負荷的に問題になるようなアクセス数なんてないんだけれど(笑)

いや、誰に聞いてるんだよって気もしますけど(笑)

mixiで同業者さん達にも公開されてるし、Thunderbird記事のおかけでたまに検索してここにたどり着いてくれる人とかもいるから、もしかしたら誰か・・・と思って書いてしまってます(笑)

もしも誰か気が向いたら話を聞かせてください(笑)
posted by Jack at 16:52| Comment(0) | TrackBack(0) | Project j2 | 更新情報をチェックする
この記事へのコメント
コメントを書く
コチラをクリックしてください

この記事へのトラックバック
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。