这个数据库在 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
我有这个患者数据库,有人问我它是否在 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