我有一个列出了汽车的所有不同品牌/型号的表:唯一约束,其中列名不匹配
Make, Model, Year
每一行都是独一无二的,像“雪佛兰Camaro 1969年”
然后我有一个列出“模型组”的表格,像1967-1969年的Camaros那样经常组合在一起的汽车。所以:
Make, Model, StartYear, EndYear, GroupName
我增加了一个独特的contraint为“化妆模型StartYear”和“化妆模型EndYear”。
我想添加一个外键映射开始一年回模型表,基本上执行本:
Chevrolet, Camaro, 1967, 1969, FirstGenerationCamaro
-> Chevrolet, Camaro, 1967 should exist in the Model table
-> Chevrolet, Camaro, 1969 should exist in the Model table
当我试图做到这一点(在SQL Management Studio中)我创建一个外键映射:
Group.Make -> Model.Make, Group.Model -> Model.Model, Group.StartYear -> Model.StartYear
Group.Make -> Model.Make, Group.Model -> Model.Model, Group.EndYear -> Model.EndYear
在英语中,组行,上面写着“1967-1969雪佛兰Camaro”应该执行,有两个“1967年雪佛兰Camaro”和“1969年雪佛兰Camaro”的典范项目。
我遇到的问题是错误“列与主键或现有UNIQUE约束不匹配”。但是对于“Make-Model-StartYear”和“Make-Model-EndYear”,我确实有着无法克服的限制。
也许我正在以这种错误的方式进行讨论,但我如何确保实际上有一个针对组的开始年和结束年的模型条目?
谢谢, 戴夫
PS:SQL2008 R2
不应该是Model.Year在右侧? – Griffin 2012-03-16 05:26:01
我想格里芬在你的外键映射中询问'Model.StartYear'和'Model.EndYear'条目,即它们*不应该都是'Model.Year'(如果你对这个问题感到困惑) 。 – 2012-03-16 07:03:45
请注意,您缺少序列键,例如'(雪佛兰,Camaro,1968年,1970年,OopsOverlappingCamaro)'' – onedaywhen 2012-03-16 08:56:41