我有一个包含A, B, C, D,
列和E
列的表格。
我想拆分表但保持表之间的关系。
是否有一种简单的方法可以将表ABCDE
分成2个表uABC
和uDE
并引入一个连接表中各行的唯一标识符?最终目标是建立一对多关系并删除重复数据。
答案 0 :(得分:0)
CREATE TABLE uABC
(
u [datatype],
A [datatype],
B [datatype],
C [datatype],
)
GO
CREATE TABLE uDE
(
u [datatype],
D [datatype],
E [datatype],
)
GO
INSERT INTO uABC (u, A, B, C)
SELECT u, A, B, C
FROM uABCDE
GO
INSERT INTO uDE(u,D,E)
SELECT u,D,E
FROM uABCDE
GO
答案 1 :(得分:0)
如果该表上已存在主键,则可以将主键放在两个表上。
如果A列是主键......那么
`Table1`
A, B, C
和
`Table2`
A, D, E
或者,您可以在表格上添加代理键以创建关系。
答案 2 :(得分:0)
假设ABC部分发生的重复次数最多:
CREATE TABLE ABC
(
id [int] PRIMARY KEY NOT NULL IDENTITY(1,1),
A [datatype],
B [datatype],
C [datatype],
)
GO
CREATE TABLE DE
(
id [int] PRIMARY KEY NOT NULL IDENTITY(1,1),
D [datatype],
E [datatype],
ABC_id [int] NOT NULL REFERENCES ABC(id)
)
GO
INSERT INTO ABC (A, B, C)
SELECT DISTINCT A, B, C
FROM ABCDE
GO
INSERT INTO DE(D,E,ABC_id)
SELECT DISTINCT D,E, ABC.id
FROM ABC
JOIN ABCDE
ON ABC.A = ABCDE.A
AND ABC.B = ABCDE.B
AND ABC.C = ABCDE.C
GO