将下表从1NF更改为2NF

时间:2014-01-20 04:44:52

标签: sql database relational-database normalization

我一直在这里浏览网上的视频和示例。有人可以请帮忙看看并指出我在哪个部分是对还是错。我想将下表改为2NF。谢谢。

Clinic      Address      Therapist  TherapistTel    Appointment         Client    ClientTel
Clinic A    123 High St  J Smith    77882233        25/01/2013 11:00    A Jones   32512
Clinic A    123 High St  P Taylor   77235846        25/01/2013 13:00    I Davis   34251
Clinic B    80 Low St    B Morris   77991487        25/01/2013 10:30    H Kelly   53692
Clinic C    3 Middle St  J Smith    77882233        26/01/2013 14:00    Y Rimmer  68595
Clinic B    80 Low St    J Smith    77882233        26/01/2013 09:30    H Kelly   53692
Clinic A    123 High St  B Morris   77991487        25/01/2013 14:00    J Steele  36529

我的2NF表格如下:

诊所

**Clinic**      Address      **Therapist**
Clinic A    123 High St  J Smith
Clinic B    80 Low St    P Taylor
Clinic C    3 Middle St  B Morris

治疗师

**Therapist**   TherapistTel
J Smith     77882233
P Taylor    77235846
B Morris    77991487

客户端

**Client**    ClientTel
A Jones   32512
I Davis   34251
H Kelly   53692
Y Rimmer  68595
J Steele  36529

预约

**Therapist**      **Client**   Appointment
J Smith        A Jones  25/01/2013 11:00
P Taylor       I Davis  25/01/2013 13:00
B Morris       H Kelly  25/01/2013 10:30
J Smith        Y Rimmer 26/01/2013 14:00
J Smith        H Kelly  26/01/2013 09:30
B Morris       J Steele 25/01/2013 14:00

1 个答案:

答案 0 :(得分:0)

正如2014年1月的评论所述:

  

您的诊所表有许多问题,最值得注意的是P Taylor与诊所B完全无关。您需要一张桌子来连接诊所和治疗师。你的约会表也有问题;患者和治疗师都不知道您的模式中要去哪个诊所,而原始确实告诉他们去哪里。

     

一般来说,每个诊所都有不止一个治疗师。此外,给定的治疗师在不止一个诊所工作。因此,您需要一个诊所列表,一个治疗师列表,以及一个识别每对诊所+治疗师的清单。在预约时,治疗师J Smith可以在三个诊所中的任何一个; A Jones如何从约会表中知道J Smith的任命是在诊所A,而不是B或C?你错过了那些关键信息。您需要约会表中的日期,时间,治疗师,客户和诊所。

客户端和治疗师表很好。 Clinic表应仅包含Clinic和Address列。您的约会表需要4列:

  • 诊所
  • 治疗师
  • 客户端
  • 预约(日期和时间)

您可能需要或可能不需要另一张桌子Therapist_Clinic,它可以指定哪个治疗师可以在每个诊所服务。对于给定的数据,它可能包含:

Therapist_Clinic

Clinic      Therapist
--------    ---------
Clinic A    J Smith
Clinic A    P Taylor
Clinic B    B Morris
Clinic C    J Smith
Clinic B    J Smith
Clinic A    B Morris

另一方面,如果每个记录的治疗师都可以在任何一个诊所工作,那么这个表就是多余的。