0

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

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

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

那么我的表结构对吗?它的意思是3nf。

4

2 回答 2

0

不它不是。

appointments和之间存在传递依赖patients。考虑这个更新异常:

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

如果患者和客户是一对一的,则将患者 ID 存储在客户表中并通过连接引用它。

如果它们是一对多的,则将客户 ID 存储在每个患者的患者表上。

于 2015-04-18T20:16:10.800 回答
0

让我用简单的话解释一下,

第三范式的条件:

- 它是第二范式

- 没有传递函数依赖

在这种关系中,考虑

约会ID为A

患者 ID 为 B

customer_id 为 C

在你的关系中,A->B

B->C 和 A->C

因此,存在传递函数依赖。

所以,它不在3NF中。

希望能帮助到你。

于 2015-05-09T11:56:47.627 回答