我正在寻找电子商务网站的基本SQL图,我遇到了这个例子:http://addons.oscommerce.com/info/3853/page,23 .
有许多表具有复合主键,但它们似乎只有一个外键约束 .
这是主题中的一个表的捕获:
products_options_values_to_products_options
和 products_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图的片段:
1 回答
在我的评论的背景下;这在SQL Server中是完全可能的:
只要第一列,第三列上有唯一索引,那么它们一起可以用作FK .
在哪里使用这样的模式,我不确定 - 因为如果PK_One只能由一,三来定义,那么我不会认为两个应该在那个键中,但是......我没有给它很多想法,我确信可以想到一些事情 .
这也是您收到错误消息的原因:
请记住,主键和唯一索引不一样 .