【问题标题】:Have I normalized this database to a 3NF level the right way? [closed]我是否以正确的方式将此数据库标准化为 3NF 级别? [关闭]
【发布时间】:2021-01-24 19:09:13
【问题描述】:

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

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

任务:

我的解决方案:

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

【问题讨论】:

  • 嗯,您缺少外键,并且不清楚您使用的表名是什么。它是一组没有主键和外键的列名。在 SQL DDL 中创建表,即创建表 dbo.TableName... 然后可以更新代码。现在只是一张图片
  • use text, not images/links, for text--including tables & ERDs。仅将图像用于无法表达为文本或增强文本的内容。在图片中包含图例/键和说明。
  • Re“这是对的”:根据您的参考/教科书显示您的工作步骤,并说明理由 - 并非所有术语/符号都是标准的,我们不确切知道您使用什么算法/方法正在关注,我们想检查你的工作,但不重做,当流程允许时,我们需要你的选择,否则我们无法告诉你哪里是对还是错,我们不想重写你的教科书。请参阅How to Ask,点击谷歌搜索“stackexchange 作业”和投票箭头鼠标悬停文本。如果您不确定它是否正确,请针对您卡在哪里提出 1 个经过研究的特定非重复问题。

标签: sql database database-design database-normalization 3nf


【解决方案1】:

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

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)

【讨论】:

    猜你喜欢
    • 2015-06-15
    • 2021-09-25
    • 1970-01-01
    • 2014-04-05
    • 2015-09-28
    • 2013-02-16
    • 2011-06-18
    • 1970-01-01
    • 2019-08-06
    相关资源
    最近更新 更多