【发布时间】:2017-07-12 09:25:46
【问题描述】:
所以我有一个表,其中有一个名为parentKey 的列。并且该列实际上具有许多其他表(至少 4 个)的键(根据定义是外键)。甚至创建这样的专栏对我来说似乎很奇怪。我还没有看到有这个表的结构。因为您无法添加外键约束,因为该列未链接到单个表。所以我不知道这是否允许存在。我的意思是它在那里被创建,但我不确定我是否应该让它这样。
我的想法是为每个可能的表创建一个列,并将其正确命名为:MyTable1Key、MyTable2Key,并让它们成为外键。但这样做的问题是,如果分配了一个外键,那么其他外键将为空(并且永远不会被分配,因此它将始终保持为空)。
那么我是否必须让这个 parentKey 列保持原样,还是应该将它拆分为通过外键链接到表的不同列,以便某些列具有空值?
【问题讨论】:
-
“所以我必须让这个 parentKey 列像现在这样吗...” 不。“...我应该将它拆分到链接到的不同列吗?外键的表,因此某些列的值为空?” 不,您几乎肯定想要along these lines。但是您的问题中没有足够的细节来确定。
-
@MikeSherrill'CatRecall' 不,其他人似乎每次都引用一张表。就像引用汽车类型的列一样。 CarType 在一张桌子内。在我的表中,该列引用其他表而不是单个表中的单个列。就像 TableA 中的 columnA 引用 tableB 中的 columnB 但它也可以是对 tableC 中的 columnC 的引用或对 tableD 中的 columnD 的引用,但始终只有 1key 到另一个表的一列。键是始终一个表的外键。我绝对从未见过这样的事情。通常一列引用一个表,不多。
-
@MikeSherrill'CatRecall' 做这样的事情对我来说看起来很奇怪,但我没有足够的经验,所以也许这是一件很常见的事情。据我所知,我将分离这一列,并为当前列所引用的每个表都有一个外键列。但这意味着如果我在其中一列中有一个键,其余的将为空。
-
编辑您的问题,并包含带有实际表名的代码。 (或接近实际表名的名称。)包括
create table和insert into语句。 -
@MikeSherrill'CatRecall' 但它与数据库设计有关。没有代码
标签: sql-server database-design