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. 每个病人只做一次手术
  3. 一个特定的手术室一天只使用一次

我想出了以下功能依赖项:

  1. Patient_ID, Theatre_ID---> Surgery_Date
  2. Surgery_Record_ID---> Patient_ID
  3. Patient_ID---> Surgery_ID, Surgery_Record_ID, Theatre_ID
  4. 患者_ID、手术_ID--->剧院_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}

那么我的表格是否违反了第二范式?请帮助检查我的 FD 是否正确,因为我在这方面非常陌生。非常感谢提前

4

1 回答 1

1

您的 FD 以粗体显示。


  • Patient_ID, Theatre_ID---> Surgery_Date

根据样本数据,我不得不说这是错误的。对于这三个属性,以下 FD 似乎是正确的。它们主要来自您的假设,我在评论中指出,这些假设在现实世界中可能并不成立。

  • Patient_ID -> {Theatre_ID, Surgery_Date}
  • 手术日期 -> 剧院 ID

  • Surgery_Record_ID---> Patient_ID

每行的 Surgery_Record_ID 都有一个不同的值,因此 Surgery_Record_ID 决定了每个属性。

  • 手术记录 ID -> {患者 ID、手术 ID、手术室 ID、手术日期}

  • Patient_ID---> Surgery_ID, Surgery_Record_ID, Theatre_ID

由于患者无法重访,并且患者只能进行一次手术,因此 Patient_ID 将是全球唯一的,就像 Surgery_Record_ID 一样。Patient_ID 将确定每个属性。

  • 患者 ID -> {surgery_Record_ID, Surgery_ID, theatre_ID, Surgery_Date}

  • 患者_ID、手术_ID--->剧院_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 决定了每个属性。

  • 手术日期 -> {患者 ID、手术 ID、手术室 ID、手术记录 ID}
于 2013-04-05T18:50:10.647 回答