我正常化吗?

时间:2013-12-08 19:51:14

标签: sql normalization database-normalization

我只是想看看我是否正确地根据以下FD

规范我的表格

enter image description here

以下是我在2NF和3NF之后提出的表格。

Table 1 - (__Client ID__,CLient Name, VetID)
Table 2 - (__Client ID__,__Pet ID__, Pet Name, Pet wt)
Table 3 - (__Vet ID__, Vet Name)

如果我的错误,可以通过解释来理解正确的结构。谢谢!

跟进:规范化可以导致不同的表结构吗?(取决于你的方式)

编辑:我应该标记作业(不能)。基本上我试图找出为什么我的解决方案与此处http://tinypic.com/r/2nqtv7b/5

中发布的解决方案不同

2 个答案:

答案 0 :(得分:0)

我没有在客户关系(表1)中看到VetID属于此表。这是因为,VetID不依赖于ClientID - 我不确定你为什么说有部分依赖?

在Table2(宠物表)中,您有2个PK选项,PetID或PetID + ClientID。我们没有关于PetID及其生成方式的信息,因此假定组合密钥(更安全)。但是,组合键不是您在实际应用中的首选。

这里似乎缺少的是架构的目的。我想这可能是兽医诊所的模式。我希望您能记录客户和他/她的宠物的每次访问。在这种情况下,您需要有一个访问关系(表4)。

答案 1 :(得分:0)

我会做这样的事情

  

仅客户详细信息
  表1 - (客户端ID ,客户名称,其他客户端列)

     

仅宠物详情
表2 - (宠物ID ,宠物名称_其他宠物专栏)

     

只有兽医细节
表3 - (兽医ID ,兽医名称,其他兽医专栏)

     

哪些客户有哪些宠物和哪些兽医去哪里?表4 - ( ID ,兽医   ID,客户ID,宠物ID)