这个数据库在 3NF 中吗?

Is this database in 3NF?

我有这个患者数据库,有人问我它是否在 3NF 中。乍一看,我以为是,但是当我仔细看 Occupy table 时,我改变了主意。我将尽可能多地解释数据库。

向,主键为(W_id,H_id)

最后的 table 让我改变了对这个数据库规范化的想法。这个 tables 表示每个患者在特定日期何时进入哪个医院的哪个病房。主键也很可疑,是所有的列,甚至是输入日期。

这个数据库是这样给我的,有这些 table 和它们的主键。

table "ward" 的架构似乎不在 2NF 中。 W_id 似乎确定了 Wname。

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

不在 2NF 中的模式不能在 3NF 中。因此这个数据库模式不在 3NF 中。

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

选区Table

向 Wards Table 添加一个身份字段,使其成为主键,在 H_ID 和 W_ID 上创建唯一约束。

占Table

占领中table

使用 Ward table 的身份列作为参考键,显然 P_ID 用于患者。

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

中的另一列

为占领 table 中 Event_Type 列引用的事件类型 Event_Types 创建另一个 table。

EventTypeID   EventTypeDescription
    1          Admission 
    2          Discharged 
    3          Discharged to Another Ward