XML Support in MS SQL 2005 Express

05/10/2007 - 14:46 von Jan Reimes | Report spam
Hallo zusammen,

ich bin gerade dabei, eine Datenbank einer alten Messsoftware zu re-
designen. Grundsàtzlich làsst sich alles schön in einer relationalen
DB beschreiben. In der GUI soll jedoch für jedes Projekt eine
rekursive Baumstruktur (eine Art Ordnerstruktur) verwendet werden,
welche mit relationalen Datenbanken relativ schwer zu beschreiben ist.
Prinzipiell gibt es zwei Elemente:
A - ein abschliessendes Objekt, welches keine Children mehr besitzt
B - eine Art Ordner, der widerum beliebig viele A's und B's als
Children in beliebiger Reihenfolge enthalten kann

Es liegt nahe, diese Struktur für jedes Projekt als XML abzuspeichern,
es ist nur fraglich ob das überhaupt lohnens-/empfehlenswert ist?
Ich habe sogar schon ein (gültiges) XSD dazu erstellt und dieses als
Schema in MSSQL2005 Express importieren können. Habe mir dann eine
Testtabelle mit einer Spalte des Typs XML erstellt und ein paar
"Testbàume" dort abgespeichert.

Sinn der Sache soll sein, dass man mit möglichst wenig Befehlen (oder
gar Schleifen) innerhalb dieses Baums navigieren kann, also Ausgabe
von Parents zu einem Child, alle Children zu einem Parent, finden
eines Elements usw...
Aus der MSDN-Hilfe werde ich allerdings nicht so besonders schlau, was
die Verknüpfung von XML-Funktionen (z.B. xmlspalte.value(...)) in SQL-
Befehlen angeht, gibt es dazu irgendwo vernünftige Anleitungen zur
Einarbeitung? Oder suche ich nur nach den falschen Begriffen?

Gruß,
Jan
 

Lesen sie die antworten

#1 Berthold Neumann
05/10/2007 - 15:10 | Warnen spam
Hallo Jan,

ich kàme auf Anhieb nicht auf den Gedanken diese Aufgabenstellung mittels
XML zu lösen.

Aber Du hast die für mich entscheidenden Stichworte ja selbst genannt:
Parent und Child.
Lege die Daten doch 'einfach' in einer Parent-Child-Relationstabelle ab:

Objekt-ID-Parent
Objekt-ID-Child

Für einfache Abfragen (alle Childs zu einem Parent und alle Parents zu
einem Child) reichen einfachste SQL-Statements aus.
Für komplexere Abfragen wird meist etwas rekursive Programmierung benötigt.

In der Relationstabelle speicherst Du nur die ID's. Diese verweisen auf
eine Stammdatendatentabelle ohne etwas Ähnlichem.

Ich verwende diese Logik für Artikelstückliste mit beliebiger
Stücklistentiefe.

Die Frage der GUI-Programmierung ist dann noch eine ganz andere, zumal Du
die Entwicklungsumgebung nicht genannt hast.
Aber für .Net gibt es entsprechende Steuerelemente um Baumstrukturen
darzustellen.


Gruß

Berthold



Am 05.10.2007, 14:46 Uhr, schrieb Jan Reimes :

Hallo zusammen,

ich bin gerade dabei, eine Datenbank einer alten Messsoftware zu re-
designen. Grundsàtzlich làsst sich alles schön in einer relationalen
DB beschreiben. In der GUI soll jedoch für jedes Projekt eine
rekursive Baumstruktur (eine Art Ordnerstruktur) verwendet werden,
welche mit relationalen Datenbanken relativ schwer zu beschreiben ist.
Prinzipiell gibt es zwei Elemente:
A - ein abschliessendes Objekt, welches keine Children mehr besitzt
B - eine Art Ordner, der widerum beliebig viele A's und B's als
Children in beliebiger Reihenfolge enthalten kann

Es liegt nahe, diese Struktur für jedes Projekt als XML abzuspeichern,
es ist nur fraglich ob das überhaupt lohnens-/empfehlenswert ist?
Ich habe sogar schon ein (gültiges) XSD dazu erstellt und dieses als
Schema in MSSQL2005 Express importieren können. Habe mir dann eine
Testtabelle mit einer Spalte des Typs XML erstellt und ein paar
"Testbàume" dort abgespeichert.

Sinn der Sache soll sein, dass man mit möglichst wenig Befehlen (oder
gar Schleifen) innerhalb dieses Baums navigieren kann, also Ausgabe
von Parents zu einem Child, alle Children zu einem Parent, finden
eines Elements usw...
Aus der MSDN-Hilfe werde ich allerdings nicht so besonders schlau, was
die Verknüpfung von XML-Funktionen (z.B. xmlspalte.value(...)) in SQL-
Befehlen angeht, gibt es dazu irgendwo vernünftige Anleitungen zur
Einarbeitung? Oder suche ich nur nach den falschen Begriffen?

Gruß,
Jan






Berthold Neumann
http://www.sql-ssis.de
Ich unterstütze PASS Deutschland e.V. (http://www.sqlpass.de)

Ähnliche fragen