sql - 我是否以正确的方式将此数据库标准化为 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
解决方案
让我们从病人开始。我们拥有的关于患者的唯一信息是他的号码和姓名。
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)
推荐阅读
- excel - 用 Matlab 保存 Excel 数据
- javascript - 一个脚本加载多个 html 文件
- c# - 如何在 Windows 窗体中使用 XPO
- android - Try 块抛出异常,但 catch 块没有捕获它
- notepad++ - 如何在记事本++中添加昏迷
- python - for循环序列中所有数字的总和
- vue.js - Vuex 和 Storybook:无法在未定义、null 或原始值上设置反应属性:未定义
- xaml - 如何删除框架 Xamarin 表单之间的空白
- python - 如何使用 pandas 将 xml 转换为 dataFrame
- python - 列表引用