Heim > Datenbank > MySQL-Tutorial > Wie fügt man Daten mit korrekter Zuordnung effizient in übergeordnete und untergeordnete Tabellen ein?

Wie fügt man Daten mit korrekter Zuordnung effizient in übergeordnete und untergeordnete Tabellen ein?

DDD
Freigeben: 2025-01-14 19:26:45
Original
569 Leute haben es durchsucht

How to Efficiently Insert Data into Parent and Child Tables with Correct Mapping?

Daten in die Eltern-Kind-Tabelle einfügen

Das Ziel dieses Beispiels besteht darin, Daten aus einem eingehenden UDT (@tEmployeeData) in mehrere Tabellen einzufügen und so eine korrekte Zuordnung zwischen übergeordneten und untergeordneten Datensätzen sicherzustellen.

Mapping-Probleme lösen

Um die notwendige Zuordnung herzustellen, fügen wir dem UDT eine temporäre EmployeeId-Spalte hinzu und füllen sie mit kontinuierlichen Werten. Zusätzlich erstellen wir eine Tabellenvariable (@EmployeeidMap), um die temporäre Mitarbeiter-ID im UDT der tatsächlich in der Zieltabelle generierten Mitarbeiter-ID zuzuordnen.

Füllen Sie die Haupttabelle aus

Wir verwenden MERGE, um die @MainEmployee-Tabelle mit Werten aus den eingefügten Daten und Quelldaten zu füllen. Dadurch können wir den generierten EmployeeID-Wert erfassen und gleichzeitig die Zuordnungstabelle füllen.

<code class="language-sql">MERGE INTO @MainEmployee USING @tEmployeeData AS sourceData ON 1 = 0
WHEN NOT MATCHED THEN
INSERT (FirstName, LastName)
VALUES (sourceData.FirstName, sourceData.LastName)
OUTPUT sourceData.EmployeeId, inserted.EmployeeID 
INTO @EmployeeidMap (temp_id, id);</code>
Nach dem Login kopieren

Zuordnen und in Eltern-Kind-Tabellen einfügen

Wir verbinden dann @tEmployeeData mit @EmployeeidMap, um die tatsächliche Mitarbeiter-ID zu erhalten, die wir zum Füllen der @ParentEmployeeDepartment-Tabelle verwenden. In ähnlicher Weise verbinden wir @ParentEmployeeDepartment mit @tEmployeeData, um die Eltern-ID den untergeordneten Daten zuzuordnen und die Daten in @ChildEmployeeDepartmentTypeA und @ChildEmployeeDepartmentTypeB einzufügen.

Testeinlage

Um zu überprüfen, ob das Mapping erfolgreich war, führen wir eine Abfrage aus, die die UDT-Daten mit den Mapping- und Zieltabellen verknüpft.

<code class="language-sql">SELECT FirstName,
     LastName,
     SentData.DepartmentType As [部门类型],
     DepartmentBuilding As 建筑物,
     DepartmentEmployeeLevel As [员工级别],
     DepartmentTypeAMetadata As [A 元数据],
     DepartmentTypeBMetadata As [B 元数据],
     SentData.EmployeeId As 临时ID, EmpMap.id As [员工ID], DeptMap.ParentEmployeeDepartmentID As [部门ID]
FROM @tEmployeeData SentData
INNER JOIN @EmployeeidMap EmpMap ON SentData.EmployeeId = temp_id 
INNER JOIN @ParentEmployeeDepartment DeptMap ON EmpMap.id = DeptMap.EmployeeID</code>
Nach dem Login kopieren

Dieser Ansatz stellt sicher, dass untergeordnete Daten korrekt dem jeweiligen übergeordneten Datensatz zugeordnet werden, und optimiert gleichzeitig die Leistung, indem unnötige zeilenweise Vorgänge vermieden werden.

Das obige ist der detaillierte Inhalt vonWie fügt man Daten mit korrekter Zuordnung effizient in übergeordnete und untergeordnete Tabellen ein?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage