我有一个现有的 SQL Server 数据库,其中的客户表包含以下列:
Customers: CustomerId (PK), A, B, C, D, E, F
最后三列代表邮政地址;我想将这些地址列提取到一个单独的地址表中,由 FK 链接,并同时迁移数据。所以我最终得到:
Customers: CustomerId (PK), A, B, C, AddressId (FK)
Addresses: AddressId (PK), D, E, F
Address 最终也会被许多其他表引用,因此它需要自己独立的 AddressId,由数据库生成 - 它不能与 Customer 共享相同的 Id。地址也不能包含对客户的 FK - 架构必须如图所示。
我对 SQL 不是很流利。在 SQL 中创建新的 Addresses 表,复制数据,然后从客户中删除冗余列没有任何困难。但我不知道如何将数据库生成的 AddressId 作为 FK 返回到 Customer。我是否需要使用某种程序方法,例如使用游标 - 或者有什么方法可以在一个声明性 SQL 查询中完成整个迁移?谢谢。
(注意,我希望最终能够在 Code First 迁移中做到这一点。)