【发布时间】:2013-09-08 08:36:57
【问题描述】:
我的数据库设计不正确,我应该在开发过程中解决这个问题吗?
“user”表假设与“userprofile”表有1.1的关系
然而,“user”表的实际设计与“userprofile”表具有 1.* 关系。
一切正常!但无论如何都应该修复它吗?
【问题讨论】:
-
是的,你可以......主键和外键适应得很好,然后它就可以工作了。
标签: sql-server database-design
我的数据库设计不正确,我应该在开发过程中解决这个问题吗?
“user”表假设与“userprofile”表有1.1的关系
然而,“user”表的实际设计与“userprofile”表具有 1.* 关系。
一切正常!但无论如何都应该修复它吗?
【问题讨论】:
标签: sql-server database-design
做一件事
User Table
Userid(p)
UserName
othercol..
UserProfile
id(p)
UserId(f) - and unique
othercol..
希望这样你可以轻松解决问题
【讨论】:
使 user_profile 表中的 user_id 唯一且固定。
【讨论】:
如果是 1:1 关系,并且您经常将“user”表和“userprofile”中的记录一起带回,那么您可以考虑将它们合并到一个表中。
【讨论】:
是的,使用 FK 字段上的唯一索引来解决此问题。您现在需要修复它的原因是,当使用不允许您不想要的行为的控件正确设置数据库时,您无法控制人们随着时间的推移插入数据的严重程度。
第一次将重复记录插入子表时,可能会破坏很多代码。如果没有唯一索引,插入第二条记录的机会可能会非常高。您可以说,您将在应用程序级别对此进行控制,但这通常是一个糟糕的选择,因为无法保证不会发生绕过该应用程序的其他应用程序、批量插入等。在数据库设计中尽快把事情做好是至关重要的。当数据库中有很多记录时,修复糟糕的设计变得非常困难。
【讨论】:
@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..
【讨论】: