这是3NF的数据库吗?

时间:2015-01-18 15:11:29

标签: mysql sql-server database

我有这个数据库与患者,我被问到它是否在3NF。乍一看,我以为是,但当我在Occupy桌上看起来更好时,我改变了主意。我将尽可能多地解释数据库。

Patient

enter image description here

病房,主键是(W_idH_id

enter image description here

决赛桌让我改变了对这个数据库规范化的看法。这张表说明了每位患者在特定日期进入哪家医院的病房。主键也是可疑的,它是所有列,甚至是输入日期。

enter image description here

这个数据库是这样给我的,包括这些表及其主键。

2 个答案:

答案 0 :(得分:1)

表格" ward"似乎不是在2NF。 W_id似乎确定了Wname。

在2NF中,不属于主键的每个属性不能仅由主键的一部分确定。它只能由整个主键确定。

不在2NF中的架构不能在3NF中。因此,此数据库架构不在3NF中。

答案 1 :(得分:1)

我参与过很多医疗保健应用程序,我会对架构进行以下更改。

病房表

向Wards Table添加Identity字段,将其设为主键,在H_ID和W_ID上创建唯一约束。

占据表

在占据表

使用Ward表中的Identity列作为参考键,显然是患者的P_ID。

日期时间列,用于记录入场或出院的日期时间。
另一列记录事件类型(入院,出院,出院到另一个病房等),引用Event_Types中的另一列

为Occupy表中的Event_Type列引用的事件类型Event_Types创建另一个表。

EventTypeID   EventTypeDescription
    1          Admission 
    2          Discharged 
    3          Discharged to Another Ward