繁体   English   中英

将表标准化为3NF

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM