[英]Normalizing a table to 3NF
我想确保我了解表规范化的概念。 我有下面的示例表:
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个表,并具有以下属性分组:(Visit#,VisitDate),(Patient#,PatientBirth),(ProviderID,ProviderSpecialty)我不确定之后,我们要做的是将所有表链接在一起。 我最初的想法是将病人编号作为每个表的主键,但是我认为这违反了2nf的规则。 任何指导将不胜感激!
在按表细分后的第一步是确定表之间的关系。 在您的示例中,每次访问针对一名患者和一名提供者。 每个患者都有一个或多个访问,并且可能(但未在示例中显示)可能有一个或多个提供者。 每个提供者都提供许多访问和许多患者。
使用这些关系,您可以将患者和提供者的主键都放入“访问”表中。 如果您特别需要在患者和提供者之间建立链接,则需要使用来自两者的主键来创建另一个表,但是对于本示例而言并非必需。
编辑:3nf通常不涉及外键的指定,因为通常在对表进行标准化之后再指定外键。 因此,您想出的表已经在3nf中了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.