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

Sql 我是否以正确的方式将该数据库规范化为3NF级别?,sql,database,database-design,database-normalization,3nf,Sql,Database,Database Design,Database Normalization,3nf,我最近在大学里有一个关于数据库规范化的讲座,但由于我们在线,我不能问很多问题,所以我来了 有人能告诉我,如果我做的转换是正确的,如果没有,我错在哪里了 任务: 我的解决方案: UNF #患者编号 患者姓名 病房号 病房名称 床名 #药号 (药物名称) (说明) (剂量) (方法) (已提供单位) (开始日期) (完成日期) 1NF #患者编号 患者姓名 病房号 病房名称 床名 #病人人数 #药号 药名 描述 剂量 方法 给定的单位 开始日期 完成日期 2NF #患者编号 患者姓名 病房号

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

有人能告诉我,如果我做的转换是正确的,如果没有,我错在哪里了

任务:

我的解决方案: UNF
#患者编号
患者姓名
病房号
病房名称
床名
#药号
(药物名称)
(说明)
(剂量)
(方法)
(已提供单位)
(开始日期)
(完成日期)
1NF
#患者编号
患者姓名
病房号
病房名称
床名
#病人人数
#药号
药名
描述
剂量
方法
给定的单位
开始日期
完成日期
2NF
#患者编号
患者姓名
病房号
病房名称
床名
#病人人数
#药号
药名
描述
#病人人数
剂量
方法
给定的单位
开始日期
完成日期
3NF
#患者编号
患者姓名
病房号
病房名称
床名
#病人人数
#药号
药名
描述
#病人人数
#药号
剂量
方法
给定的单位
#病人人数
开始日期
完成日期

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

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)
我们将给定的单位、开始日期和结束日期移动到PatientDage连接表,因为这些字段与患者和剂量有关。最后的剂量表是这样的

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

嗯,您缺少外键,而且就表名而言,不清楚您使用的是什么。它是一组没有主键和外键的列名。在SQLDDL中创建表,即创建表dbo.TableName。。。然后可以更新代码。现在它只是一个图片租赁。仅将图像用于不能表示为文本或扩充文本的内容。包括一个图例/图例和带有图像的说明。Re“这对吗”:按照参考资料/教科书显示您的工作步骤,有理由——并不是所有的术语/符号都是标准的&我们不知道你遵循的是什么算法/方法&我们想检查你的工作,但不想重做&我们需要你在流程允许的情况下做出选择&否则我们无法告诉你哪里是对的或错的&我们不想重写你的教科书。请看,点击谷歌的“stackexchange家庭作业”和鼠标文本上方的投票箭头。如果你不确定这是对的,问一个具体的问题你在哪里卡住了。