普通預金口座と当座貸越口座の 2 つの口座テーブルがあり、列 "from_account" が普通預金口座 ID または当座貸越口座 ID のいずれかと等しい値しか持てないテーブル トランザクションがある場合、外部キー制約をどのように設定すればよいですか? 貯蓄と当座貸越のアカウント ID が衝突する可能性があるため、より良いスキーマ設計はありますか。私はところでmysqlを使用しています:)ありがとう
質問する
222 次
2 に答える
1
より優れたスキーマ設計は、トランザクション テーブルに 2 つの異なる列を作成することです。1 つは普通預金口座テーブルを参照し、もう 1 つは当座貸越口座テーブルを参照します。もちろん、これらの列は NULL 可能である必要があり、そのうちの 1 つだけが他のテーブルの実際の行を指します。ただし、この設計では、参照整合性制約を適用できます。
もう 1 つのオプションは、2 つのアカウント テーブルを 1 つにマージすることです。特に、類似した列が多数ある場合はそうです。
于 2012-07-23T09:24:55.377 に答える
0
追加の列を定義して、と の列を組み合わせてACCOUNT_TYPE
設定できます。に aを追加して、値を 1,2 に制限することもできます。UNIQUE CONSTRAINT
FROM_ACCOUNT
ACCOUNT_TYPE
CHECK CONSTRAINT
ACCOUNT_TYPE
または、参照されるテーブルごとに 1 つの列と を定義CHECK CONSTRAINT
して、両方が同時に入力されないようにします。
最後に、両者に大きな違いがない場合は、両方のアカウント テーブルをマージすることを検討してください。
于 2012-07-23T09:29:47.033 に答える