Hallo,
[2] Das sagt mir aber, dass du deine Personen _nicht_ in <Bestellung> verwaltest, d.h. dass die Liste der möglichen Personen woanderes steht und du in <Bestellung> auf diese Liste referenzieren willst: d.h. du hast
- eine Liste der Personen, in der du sicherstellst, dass keine zwei Personen dieselbe PersonID haben (kannst mit unique oder key machen)
- eine Liste der Bestellungen, in der du sicherstellen willst, dass die Person die die Bestellung aufgegeben hat, tatsächlich eine Person aus der Liste der Personen ist (machst du mit keyref) und weil du bereits in der Liste der Personen die Eindeutigkeitsbeschränkung definiert hast, kannst du eben aus Bestellung/Person darauf referenzieren.
Genau so ist es und so möchte ich es umsetzen.
Kann ein keyref auch auf ein Attribut zeigen oder ist mit dieser XPath-Angabe gleich beides gemeint?
Nain. Ein <selector> darf nicht auf ein Attrubut zeigen, das darf nur ein <field>.
Ja, das ist mir klar. Ich möchte statt eines Elements <Person></Person> unter Bestellung, ein Attribut in Bestellung <Bestellung Person="1"></Bestellung> haben. Und mit diesem Attribut soll der Schlüssel in <Person PersonID="1"></Person> gemeint sein.
Ich möchte doch nur wie in meinen Datenbanken sagen: Person hat einen eindeutigen Schlüssel PersonID, der in Bestellung als Fremdschlüssel auftaucht, um referenzieren zu können, wer die Bestellung denn überhaupt ausgelöst hat.
Da sind wir wieder ganz bei [2] und somit müssen in deinem XML 1) und 2) vorhanden sein.
Genau!
Gruß,
Kerstin