-2

我在 SQL Server 中有一个原始数据表。我将创建规范化表,其中一些具有字符串值的列将替换为从查找表中获取的标识。

例如,原始表中的雇主名称列具有字符串数据类型。我需要用雇主查找表中的标识值(整数)替换它,但我需要添加可能的新雇主名称以首先从原始数据表中查找表。

4

1 回答 1

0

因此,如果您已经有一个带有字符串列的临时表,那么您需要对事物进行规范化。首先添加一个 FK(外键)列,填充它,然后删除旧的字符串列。像这样的东西:

--Your starting point
CREATE TABLE tmp(EmployerName varchar(100))
CREATE TABLE Employee([EmployerID] [int] IDENTITY(1,1) NOT NULL, [Employer Name] [nvarchar](max) NULL)

--Add a foreign key field to your tmp table
ALTER TABLE tmp add EmployerID int

--Update your new foreign key
UPDATE tmp set EmployerID=e.EmployerID
FROM
    tmp
    inner join Employee e on e.[Employer Name] = tmp.EmployerName

--Finally, remove your old denormalized string column 
--and just use the EmployeeID field going forward.
ALTER TABLE tmp drop column EmployerName
于 2013-09-12T05:11:04.940 回答