【发布时间】:2014-01-27 20:52:37
【问题描述】:
我有一个名为 Communications 的表,其中包含用户的联系电话。这可以是家庭、手机或传真号码。我将它们全部存储在一个表中并使用类型列识别它们。 (0 = 家庭,1 = 手机,2 = 传真)。 Communications 表有一个外键 UserId,它映射到我的 Users 表以显示 User 到 Number 的关系。我想有一个约束,以便每个用户最多只能拥有每种类型的数字中的一种。对此进行建模的最佳方法是什么?
我在 SQL Server Manager Studio 2008 中使用数据库图,如果可能的话,我想要一个 GUI 式的答案,而不是 SQL 查询。
【问题讨论】:
-
我不认为数据库图表有任何方式允许您单击并拖动来创建某种类型的约束。它们旨在显示一般的表集及其关系,而不是数据模型的每个方面。无论如何,听起来你的关系是倒退的——如果用户只能有一种通信类型,为什么用户表没有通信表类型列的外键?
-
@AaronBertrand 我的意思是用户可以拥有每种类型中的一种。所以一个用户最多可以有1部家庭电话、1部手机、1部传真;但不是 2 部家庭电话、5 部手机、10 部传真。它们也可能有 0。另一方面,我将如何使用 SSMS 中的 SQL 查询对这样的约束进行建模?
标签: sql sql-server database-design relational-database constraints