1

普通預金口座と当座貸越口座の 2 つの口座テーブルがあり、列 "from_account" が普通預金口座 ID または当座貸越口座 ID のいずれかと等しい値しか持てないテーブル トランザクションがある場合、外部キー制約をどのように設定すればよいですか? 貯蓄と当座貸越のアカウント ID が衝突する可能性があるため、より良いスキーマ設計はありますか。私はところでmysqlを使用しています:)ありがとう

4

2 に答える 2

1

より優れたスキーマ設計は、トランザクション テーブルに 2 つの異なる列を作成することです。1 つは普通預金口座テーブルを参照し、もう 1 つは当座貸越口座テーブルを参照します。もちろん、これらの列は NULL 可能である必要があり、そのうちの 1 つだけが他のテーブルの実際の行を指します。ただし、この設計では、参照整合性制約を適用できます。

もう 1 つのオプションは、2 つのアカウント テーブルを 1 つにマージすることです。特に、類似した列が多数ある場合はそうです。

于 2012-07-23T09:24:55.377 に答える
0

追加の列を定義して、と の列を組み合わせてACCOUNT_TYPE設定できます。に aを追加して、値を 1,2 に制限することもできます。UNIQUE CONSTRAINTFROM_ACCOUNTACCOUNT_TYPECHECK CONSTRAINTACCOUNT_TYPE

または、参照されるテーブルごとに 1 つの列と を定義CHECK CONSTRAINTして、両方が同時に入力されないようにします。

最後に、両者に大きな違いがない場合は、両方のアカウント テーブルをマージすることを検討してください。

于 2012-07-23T09:29:47.033 に答える