Hallo Lude,
genau das ist es; es ist eine gute alte relationale Datenhaltung, die ich in Teilen testweise auf XML-Datenhaltung umstellen will. - Ist das eine Idee?
Eine schlechte Idee. XML eignet sich wenig für relationale Modelle.
Na zum Beispiel hast Du eine Vertragstabelle, die eine '1:n' Bezeihung zu einer Mietertabelle hat; dann noch jeweils eine '1:n'-Beziehung zu einer Tabelle Vertragsarten, zu einer Tabelle 'Waehrungen'; eine 'n:m'-Beziehung zu einer Tabelle 'Rel_Gegenstaende_Vertraege' usw. usw.(in diesem Datenmodell-Beispiel produktiv vielleicht 20 Tabellen)
In dem Fall ist XML die Denkbar schlechteste Möglichkeit, das abzubilden. Gehen wir das mal an:
Wir fangen bei den Verträgen an. Wir konstruieren also folgende XML-Datei:
<vertraege>
<vertrag>
<!-- hier kommt der Inhalt -->
</vertrag>
<vertrag>
<!-- hier kommt der Inhalt -->
</vertrag>
</vertraege>
Was nimmt man da am besten als Inhalt? Die Mieter.
<vertraege>
<vertrag>
<mieter>
<name>Schmidt</name>
</mieter>
<mieter>
<name>Meier</name>
</mieter>
</vertrag>
<vertrag>
<mieter>
<name>Müller</name>
</mieter>
<mieter>
<name>Bäcker</name>
</mieter>
</vertrag>
</vertraege>
So - jetzt kommen wir schon zum Problem: wir müssen die Vertragsart unterbekommen. Mal angenommen beide Verträge sind vom Typ »Standard« - dann würden sich 2 Mögliche Strukturen anbieten:
<vertraege>
<vertrag>
<vertragsart>
<vatyp>Standard</vatyp>
<!-- Infos zur Vertragsart -->
</vertragsart>
<mieter>
<name>Schmidt</name>
</mieter>
<mieter>
<name>Meier</name>
</mieter>
</vertrag>
<vertrag>
<vertragsart>
<vatyp>Standard</vatyp>
<!-- Infos zur Vertragsart -->
</vertragsart>
<mieter>
<name>Müller</name>
</mieter>
<mieter>
<name>Bäcker</name>
</mieter>
</vertrag>
</vertraege>
oder
<vertraege>
<vertragsart>
<vatyp>Standard</vatyp>
<!-- Infos zur Vertragsart -->
</vertragsart>
<vertrag art="Standard">
<mieter>
<name>Schmidt</name>
</mieter>
<mieter>
<name>Meier</name>
</mieter>
</vertrag>
<vertrag art="Standard">
<mieter>
<name>Müller</name>
</mieter>
<mieter>
<name>Bäcker</name>
</mieter>
</vertrag>
</vertraege>
Und Du siehst: es ergeben sich einfach konzeptionelle Probleme. Eine m:n-Beziehung wirst Du warscheinlich gar nicht gut hinbekommen - und wenn doch, dann total unelegant.
Natürlich, Du könntest das ganze auch so organisieren:
tabelle1.xml:
<vertragsarten>
<vertragsart>
<art>Standard</art>
<!-- Infos -->
</vertragsart>
<!-- ... -->
</vertragsarten>
tabelle2.xml:
<mmieter>
<mieter>
<name>Meier</name>
</mieter>
<mieter>
<name>Müller</name>
</mieter>
<!-- ... -->
</mmieter>
tabelle3.xml:
<vertraege>
<vertrag>
<mieter>Meier</mieter>
<mieter>Müller</mieter>
<art>Standard</art>
</vertrag>
</vertraege>
Merkst Du hier aber was? Du machst nichts anderes als eine relationale Datenbank auf XML-Basis zu konstruieren. Da kannst Du gleich bei einer »richtigen« relationalen Datenbank bleiben, die wesentlich komfortabler und performanter ist als das.
Ein relationales Datenbankmodell lässt sich eben nicht einfach in XML abbilden - und XML ist ein Allheilmittel. XML eignet sich für solche Arten von Strukturen eindeutig nicht.
Anmerkung: die Beispiele hier mögen vielleicht noch übersichtlich aussehen, aber überlege Dir mal, was passiert, wenn Du wirklich _alle_ Relationen zwischen den einzelnen Tabellen abbildest...
Christian
Ich bitte darum, dass ein Themenbereich (BARRIEREFREIHEIT) eingerichtet wird.