使用SSMS将表从3NF修改为BCNF及其依赖性的步骤是什么?

时间:2016-10-27 09:28:27

标签: sql-server ssms

我有三张桌子,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实现我想要的最快方式是什么?

我的想法如下:

  1. 从引用T1的T2中删除外键约束。

  2. 从T1中删除主键约束。

  3. 将标识整数ID列添加到T1并使其成为主键

  4. 向T2添加一列并将其作为T1的外键。

  5. 我担心以下情况:在步骤3时,由于存在数据,脚本可能会失败。如果是这种情况,那么我将不得不创建临时表,导出数据,从两个表中删除所有内容,修改架构并重新导入。我在这些表中有真实的数据,因此我的问题。

1 个答案:

答案 0 :(得分:0)

正确答案似乎如下:

  • 从T2
  • 中删除foreign key
  • 从T1
  • 中删除primary key
  • column添加到T1 primary key和身份
  • 向T2添加column,其类型与上一步中描述的新column相同
  • 制作T2 column的新foreign key并将其编入索引