06/01/14 00:03:14
>>110
制限回数はnot null にしてユーザーに常に数字を入れさせるということ。初期値ゼロでもよい。
表を参照するときに連結して問い合わせるVIEWを作っておくとよい。
select a.ユーザID, a.オプションID, CASE b.制限回数フラグ WHEN 1 THEN a.制限回数 ELSE NULL END as 制限回数
from テーブル a join オプションIDテーブル b on (a.オプションID = b.オプションID)
これで制限回数を使わないケースでは今までどおりNULLが帰ってくる。
check制約をつけることを正規化とは言わないといいたかったのだが、
同等なことをしたいならトリガーなり更新用のストアドなり作って違反した場合に例外を起こさせることはできる。
処理系で方法は違うだろうけど。