我是否以正确的方式将此数据库规范化为 3NF 级别?

Have I normalized this database to a 3NF level the right way?

我最近在大学里有一个关于规范化数据库的讲座,但由于我们在线,我真的不能问很多问题,所以我来了。

谁能告诉我转换是否正确,如果不正确,我哪里弄错了?

任务:

我的解决方案:

UNF

# Patient Nos
  Patient Name
  Ward Nos
  Ward Name
  Bed Name
# Drug Number
  (Drug Name)
  (Description)
  (Dosage)
  (Method)
  (Units Given)
  (Start Date)
  (Finish Date)

1NF

# Patient Nos
  Patient Name
  Ward Nos
  Ward Name
  Bed Name

# Patient Nos
# Drug Number
  Drug Name
  Description
  Dosage
  Method
  Units Given
  Start Date
  Finish Date

2NF

# Patient Nos
  Patient Name
  Ward Nos
  Ward Name
  Bed Name

# Patient Nos
# Drug Number
  Drug Name
  Description
  
# Patient Nos  
  Dosage
  Method
  Units Given
  Start Date
  Finish Date

3NF

# Patient Nos
  Patient Name
  Ward Nos
  Ward Name
  Bed Name

# Patient Nos
# Drug Number
  Drug Name
  Description
  
# Patient Nos
# Drug Number
  Dosage
  Method
  Units Given

# Patient Nos
  Start Date
  Finish Date

让我们从病人开始。我们掌握的有关患者的唯一信息是他的电话号码和姓名。

Patient
_______
Patient Nos
Patient Name

接下来,我们有一个病房。根据报告,一个病房可以有多个病人,而一个病人在一个病房。我们用外键模拟一对多关系。

Patient
_______
Patient Nos
Patient Name
Ward Nos (FK)

Ward
----
Ward Nos
Ward Name

我们终于有床了。一个病房有多张床,一个病人只有一张床。由于我们对床的了解只是床号,我们将把它添加到患者 table 作为 table 的另一个外键,我们没有任何信息可以定义。

Patient
_______
Patient Nos
Patient Name
Ward Nos (FK)
Bed Nos (FK)

我们对药物了解多少?

Drug
----
Drug Nos
Drug Name
Drug Description

我们还知道什么?剂量是药物与患者之间的关系。因此,让我们进行第一次尝试。我假设开始和结束日期与药物有关,因为它与药物在同一行。

Dosage
------
Dosage Nos
Dosage Type
Dosage Method
Dosage Units Given
Dosage Start Date
Dosage End Date
Drug Nos (FK)
Patient Nos (FK)

现在,我们已将剂量与药物和患者联系起来。但是,我们并未将患者与剂量联系起来。一个患者可以有多个剂量,并且多个剂量可以属于一个患者。当我们有一个多对多的关系时,我们使用连接 table 将它们连接在一起。

PatientDosage
-------------
PatientDosage Nos
PatientDosage Units Given
PatientDosage Start Date
PatientDosage End Date
Patient Nos (FK)
Dosage Nos (FK)

我们将给定的单位、开始日期和结束日期移到了 PatientDosage 连接点 table,因为这些字段与患者和剂量有关。所以最终的剂量 table 看起来像这样。

Dosage
------
Dosage Nos
Dosage Type
Dosage Method
Drug Nos (FK)