【发布时间】:2017-10-31 12:47:41
【问题描述】:
我在 T-SQL 中有一个大的、未规范化的表。想象一下它有以下结构:
tbl_Item:
ItemID
ItemName
ItemGroup
Price
这样的数据:
1 - ItemA - GroupA - $9.99
2 - ItemB - GroupA - $9.99
3 - ItemC - GroupA - $9.99
4 - ItemX - GroupB - $4.00
5 - ItemY - GroupB - $4.00
我想将其标准化为两个全新的表:
tbl_Item:
ItemID
ItemName
FK_Group
和:
tbl_Group:
GroupID
GroupName
Price
我遇到的问题是从初始表中获取 ItemGroup 数据并将其替换为新表的相应 GroupID。我将通过运行填充 tbl_Group 表:
SELECT DISTINCT ItemGroup FROM tbl_Item
...并将所有值插入 tbl_Group,从而给它们一个 ID 号。
我能看到的唯一方法是编写一个循环遍历 tbl_Item 的脚本,根据新的 tbl_Group 表查询 ItemGroup 列,并将 ID 插入到新的 item 表的 FK_Group 列中。
有没有更好的方法来做到这一点?
【问题讨论】:
-
这种转换不是“规范化”,它用连接回它的投影来替换表。
标签: sql sql-server database tsql database-normalization