<< Prev Page Next Page >>

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。


RDBの定義ルール

RDBのカラム名や型をどうつけるかについて、プログラム的に扱えるルールを作っておくといろいろいいことがあるってRuby on Railsが教えてくれました。

でも、Railsのルール、単数形とか複数形とかは残念ながら使いにくくてしょうがないし、リレーションについてももっとルールがあったほうが使いやすい。

こんなルールを考えた。というか、今使っている。
・テーブル名は自由。英語の名詞がよい。
・テーブルはプライマリキーを一つだけ持ち、カラム名は「テーブル名_id」とし、型は自動的に連番で増えるintとする。(mysqlならauto_increment、postgresならserial、MSSQLならIDENTITY)
・他のテーブルにリレーションを持つ場合、そのテーブルのプライマリキーと同じ名前のカラムを持つ。(「user」テーブルへのリレーションのためのカラムは「user_id」である)
・同じテーブルに複数のリレーションを持つ場合、「任意の文字列_プライマリキー」という名前のカラムを持つ。(「image」テーブルに3つのリレーションを持つ場合「main_image_id」「sub1_image_id」「sub2_image_id」というカラム名にする)
・そのレコードの生成時刻を記録するのは「created_time」(もちろんdatetime型)
・そのレコードの更新時刻を記録するのは「modified_time」
・そのレコードの生成者のユーザーIDを記録するのは「creator_id」
・そのレコードの更新者を記録するのは「modifier_id」
・上記4つのカラムはあってもなくてもよい
・テーブルAとテーブルBの間で多対多の関係を表すためにリンク用テーブルを作る場合、二つのテーブル名をアルファベット順で並べて「A_B」という名前にする。

このぐらいをルールにしておくと、たとえば
・コミュニティに所属するユーザーの一覧をメソッド一発で取得できる
・自分のお気に入り登録の一括削除とかをメソッド一発でできる。お気に入り登録した日とかはコーディングなしで登録できる
・他人のToDoにコメントをつけるとかの処理がメソッド一発でできる。ToDoを更新した人と時刻の登録とかはコーディング無し。
なんていうクラスが作れる。便利。
ActiveRecordより面倒なAPIにはなるけど、ちゃんとLEFT JOINするSQLを作るぶん高速、というかハチャメチャ遅くはならない。


この記事に対するコメント

この記事に対するコメントの投稿



管理者にだけ表示を許可する

この記事に対するトラックバック

トラックバックURL
http://tockri.blog78.fc2.com/tb.php/98-61395b90
この記事にトラックバックする(FC2ブログユーザー)

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。