みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

2パターンのデータベース設計で最適なほうはどちら?

こんにちは。
データベース設計をするにあたり、迷っています。
言語はRuby on rails、DBはMysqlです。

たとえば日記サイトを作るとして

(1)テーブル : users , diariesがあって、それぞれのidはuser_diaries というリレーション用のテーブルを作って持たせる
(2)テーブル : users , diariesがあって、diaries にuser_id というカラムを持たせる

というような作り方ができると思うのですが、どちらが優れていると言えるでしょうか?
決めの問題でしょうか?


将来的に大きなサイトになっても大丈夫なようにしておきたいです

投稿日時 - 2011-06-24 03:47:23

QNo.6831353

暇なときに回答ください

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

考え方次第ですね

通常SQLで管理するマスターデータや、定型でプールされていくような売上・ログなど
と異なり、日記というと冗長で可変なデータになると思います。
MySQLの場合、char(varchar)系のデータと異なり、冗長なデータへの検索は
あまり得意ではありません。たとえば前方後方一致「カラム LIKE '%hoge%'」的な
書き方はインデックスが効かずデータがたまってくると相応に重くなってきます。
英語圏では全文検索で解決できますが、日本語のように分かち書きがないものは
標準では検索対象としては適さないのが実情です。

つまり、たんにデータをだらだらと貯めていくだけならDBに乗せる必要はなく
よくあるwikiのようにテキストデータでためておく方が管理しやすいということです。
MySQLではテキストデータのリレーション情報だけ管理することになります。
(SQLはあくまでも集計用だと割り切ってしまうということです)

たとえば日記ID、テキストファイルの名称、ユーザーID、作成日、更新日、
削除フラグなどを取っておけば、別の人が「イイネ」をつけるとしても
日記IDだけ保持すればよいでしょう。

投稿日時 - 2011-06-24 12:23:12

ANo.1

Rails はさわったことないし、どうマッピングされるのかわからないから回答できないけど、

DB だけでいうと

(1) 1ページの日記を、複数の人が共同で書く。
(2) 1ページの日記を、ひとりで書く。

かな?

投稿日時 - 2011-06-24 04:37:50

あなたにオススメの質問