使用 SSMS 将 table 从 3NF 修改为 BCNF 及其依赖项的步骤是什么?
What are the steps to modify a table from 3NF to BCNF along with its dependency using SSMS?
我有三个表,T1、T2 和 T3。 T1有(T1K1,T1K2,T1K3)的三维主键。 T3 有一个一维主键 (T3K1)。 T1 和 T3 之间存在一个 n:m 关系,由 T2 表示。 T2 有一个一维主键 (T2K1)。 T2 通过(T2T1K1、T2T1K2、T2T1K3)引用 T1(T1K1、T1K2、T1K3),通过 T2(T2T3K1)引用 T3(T3K1)。我想修改T1为BCNF,所以我想给它添加一个单列主键并修改(T1K1,T1K2,T1K3)为无主键。由于 T2 有 T1 的主键,我需要先从那里删除外键约束。 T1、T2、T3已有记录
我的问题是:用 SSMS 实现我想要的最快的方法是什么?
我的思路如下:
从引用 T1 的 T2 中删除外键约束。
从 T1 中删除主键约束。
向T1添加一个标识整数ID列并使其成为主键
向 T2 添加一列并使其成为 T1 的外键。
我担心以下情况:在第 3 步时,脚本可能会因为存在数据而失败。如果是这种情况,那么我将不得不创建临时表、导出数据、从两个表中删除所有内容、修改架构并重新导入。我在这些表中有真实数据,因此我的问题。
正确答案如下:
- 从 T2
中删除 foreign key
- 从 T1
中删除 primary key
- 将
column
添加到 T1 作为 primary key
和身份
- 将
column
添加到 T2,其类型与上一步中描述的新 column
相同
- 制作T2
foreign key
的新column
并索引
我有三个表,T1、T2 和 T3。 T1有(T1K1,T1K2,T1K3)的三维主键。 T3 有一个一维主键 (T3K1)。 T1 和 T3 之间存在一个 n:m 关系,由 T2 表示。 T2 有一个一维主键 (T2K1)。 T2 通过(T2T1K1、T2T1K2、T2T1K3)引用 T1(T1K1、T1K2、T1K3),通过 T2(T2T3K1)引用 T3(T3K1)。我想修改T1为BCNF,所以我想给它添加一个单列主键并修改(T1K1,T1K2,T1K3)为无主键。由于 T2 有 T1 的主键,我需要先从那里删除外键约束。 T1、T2、T3已有记录
我的问题是:用 SSMS 实现我想要的最快的方法是什么?
我的思路如下:
从引用 T1 的 T2 中删除外键约束。
从 T1 中删除主键约束。
向T1添加一个标识整数ID列并使其成为主键
向 T2 添加一列并使其成为 T1 的外键。
我担心以下情况:在第 3 步时,脚本可能会因为存在数据而失败。如果是这种情况,那么我将不得不创建临时表、导出数据、从两个表中删除所有内容、修改架构并重新导入。我在这些表中有真实数据,因此我的问题。
正确答案如下:
- 从 T2 中删除
- 从 T1 中删除
- 将
column
添加到 T1 作为primary key
和身份 - 将
column
添加到 T2,其类型与上一步中描述的新column
相同 - 制作T2
foreign key
的新column
并索引
foreign key
primary key