您好我是SQL的新手,我正在使用Microsoft SQL Server
我希望制作一个将两个表(A和B)链接在一起的数据透视表。然而,链接旨在是动态的。这意味着将经常创建和删除从A到B的链接。
A和B之间的关系是一对多(一个A可以有很多B')
我想使用群集主键,但似乎无法创建一个,因为A链接的类型是varchar(max),而B的链接是int。
在Microsoft SQL Server Management Studio中,我通常会在设计窗口中选择这两列,并使它们成为主键。但是该选项显示为灰色。
是否有办法让不同类型的许多不同列成为群集主键,或者我是否以错误的方式处理此问题?
答案 0 :(得分:2)
不,不可能。 PRIMARY意味着FIRST,MAIN - 只能有一个。
您可以拥有无限数量(实际上)的唯一indix,但只有一个可以成为主键,只有一个(不一定是同一个)可以成为聚簇索引。
现在,在外键关系中使用varchar(max) - 这是你应该修复的核心问题。 SOmeone真的f * * *数据库设计史诗。我们可以讨论在密钥中一般使用varchar,但varchar(max)用于休眠文本存储,不能是任何索引的一部分(在关系中不能使用的全文索引之外)。我建议先修复它。