私が設計しているデータベースについて簡単な質問があり、それが正規化されていることを確認しています...
customerIdの主キーを持つcustomerテーブルがあります。顧客のアカウントステータスを反映するコードを持つStatusCode列があります。1 =開いている、2 =閉じている、3=一時停止しているなど。
ここで、顧客テーブルに、アカウントの一時停止が許可されているかどうかを示す別のフィールドが必要です...特定の顧客は、取引条件に違反した場合に自動的に一時停止されます...他の顧客はそうではありません...テーブルフィールドは次のようになります。
顧客(CustomerId(PK):StatusCode:IsSuspensionAllowed)
IsSuspensionAllowedフィールドがYESに設定されている場合を除いて、特定の顧客を知らない限り、ステータスや特定の顧客の一時停止が許可されているかどうかを判断できないため、両方のフィールドは主キーに依存しています。 StatusCode 3(一時停止)。
上記のテーブルデザインから、チェック制約がテーブルに追加されない限り、これが発生する可能性があるようです。IsSuspensionAllowedがYESに設定され、StatusCodeが3に設定されている場合にのみ、2つが相互に依存しているため、これを強制するためにリレーショナル設計に別のテーブルを追加する方法がわかりません。
ですから、私の長い説明の後、私の質問はこれです:これは正規化の問題であり、これを強制するリレーショナル設計は見られません...または実際には、チェック制約と実際、テーブルはまだ正規化されています。
乾杯、
スティーブ