0

私は以下のように呼ばれる病院での手術を追跡するためのテーブルを持っていSurgery_Recordます。

surgery_Record_ID   patient_ID    surgery_ID        theatre_ID     Surgery_Date
        1               1             20               0           2000-05-10
        2               85            20               0           2000-01-15
        3               10            20               0           2000-01-29
        4               13            16               0           2000-11-19
        5               15            1                0           2000-05-28

私の仮定は次のとおりです。

  1. 患者の再訪はありません
  2. すべての患者は1回の手術しか受けていません
  3. 特定の手術室は1日に1回だけ使用されます

私は次の機能依存性を理解しました:

  1. Patient_ID、Theatre_ID ---> Surgery_Date
  2. Surgery_Record_ID ---> Patient_ID
  3. Patient_ID ---> Surgery_ID、Surgery_Record_ID、Theatre_ID
  4. Patient_ID、Surgery_ID ---> Theater_ID
  5. Surgery_Record_ID、Patient_ID、Surgery_ID、Theatre_ID ---> Surgery_Date

上記の依存関係から、候補キーは{Patient_ID、Theatre_ID} {Patient_ID、Surgery_ID}および{Surgery_Record_ID、Patient_ID、Surgery_ID、Theatre_ID}であることがわかりました。

では、私のテーブルは第2正規形に違反していますか?私はこれを行うのが非常に新しいので、私のFDが正しいかどうかを確認するのを手伝ってください。よろしくお願いします

4

1 に答える 1

1

FDは太字で示されています。


  • Patient_ID、Theatre_ID ---> Surgery_Date

サンプルデータに基づいて、これは間違っていると言わざるを得ません。次のFDは、これら3つの属性に対して正しいようです。それらは主にあなたの仮定から導き出されますが、コメントで指摘したように、おそらく現実の世界には当てはまりません。

  • Patient_ID-> {Theatre_ID、Surgery_Date}
  • Surgery_Date-> Theatre_ID

  • Surgery_Record_ID ---> Patient_ID

各行はSurgery_Record_IDに対して異なる値を取得するため、Surgery_Record_IDがすべての属性を決定します。

  • urgery_Record_ID-> {patient_ID、surgery_ID、theatre_ID、Surgery_Date}

  • Patient_ID ---> Surgery_ID、Surgery_Record_ID、Theatre_ID

患者は再診できず、患者は1回の手術しか受けられないため、Patient_IDは、Surgery_Record_IDと同様に、グローバルに一意になります。Patient_IDはすべての属性を決定します。

  • patient_ID-> {surgery_Record_ID、surgery_ID、theatre_ID、Surgery_Date}

  • Patient_ID、Surgery_ID ---> Theater_ID

上記のPatient_IDについて説明しました。Surgery_IDは何も決定しません。


  • Surgery_Record_ID、Patient_ID、Surgery_ID、Theatre_ID ---> Surgery_Date

  • Surgery_Record_ID-> {Patient_ID、Surgery_Date}

  • Patient_ID-> {Surgery_Record_ID、Surgery_Date}
  • Surgery_Date-> {Surgery_Record_ID、Patient_ID}

仮定では、Surgery_Dateが一意である必要があります。したがって、Surgery_Dateはすべての属性を決定します。

  • Surgery_Date-> {patient_ID、surgery_ID、theatre_ID、surgery_Record_ID}
于 2013-04-05T18:50:10.647 に答える