数据库设计1对1的关系

时间:2010-05-07 04:41:43

标签: sql-server database-design

我的数据库设计不正确,我应该在开发过程中修复它吗?

  
    

“user”表假设与“userprofile”表

具有1.1关系          

但是“user”表的实际设计与“userprofile”表有1. *的关系。

  

一切正常!但是它应该固定吗?

5 个答案:

答案 0 :(得分:3)

做一件事

User Table 
   Userid(p)
   UserName
   othercol..

UserProfile 
   id(p)
   UserId(f) - and unique
   othercol..

希望通过这种方式你可以轻松修复isse

答案 1 :(得分:2)

使user_profile表中的user_id唯一且固定。

答案 2 :(得分:2)

如果它是1:1关系,并且您经常将“user”表和“userprofile”中的记录一起带回来,那么您可以考虑将它们合并到一个表中。

答案 3 :(得分:1)

是的,使用FK字段上的唯一索引修复此问题。您现在需要修复它的原因是,如果未使用不允许您不需要的行为的控件正确设置数据库,则无法控制人们在一段时间内插入数据的严重程度。

第一次将重复记录插入子表时,可能会破坏大量代码。没有唯一索引,插入第二条记录的可能性非常高。你可以说,你将在应用程序级别控制它,但这是一个糟糕的选择,因为不能保证其他应用程序,批量插入等不会发生绕过应用程序。在数据库设计中尽快将事情放在正确的位置至关重要。当数据库中有大量记录时,很难修复糟糕的设计。

答案 4 :(得分:0)

@pranay

User Table 
   Userid(p)
   UserName
   othercol..

UserProfile 
   id(p)
   UserId(f) - and unique
   othercol..

这通常是你怎么做的(上图)?或者你这样做(下面)?

User Table 
   Userid(p)
   UserName
   othercol..

UserProfile 
   id(p) <--- userid
   othercol..