DBのマスターファイルに関してなんですが、
画面上に表示されているラジオボタンリスト、チェックボックスリスト、セレクタの各要素などの表示と裏側のコードをマスター化したいとします。
その場合皆さんはどのような設計にしているのでしょうか?
テーブルのレコードにどのようなものを置いておけばいいか、どういうテーブルが必要でどのようなリレーションを張ればいいのか。またその利点と欠点を教えてください。よろしくお願いします。
ちなみに僕の場合以下のようにしていますが、便利な反面DB設計的には納得がいきません。その理由も書きますが、それ以外に利点欠点があれば、また改善できる余地があればそれもご教授願います。
M_CODENAME_KBN
CODE_KBN_CD //PK
KBN_NM //区分名
SORT_NO //ソート順
UNDISPLAY_FLG //非表示フラグ
UPDATE_TIME //最終更新時間
UPDATE_USER //最終更新者
M_CODENAME
ID //PK
CODE_KBN_CD //区分のPK
CODE_CD //コード
CODE_NM //表示名
CODE_SNM //表示名略称
CONVERT_CD //他社と連携する必要があるばあい変換に使用
UNDISPLAY_FLG //非表示フラグ
DEL_FLG //論理削除フラグ
SORT_NO //ソート順
UPDATE_TIME //最終更新時間
UPDATE_USER //最終更新者
M_CODENAME_KBNはチェックリストやラジオボタンリスト、セレクタ全般の大分類です。
M_CODENAMEは大分類中の各コードと名称が入っている小分類です。
IDはCODE_KBN_CDとCODE_CDで事足りますが、CODE_KBN_CDとCODE_CDのみだと、マスターを編集する管理画面などのコーディングが煩雑になる恐れがあると思い(たとえばAのコードがBに、BのコードがAだったので変更したいとかある場合、PKを持っていないと一時的に同じ主キーになってしまう)、あえて連番をつけました。
この構成のいいところは一括管理ができること。アプリケーション側のカスタムコントロールなどのライブラリにも容易に組み込めるため、プログラマはコードを入れる作業を簡略化できることなどがあります。
逆にデメリットとして、設計の観点から、CODE_CDとCODE_NMというペアはCODE_KBN_CDが違うと全く別のものです。
ある行のCODE_CDは曜日を表すコードだが、別の行のCDは大中小を表す。また別の行のCDは都道府県が入っており、、、などとダブルミーニングどころの話じゃありません(表示物を表すということのみに関しては一貫性はありますが)。

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/10/26 00:49