将表规范化为3NF

时间:2016-10-26 02:09:20

标签: database database-normalization

我想确保理解表规范化的概念。我有以下示例表:

Visit#  VisitDate   Patient#   PatientBirth ProviderID  ProviderSpecialty

100000  2/15/2012   55555555    4/8/1990    862715      Nurse Practitioner
100022  2/17/2012   33333333    3/30/1998   382216      Physical Therapist
104278  2/21/2012   22222222    7/18/1972   232174      Family Medicine
103745  2/20/2012   11111111    12/22/2011  145690      Pediatrics
116238  2/23/2012   11111111    12/22/2011  145690      Pediatrics
112145  2/26/2012   66666666    8/6/1989    582361      Midwife

要将此表分解为3nf,我的建议是将其分解为3个表,其中包含以下属性分组:(访问#,VisitDate),(患者#,PatientBirth),(ProviderID,ProviderSpecialty) 我不确定的是我们在此之后将所有表格链接在一起。我最初的想法是将患者#作为每个表的主键,但我认为这违反了2nf的规则。任何指导将不胜感激!

1 个答案:

答案 0 :(得分:1)

打破表后的第一步是确定表之间的关系。在您的示例中,每次访问是针对一位患者和一位提供者。每个患者可能有一次或多次访问,并且(虽然未在示例中显示)可能有一个或多个提供者。每个提供者提供许多访问和许多患者。

使用这些关系,您可以将患者和提供者的主键放入访问表中。如果您特别需要患者和提供者之间的链接,则需要使用两者中的主键创建另一个表,但这对于此示例不是必需的。

edit:3nf通常不涉及指定外键,因为它们通常在表被规范化后指定。所以你提出的表格已经是3nf了。