0

myTable id, admitDate, dischargeDatePK
jxn コード id ,code
テーブル code, description

myTable には他にも多くのフィールドがあり、各レコードに一意の識別子を持たせる唯一の方法は、id、admitDate、dischargeDate の 3 つの値 PK を持つことです。同じ人 (同じ ID) が 2 回入院した場合、ID は繰り返されますが、admitDate と DischargeDates は異なります。主キーの一部を myTable から jxn テーブルにコピーしようとしidたところ、SSMS が怒って、一意の制約がないと言いました。

これがうまくいかないことはわかっていますが、実際には、この問題は通常どのように解決されるのでしょうか? 前述したように、レコードを確実に識別する唯一の方法は、これら 3 つのフィールドを一緒に使用することです。入退院が複数回ある人への対応は?

PK の一意の制約に違反しているユーザーを見つけて、moreThanOneAdmissionテーブルに移動する必要がありますか?

4

1 に答える 1

1

患者 ID と入院日 (場合によってはプラス時間) の複合主キーを取得できるはずです。まだ退院していない場合は、退院日がわからない場合があります。

一意の制約に関するエラーが発生した場合は、おそらく定義方法にエラーがあったためです。複合主キーを持つことは間違いなく合法です。

患者の入院テーブルとジャンクション テーブルの完全な内部結合を実行するには、ジャンクション テーブルの FK に、患者の入院テーブルの PK フィールド (3 つすべて) で構成される外部キーが必要です。

于 2012-06-13T00:47:31.653 に答える