ホチキス先生の「プログラマーと呼ばれたい」

InfoPath & SQL Server !

SQL Server – 「基準値」テーブルでコードを一括管理する

leave a comment »

SQL Serverによるシステムがある程度になると、いろいろな処理をするためのコードを効率よく処理することが必要になる。学校の場合は、たとえば「教科科目コード」や「時限コード」のような時間割に関するコード、「在籍コード」や「異動コード」など生徒の在籍状態に関するコード、などだ。

これらのコードをシステム上どのようにして処理するかだが、単純に考えると「教科科目コード」や「時限コード」といった名前のテーブルを作りコードを記録することだが、それぞれのコードに対してテーブルを作ると、テーブルの数が増えてシステム全体の見通しが悪くなる。ちなみに、このようにテーブルを作る場合でも、テーブル名は「コード教科科目」や「コード時限」のように「コード」といった共通の名前を前にするとテーブル名を一覧表示したときに見通しがよくなる。もちろん「C_教科科目コード」や「C_時限コード」のようにシンボリックな文字を前につけてもよい。

システムが大きくなると、このようなコードを記録する必要も大きくなる。そこでコードを一括して「基準値」テーブルにストアして管理する方法がよい。そのためにコードはすべて二桁の文字char(2)か、または日付smalldatetimeと統一し、次のようなテーブルを作る。

——————————————————————————-

テーブル名:基準値
フィールド:
基準値管理番号 int IDENTITY(1,1) NOT NULL
      基準分類 varchar(50)
      基準内容 varchar(50)
      基準値 char(2)
      基準日 smalldatetime
      表示順 int

——————————————————————————-

このテーブルで、「基準分類」によってコードの分類をし、コードの内容は「基準内容」に記述する。たとえば次のようにデータをストアする。

——————————————————————————-

基準分類    基準内容    基準値    基準日    表示順
性別          男              01          NULL      1
性別          女              02          NULL      2
異動         入学           01          NULL      1
異動         休学           02          NULL      2
異動         復学           03          NULL      3
異動         留学           04          NULL      4
異動         転学           05          NULL      5
異動         退学           06          NULL      6
異動         卒業           07          NULL      7
教科         国語           01          NULL      1
教科         地歴           02          NULL      2
教科         数学           03          NULL      3
教科         理科           04          NULL      4
教科         保健体育    05          NULL      5
教科         芸術           06          NULL     6
教科         外国語        07          NULL     7
教科         家庭           08          NULL     8
教科         情報           09          NULL     9
教科         商業           10          NULL    10
日程    前期開始日  NULL  2011/04/01   1
日程    前期終了日  NULL  2011/09/30   2
日程    後期開始日  NULL  2011/10/01   3
日程    後期終了日  NULL  2012/03/31   4

——————————————————————————-

この「基準値」テーブルを使って必要なコードを取得する。たとえば「性別」のコードを使うときは、

select 基準内容,基準値 from 基準値 where 基準分類=’性別’ order by 表示順

といったクエリを使う。これを「v_性別コード」のようなビューにしておくのもよいだろう。

「日程」データを取得するには、

select 基準内容,基準日 from 基準値 where 基準分類 = ‘日程’ order by 表示順

とする。

このように、コードを一元管理することで「あのコードを格納したのはなんというテーブルだったっけ」というように探し出す必要がなくなるのだ。

Written by Yoshio Matsumoto

2011年11月10日 @ 10:55 PM

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。