首页 文章

SQL Server:复合键主键约束fk,无法理解SQL架构图

提问于
浏览
1

我正在寻找电子商务网站的基本SQL图,我遇到了这个例子:http://addons.oscommerce.com/info/3853/page,23 .

有许多表具有复合主键,但它们似乎只有一个外键约束 .

这是主题中的一个表的捕获:

products_options_values_to_products_optionsproducts_options_values
schema:http://sdrv.ms/1bIMx52(compositkey.jpg) .

我试图用 products_options_values_id 约束列 products_options_values_id

我正在使用SQL Server 2012,并且我试图用一个fk约束复合键,显然SQL Server Management Studio给了我一个错误,说明:

表'products_options_values(products)'中的列与现有主键或UNIQUE约束不匹配 .

要么

关系的两边必须具有相同的列数

我显然同意这两个陈述,但图中怎么可能出现约束?

我想复制整个数据库方案,但我想首先理解这一点 .

路德

编辑:正如Allan S. Hansen指出的那样,我已经在主键上应用了一个“唯一键”,尽管我知道,它仍然有效 .

这是mssql图的片段:
enter image description here

1 回答

  • 3

    在我的评论的背景下;这在SQL Server中是完全可能的:

    Composite FK without all composite PK

    只要第一列,第三列上有唯一索引,那么它们一起可以用作FK .

    在哪里使用这样的模式,我不确定 - 因为如果PK_One只能由一,三来定义,那么我不会认为两个应该在那个键中,但是......我没有给它很多想法,我确信可以想到一些事情 .

    这也是您收到错误消息的原因:

    表'products_options_values(products)'中的列与现有主键或UNIQUE约束不匹配 .

    请记住,主键和唯一索引不一样 .

相关问题