- 締切済み
2パターンのデータベース設計で最適なほうはどちら?
こんにちは。 データベース設計をするにあたり、迷っています。 言語はRuby on rails、DBはMysqlです。 たとえば日記サイトを作るとして (1)テーブル : users , diariesがあって、それぞれのidはuser_diaries というリレーション用のテーブルを作って持たせる (2)テーブル : users , diariesがあって、diaries にuser_id というカラムを持たせる というような作り方ができると思うのですが、どちらが優れていると言えるでしょうか? 決めの問題でしょうか? 将来的に大きなサイトになっても大丈夫なようにしておきたいです
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- yambejp
- ベストアンサー率51% (3827/7415)
考え方次第ですね 通常SQLで管理するマスターデータや、定型でプールされていくような売上・ログなど と異なり、日記というと冗長で可変なデータになると思います。 MySQLの場合、char(varchar)系のデータと異なり、冗長なデータへの検索は あまり得意ではありません。たとえば前方後方一致「カラム LIKE '%hoge%'」的な 書き方はインデックスが効かずデータがたまってくると相応に重くなってきます。 英語圏では全文検索で解決できますが、日本語のように分かち書きがないものは 標準では検索対象としては適さないのが実情です。 つまり、たんにデータをだらだらと貯めていくだけならDBに乗せる必要はなく よくあるwikiのようにテキストデータでためておく方が管理しやすいということです。 MySQLではテキストデータのリレーション情報だけ管理することになります。 (SQLはあくまでも集計用だと割り切ってしまうということです) たとえば日記ID、テキストファイルの名称、ユーザーID、作成日、更新日、 削除フラグなどを取っておけば、別の人が「イイネ」をつけるとしても 日記IDだけ保持すればよいでしょう。
- dscripty
- ベストアンサー率51% (166/325)
Rails はさわったことないし、どうマッピングされるのかわからないから回答できないけど、 DB だけでいうと (1) 1ページの日記を、複数の人が共同で書く。 (2) 1ページの日記を、ひとりで書く。 かな?