• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung

xml - Darstellung mehrerer "Tabellen"?

vero

Fuji
Registriert
23.03.10
Beiträge
37
Hallo!
Ich möchte mir mit php eine Art Liste programmieren, die es mir ermöglicht meine DVDs im Überblick zu behalten, also zB wann gekauft/geschenkt bekommen, meine persönliche Bewertung, Sprachen, ... usw
Die Daten möchte ich über ein xml File verwalten, da sich eine Datenbank sicher nicht auszahlt.
Meine Frage ist jetzt:
Kann ich es realisieren, wie in einem Datenbank Modell m:n Beziehungen aufzubauen? Ich möchte mir nämlich auch die bekannteren Schauspieler pro Film speichern, manche kommen aber mehrmals vor und spielen auch in mehreren Filmen.
Mit einer Datenbank hätte ich kein Problem das darzustellen (mit allen Normalformen erfüllt) und ich kann mir auch einfache Sachen mit xml machen, aber da scheiterts.
Oder scheitert auch xml dran? Bleibt mir dann nix anderes über als:
Bsp:
<movie>
<title>blubb</title>
<year>2000</year>
<actor>a</actor>
<actor>b</actor>
...
</movie>

Ich würds mir so vorstellen ein xml File zu erstellen, wo einfach alle actors gespeichert sind und die dann via ID reinzuholen...
oder bin ich zu Datenbankverwöhnt und das geht gar nicht?

Danke für Antworten + evtl. ein Link zu einer Erklärung, google hat nicht das ausgespuckt was ich gesucht habe ;)

lg
 

wdominik

Weißer Winterglockenapfel
Registriert
15.01.10
Beiträge
880
XML ist ein „rohes“ Format, dass Du eigentlich nach Deinen Bedürfnissen zurecht biegen kannst. Es weiß zunächst nichts von Beziehungen etc. wie es für ein RDBMS üblich ist. Es hindert dich aber nicht z. B. eine Beziehung zu erstellen:
Code:
<myMovieDB>
  <movies>
    <movie id="1">
      <title>Terminator</title>
      <year>1984</year>
      <actor id="1" as="The Terminator" />
    </movie>
  </movies>
  <actors>
    <actor id="1">
      <name>Arnold Schwarzenegger</name>
      <dateOfBirth>1947-06-30</dateOfBirth>
    </actor>
  </actors>
</myMovieDB>

Dann definierst du in einem XML Shema (XSD) in welcher Beziehung die einzelnen Elemente/IDs zueinander stehen. In deinem Programm musst Du natürlich das dann entsprechend Implementieren, also dass es für jeden Schauspieler den Namen etc. aus der anderen Tabelle heraussucht.
 

karolherbst

Danziger Kant
Registriert
11.05.07
Beiträge
3.878
Code:
<myMovieDB>
  <movies>
    <movie id="1">
      <title>Terminator</title>
      <year>1984</year>
      <actor id="1" as="The Terminator" />
    </movie>
  </movies>
  <actors>
    <actor id="1">
      <name>Arnold Schwarzenegger</name>
      <dateOfBirth>1947-06-30</dateOfBirth>
    </actor>
  </actors>
</myMovieDB>

leider fliegt dieses XML durch jeden Validator durch, da id ein globales Attribut ist und jede Belegung nur einmal vorkommen darf! Heißt, dieses XML ist falsch.

Richtig wäre:

Code:
<myMovieDB>
  <movies>
    <movie>
      <id>1</id>
      <title>Terminator</title>
      <year>1984</year>
      <actor ref="1" as="The Terminator" />
    </movie>
  </movies>
  <actors>
    <actor>
      <id>1</id>
      <name>Arnold Schwarzenegger</name>
      <dateOfBirth>1947-06-30</dateOfBirth>
    </actor>
  </actors>
</myMovieDB>