No Programming, No Life

プログラミング関連の話題や雑記

DB制約とシステム要件

DB上の制約とシステム要件による制約が必ずしも一致しているとは限らない。本来ならば一致している方が仕様の理解を助けることになるのだが、現実問題そうなっていないシステムがあるのだからしょうがない。


例えば、「職員」というテーブルに「本務」or「兼務」のどちらかの種別を管理するタプル(本兼区分とする)があるとすると、DB的には、ある職員に対して、「本務」と「兼務」の2レコード分存在することは許されるのだが、システム的には「ひとりの職員は本務か兼務のどちらかですよ」といった場合などである。


上記のような場合、システム側でエラーチェックするなどの処置が必要になってしまうので注意が必要になる。DBの構造を勝手に改造できるならなるべくシステム要件を満たすように改造すべきだが、現実には色々な制約があってそうもいかない事も多い。実際にプログラムを製造する際には、DB制約とシステム要件をよく考えておかなければならないだろう。