我想确保理解表规范化的概念。我有以下示例表:
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的规则。任何指导将不胜感激!
答案 0 :(得分:1)
打破表后的第一步是确定表之间的关系。在您的示例中,每次访问是针对一位患者和一位提供者。每个患者可能有一次或多次访问,并且(虽然未在示例中显示)可能有一个或多个提供者。每个提供者提供许多访问和许多患者。
使用这些关系,您可以将患者和提供者的主键放入访问表中。如果您特别需要患者和提供者之间的链接,则需要使用两者中的主键创建另一个表,但这对于此示例不是必需的。
edit:3nf通常不涉及指定外键,因为它们通常在表被规范化后指定。所以你提出的表格已经是3nf了。