帮助查找数据库候选键,主键

时间:2012-11-26 02:28:55

标签: sql database

我正在努力研究这个模型,并找出以下有关它的问题:

  1. PATIENT_VISIT的候选键是什么?

  2. 如果有多个候选键,请从候选键中选择一个主键。

  3. 根据选择的主键,PATIENT_VISIT中存在哪些正常形式违规?

  4. 开发一种消除正常形式违规的解决方案 您的解决方案是无损连接分解吗?

  5. 您的解决方案是否依赖于保留?如果没有,依赖性保存如何 实现?这是BCNF的修订解决方案吗?

  6. 提供满足以下所有三个条件的解决方案:(1)在BCNF中,(2)是依赖性保留,(3)是无损连接分解

    +---------+------------+------------+
    | Patient |  Hospital  |   Doctor   |
    +---------+------------+------------+
    | Smith   | Methodist  | D. Cooley  |
    | Lee     | St. Luke's | Z. Zhang   |
    | Marks   | Methodist  | D. Cooley  |
    | Marks   | St. Luke's | W. Lowe    |
    | Lou     | Hermann R. | Duke       |
    +---------+------------+------------+
    
  7. 此外,假设存在以下语义规则。

    • 每位患者可能是多家医院的病人。
    • 对于每家医院,患者可能只有一名医生。
    • 每家医院都有几位医生。
    • 每位医生只使用一家医院。
    • 每位医生在一家医院治疗几名患者。

1 个答案:

答案 0 :(得分:1)

  1. {Patient,Doctor}是候选键。唯一的另一个可能的关键是{患者,医院,医生},但由于FD医生⟶医院,这并不是最小的;它是一个超级钥匙,但不是候选钥匙。

  2. 摸拟;只有一个候选键。

  3. 由于传递依赖(FD)医生⟶医院,模式不在BCNF中。 (表的每个属性在功能上由键,整个键以及除键之外的任何键确定。)

  4. PD {Patient,Doctor},DH {Doctor,Hospital}。这是无损分解。

  5. 此解决方案是依赖性保留。

  6. 见4.