最近在学数据库原理,有一章的习题后面又一个问题
关于数据库设计的,
有两个表:
PET_OWNER (OwnerID, Name, Phone, Email) 主键为OwnerID
PET (PetID, Name, Type, Breed, DOB, OwnerID) 主键为PetID
其中PET表中的OwnerID列是外键,在PET_OWNER表中的OwnerID列存在对应项现在我的问题是:
有另外一个版本的PET表: PET_2 (Name, Type, Breed, DOB, OwnerID),其中Name与OwnerID为复合主键问这两个版本的PET表(PET和PET_2)哪个设计的更好,说明的的理由? 

解决方案 »

  1.   

    另外,就是从业务维护的角度来说,每个表都有独立性,便于维护。而第二种方式,name列在两个表中均出现,维护起来会消耗更多的成本。
      

  2.   

    PET設計的好 結構清析,便於維護
      

  3.   

    好与不好看实际应用.不过从你的这个例来看,至少少了PetID貌似不恰当.所以我的观点是第一种比第二种好.
      

  4.   

    不过从数据库设计的角度来讲 第一种加个PETID  如果这个ID是自增列的话就很不错因为我们在程序处理的时候很多时候要处理这个你直接select @@identity就得到了行值而且用PETID作为主键可以在索引查找的时候开销比NAME要小 
      

  5.   

    看具体的业务需求,如果要保证PET表中,同一OwnerID下的name 不能有重复,不是同一OwnerID下就可以重复,加入是这个需求的话,还是要第二种没有好与不好,只有合不合适,合不合适看需求,明确需求后,才能再符合需求的同时寻求最佳解