1
我有幾個表,用於減少自然鍵到代理鍵。試圖插入親子關係鬆散的記錄
CREATE TABLE Mapping.RelatedData
(
Id INT IDENTITY NOT NULL PRIMARY KEY,
DataSetId INT NOT NULL REFERENCES DataSet (Id),
DataTypeId INT NOT NULL REFERENCES DataType (Id)
)
CREATE TABLE Mapping.RelatedDataForA
(
RelatedDataId INT NOT NULL REFERENCES Mapping.RelatedData (Id),
NatrualColumn1 INT NOT NULL,
NatrualColumn2 INT NOT NULL
)
CREATE TABLE Mapping.RelatedDataForB
(
RelatedDataId INT NOT NULL REFERENCES Mapping.RelatedData (Id),
NatrualColumn3 INT NOT NULL,
NatrualColumn4 INT NOT NULL
)
-- Several other tables for C, D, E, etc..
這樣我可以有單獨的表
CREATE TABLE HeaderFormattedData
(
Id INT IDENTITY NOT NULL PRIMARY KEY,
RelatedDataId INT NOT NULL REFERENCES Mapping.RelatedData (Id)
DataKey INT NOT NULL
-- Other columns
)
CREATE TABLE LinesFormattedData
(
Id INT IDENTITY NOT NULL PRIMARY KEY,
RelatedDataId INT NOT NULL REFERENCES Mapping.RelatedData (Id),
DataKey VARCHAR(50) NOT NULL,
LineId INT NOT NULL
-- Other columns
)
這不得不RelatedData
統一的關係。否則,我需要爲每個RelatedData
表格分別設置一個Header/Line表。這些數據最終會彙總到一個表格中,並且具有單獨的RelatedData
表格意味着具有強關係的單列或沒有關係的單列。
我正在使用SSIS插入我的數據,並且此表格方案導致RBAR(通過激動行的行)方法插入父項,然後插入子項。我可以創建一個視圖並使用一個而不是觸發器來簡化它,但是有沒有更好的方法來插入記錄,或者這是一個糟糕的表設計的症狀?