我有三张桌子,T1,T2和T3。 T1具有三维主键(T1K1,T1K2,T1K3)。 T3具有(T3K1)的一维主键。在T1和T3之间存在由T2表示的n:m关系。 T2具有(T2K1)的一维主键。 T2通过T2(T2T3K1)通过(T2T1K1,T2T1K2,T2T1K3)和参考T3(T3K1)引用T1(T1K1,T1K2,T1K3)。我想修改T1到BCNF,所以我想添加一个单列主键并修改(T1K1,T1K2,T1K3)不是主键。由于T2有T1的主键,我需要先从那里删除外键约束。 T1,T2,T3已有记录。
我的问题是:SSMS实现我想要的最快方式是什么?
我的想法如下:
从引用T1的T2中删除外键约束。
从T1中删除主键约束。
将标识整数ID列添加到T1并使其成为主键
向T2添加一列并将其作为T1的外键。
我担心以下情况:在步骤3时,由于存在数据,脚本可能会失败。如果是这种情况,那么我将不得不创建临时表,导出数据,从两个表中删除所有内容,修改架构并重新导入。我在这些表中有真实的数据,因此我的问题。
答案 0 :(得分:0)
正确答案似乎如下:
foreign key
primary key
column
添加到T1 primary key
和身份column
,其类型与上一步中描述的新column
相同column
的新foreign key
并将其编入索引