这张桌子在3NF吗?

时间:2015-04-18 19:11:42

标签: mysql database 3nf

我为兽医诊所创建了一个数据库。

我有一个名为约会的表,这就是它所包含的内容。

appointment_id, patient_id, customer_id, staff_id, date_time
  • 每个客户(所有者)都有一名患者(宠物)。
  • 由一名员工预约。

我的桌面结构是对的吗?这意味着3nf。

2 个答案:

答案 0 :(得分:0)

不,不是。

appointmentspatients之间存在传递依赖关系。请考虑此更新异常:

UPDATE appointments 
SET appointments.patient_id = 42
WHERE appointments.appointment_id = 1;
/* hey that's not my dog! 
 */

如果患者和客户是一对一的,请将患者ID存储在客户的桌面上并通过联接参考。

如果他们是一对多,请将患者ID存储在患者病床上。

答案 1 :(得分:0)

让我用简单的话来解释,

第三范式的条件:

  

- 它处于第二范式

     

- 没有传递函数依赖

在这种关系中,请考虑

  

appointment_id为A

     

patient_id为B

     

customer_id为C

在你的关系中, A->乙

B-&以及c 和A-> C

因此,存在传递性功能依赖性。

所以,它不在 3NF

希望,这有帮助。