0

我有一个名为“字典”的表,其列如下:

  • ID 大整数
  • 类型 varchar (200)
  • 项目 varchar (200)

表被各种表用作简单的字典/查找。
例如,它存储国家、标题、业务类型列表。

TYPE列保存关于字典类型的信息,ITEM是字典字符串值。

一切正常,但我在建立字典和外国表之间的关系时遇到问题。
当我使用“外键关系”时,我不能让它依赖于“类型”列。

(请注意具有相同类型的相同项目 - 例如,“国家”可以链接到多个表格,而其他类型的项目可以链接到不同的表)

目前我正在使用 USP 来管理它,但我想切换到标准关系机制。
任何建议如何获得?

4

3 回答 3

3

在我看来,您可以考虑另一种设计

Dictionary table
ID (pk)
DICTIONARY_TYPE_ID (fk to dictionaryType) 
ITEM

DictionaryType table
ID (pk)
DESCRIPTION

然后在您当前想要从原始设计中引用类型字段的位置创建指向DictionaryType表ID的链接

于 2009-06-30T10:03:03.057 回答
0

从问题的上下文来看,我猜你需要做两件事之一:

  • 使您Type的列成为主键
  • 或者让外键取决于ID这里的字段。

外键需要引用主键,看起来你的Type列不是PK。

于 2009-06-30T09:53:51.767 回答
0

您在这里拥有的是一个 EAV 数据库设计,由于多种原因,这是您的问题。没有真正意义上的解决方案。您可以尝试使用 sql_variant 作为项目的列类型,并尝试在其上建立 PK-FK 关系。

还有另一种方法,您可以尝试使用我在此处描述的 xml 数据类型和模式来执行此操作。但是,您必须对此进行测试以查看它是否适用于您的问题。

于 2009-06-30T09:55:58.953 回答