首页 > 解决方案 > 我是否以正确的方式将此数据库标准化为 3NF 级别?

问题描述

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

有人可以告诉我我是否正确地进行了转换,如果不是,我在哪里弄错了?

任务:

任务

我的解决方案:

联合国基金会

# 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

标签: sqldatabasedatabase-designdatabase-normalization3nf

解决方案


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

Patient
_______
Patient Nos
Patient Name

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

Patient
_______
Patient Nos
Patient Name
Ward Nos (FK)

Ward
----
Ward Nos
Ward Name

最后,我们有一张床。一个病房有多张床位,而一个病人只有一张床位。由于我们只知道一张床的床号,我们将把它作为另一个外键添加到病人表中,我们没有任何信息要定义。

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)

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

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

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

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

推荐阅读