Twitter Feed

Xataface Maillist

Sign up to receive the Xataface news letter with weekly updates and development tips.

 
Found 1 of 138 records in table Wiki
Now Showing 1 of 1

Current Record: tutorial.relationships.de

Tutorial: Beziehungen

[Permalink]

German Translation of Getting Started: Relationships Status: started/begonnen

German Umlauts: Ã¤Ã¶Ã¼Ã„Ã–ÃśÃź

Beziehungen (Relationen)

In Xataface werden Beziehungen zwischen Tabellen in der Datei relationships.ini definiert.

In unserer Beispielsanwendung FacultyOfWidgetry haben wir implizit eine Beziehung zwischen der Kurs- und der Programm-Tabelle definiert, indem ein Feld der Kurs-Tabelle seine Werte aus der Programm-Tabelle bezieht. Dies wurde durch die Definition der Auswahlliste, die auf die Programm-Tabelle verweist, erreicht.

Die umgekehrte Beziehung, von der Programm-Tabelle zur Kurs-Tabelle, ist ein wenig komplizierter, da in der Programm-Tabelle entsprechende Felder fehlen, die bearbeitet werden könnten, um etwa einen Kurs auszuwählen und diesen einem Programm hinzuzufügen. Was wir wollen, ist eine Auswahlmöglichkeit "Kurs hinzufügen", um einen Kurs zu einem 'Programm' hinzufügen zu können.

Konzepte, Definitionen und Terminologien

Bevor wir zum praktischen Beispiel übergehen, zunächst noch ein wenig Konzepte und Terminologie: Xataface Beziehungen werden immer einseitig aus der Sicht einer Tabelle definiert. Wenn eine 1:n-Beziehung aus der Programm-Tabelle zur Kurs-Tabelle definiert ist, wird die umgekehrte n:1-Beziehung von der Kurs- auf die Programm-Tabelle nicht automatisch erstellt. Auf diese Weise gibt es in jeder Beziehungsedefinition eine eindeutige Quell-und Zieltabelle.

Definition 1: Die Quelltabelle einer Beziehung ist die Tabelle, in der eine Beziehung definiert ist. Wenn wir eine Beziehung mit dem Namen 'Kurse' in der Programm-Tabelle definieren, dann ist die Programm-Tabelle die Quelltabelle der Beziehung, und die Kurs-Tabelle wäre die Zieltabelle.

Definition 2: Die Zieltabelle einer Beziehung ist diejenige Tabelle, aus der bestimmte verknüpfte Datensätze bezogen werden.
Es können mehrere Zieltabellen in einer bestimmten Beziehung definiert sein, aber nur eine Quelltabelle. In diesem Fall wird eine dieser Tabellen als "Domänentabelle" bezeichnet und die restlichen Zieltabellen als "Join-Tabellen".

Definition 3: Eine Domänentabelle ist eine Zieltabelle, die das Objekt der Beziehung enthält. Wenn wir eine n:m-Beziehung zwischen der Programm-Tabelle und der Kurs-Tabelle definieren, (d.h., jedes Programm kann mehrere Kurse enthalten und jeder Kurs kann Teil mehrerer Programme sein), dann würden brauchen wir eine Join-Tabelle, welche die Kurs-Datensätze auf die Programm-Datensätze abbildet. Nennen wir diese Tabelle ProgrammKurse. Sie muss ein Programm-Feld (als Referenz auf die Programm-Tabellel) und ein Feld KursID (welches auf einen Kurs verweist) enthalten: Jeder Datensatz der ProgrammKurs-Tabelle enthält also 2 Felder. Aus der Sicht der Programm-Tabelle ist somit die Programm-Tabelle die Quelltabelle, die ProgrammKurs-Tabelle die Join-Tabelle , und die Kurs-Tabelle die Domänentabelle sein.

Keine Sorge, wenn Ihnen diese Definitionen und Begriffe im Moment noch etwas unklar sind. Sie können diesen Abschnitt jederzeit zum Nachschlagen verwenden, wenn Ihnen die Begriffe später im Tutorial begegnen.

Definieren einer Beziehung

Um eine Beziehung in Xataface zu definieren, müssen Sie Xataface nur sagen, wie es die verknüpften Datensätze mit SQL finden soll. Xataface ist dann automatisch in der Lage, herauszufinden, wie man Datensätze hinzufügt oder löscht. Diese Informationen werden in der Datei "relationships.ini" im Konfigurationsverzeichnis der jeweiligen Tabelle definiert.

Beispiel 1 : Hinzufügen einer Relation "Kurse" in der Programm-Tabelle

Wir wollen mehrere Kurse mit jedem Programm verknüpfen können. Wir tun dies durch folgende Definition der Beziehung in der Programm-Tabelle:

  1. Erstellen Sie eine Datei "relationships.ini" im Konfigurationordner der Programm-Tabelle (also tables/Program/relationships.ini). Die Verzeichnisstruktur Ihrer Anwendung sollte jetzt so aussehen:
    http://xataface.com/documentation/tutorial/getting_started/directory-structure-relationships.gif
    (Beachten Sie die neu hinzugefügte Datei "relationships.ini" im Verzeichnis "Program")
  2. Schreiben Sie folgende Anweisungen in die Datei "relationships.ini":
        [Courses]
        Course.ProgramID = "$ProgramID"

    Dieser kleine Code-Abschnitt definiert eine Beziehung mit dem Namen "Kurse" (Courses) in der Programm-Tabelle. "Programm" ist dabei die Quelltabelle, "Kurs" (Course) die Zieltabelle. Es gibt keine Join-Tabellen, denn dies ist nur eine 1:n-Beziehung. Sie wundern sich vielleicht , was das "$ProgramID" bedeutet. Dies ist eine Variable, die den Wert des Feldes "ProgramID" im Quelldatensatz darstellt. Diese Beziehung definiert, dass die Kurse, deren Feld "ProgramID" dem Wert des Feldes "ProgramID" der Quelldatei entsprechen, mit dem entsprechenden Quelldatensatz verknüpft sind. Die sprachliche Beschreibung lässt diese Beziehungen schwieriger und komplexer erscheinen, als sie sind.

  • up: polished - below: raw google translation

Lassen Sie uns unsere Änderungen . Da wir die Beziehung auf dem "Programm" Tabelle definiert ist, werden wir uns auf 'Programm ' Link klicken in der Navigation :

Beachten Sie , dass es jetzt ein " Kurs" -Reiter am oberen Rand der Seite. Klicken Sie auf diesen Reiter, um die Kurse , die zu diesem Programm ( wie von unseren ' Kurse ' Beziehung definiert ) in Zusammenhang stehen sehen . Wenn sie sagt , dass " keine Aufzeichnungen entsprach dem Wunsch " oder etwas in diesem Sinne , dann sind Sie nicht in der Beziehung haben noch keine Lehrsätzenoch . Klicken Sie einfach auf die "Neue Kurse Record" -Button in der oberen linken Ecke , um einen Kurs hinzufügen. Wenn es Kurse in der Beziehung, dann auf die Registerkarte Kurse werden etwa so aussehen:

Derzeit gibt es nur einen Kurs im Programm , aber wir können mehr hinzuzufügen. Wenn Sie auf den "Neue Kurse "-Button in der oberen linken Ecke klicken, werden Sie mit einem neuen Kursform , die Ihnen erlauben , einen neuen Kurs in diesem Programm hinzufügen, vorgestellt werden. Beispiel 2: Making the ' Kurse ' Beziehung eine Viele -zu- Viele -Beziehung

Beispiel 1 zeigt, wie Xataface kann eine Eins-zu -viele-Beziehung behandeln. Jetzt werden wir die Datenbank ein wenig zu verändern und drehen diese in eine viele-zu -viele-Beziehung .

Fügen Sie eine Tabelle mit dem Namen ' ProgramCourses ' auf die Datenbank. Die SQL- Tabellendefinition für diese Tabelle sollte so etwas wie:

    CREATE TABLE ` ProgramCourses ` (
        ` ProgramID ` INT ( 11 ) NOT NULL ,
        ` CourseID ` INT ( 11 ) NOT NULL ,
        PRIMARY KEY ( ` ProgramID `, ` ` CourseID )
    )
Beachten Sie, dass es wichtig ist, alle Ihre Tabellen Primärschlüssel haben . Wenn eine Tabelle seiner Primärschlüssel fehlt , können einige seltsame Verhalten mit Beziehungen, in denen die Tabelle auftreten .

Die oben definierte Tabelle wird als Join-Tabelle zwischen " Programm " und " Course" dienen

Da dies nun zu eine Viele-zu -viele-Beziehung sein , das Feld " Programm- " brauchen wir nicht mehr in der " Course" -Tabelle. ( Nicht zu verwechseln mit dem Feld in der Programm- 'Programm' Tisch. Das Feld ist wichtig und notwendig. ) . Bevor Sie dieses Feld , werden wir die Informationen über , so dass die bestehenden Beziehungen aufrechterhalten werden übertragen. Das folgende SQL-Abfrage wird effektiv alle alten Eins-zu- viele Beziehungen in äquivalente viele-zu -viele-Beziehungen :

    INSERT INTO ProgramCourses ( Programm- , CourseID )
        SELECT Programm- , CourseID
        VON Platz
Und jetzt können wir das Feld " Programm- " von der " Course" -Tabelle zu entfernen .

    ALTER TABLE DROP Programm- Kurs
SchlieÃźlich müssen wir die Beziehung Definition in der Datei des relationships.ini 'Programm' Tabelle ändern :

    [ Kurse ]
    Course.CourseID = ProgramCourses.CourseID
    ProgramCourses.ProgramID = "$ ProgramID "
Dies bedeutet, dass alle Kurse , für die ein ( Programm- , CourseID ) Paar die CourseID des Kurses und der Programm des QuellprogrammBilanz Spiele sind in der Beziehung enthalten.

Jetzt können wir unsere Anwendung auf Änderungen zu überprüfen . Gehen Sie auf die "Programm" -Tabelle in der Anwendung ( mit Ihrem Web- Browser) und klicken Sie auf die Registerkarte " Kurse " noch einmal:

Dies sieht fast die gleiche wie zuvor. Beachten Sie jedoch , dass jetzt gibt es eine "Add Existing Kurse Record" -Taste an der Oberseite. Das ist, weil mit einer Viele-zu -viele-Beziehung , in der Lage zu verwandten Datensätze in zwei Arten hinzufügen sind Sie:

        Hinzufügen eines völlig neuen Datensatz, der es vorher nicht gab .
        Auswahl eines Datensatzes , die bereits existiert und ihn an der Beziehung.
Beispiel 3 : Definieren von Beziehungen mit SQL

Die vorherigen Beispiele verwendet eine einfache Syntax INI-Datei , um Beziehungen zu definieren. Allerdings können manche Menschen mehr Komfort definieren, ihre Beziehungen mit SQL . Dies ist auch möglich . Schauen wir uns die relationships.ini Datei aus Beispiel 1:

[ Kurse ] Course.ProgramID = "$ ProgramID "

Dies könnte auch wie folgt festgelegt:

[ Kurse ] __sql__ = "SELECT * FROM WHERE Programm- Kurs = '$ Programm- ' "

Hinweis: Stellen Sie sicher, dass Sie zwei Unterstriche auf beiden Seiten der 'SQL' im obigen Beispiel zu verwenden. Es sollte ' __sql__ ' nicht ' _sql_ "werden.

Die beiden Schreibweisen sind gleichwertig. In der Tat wird die erstere in die später von Xataface im Hintergrund konvertiert werden.

Jetzt schauen wir uns das Beispiel 2 relationships.ini Datei :

[ Kurse ] Course.CourseID = ProgramCourses.CourseID ProgramCourses.ProgramID = "$ ProgramID "

Dies könnte so geschrieben worden sein

[ Kurse ] __sql__ = "SELECT * FROM ProgramCourses , Kurs WHERE Course.CourseID = ProgramCourses.CourseID UND ProgramCourses.ProgramID = '$ Programm- ' "

Die beiden sind äquivalent. Dieses Beispiel zeigt jedoch, wie eine Beziehung unter Verwendung von SQL von Vorteil sein kann . Die obige SQL-Abfrage funktioniert , aber es kann besser mit Joins wie folgt geschehen :

[ Kurse ] __sql__ = "SELECT * FROM ProgramCourses pc INNER JOIN -Kurs c = ON pc.CourseID c.CourseID WHERE pc.ProgramID = '$ Programm- ' "

Alle diese drei Methoden die gleichen Ergebnisse zu produzieren, aber die letzte wird wohl bessere Leistung ein wenig. Beziehungs Einschränkungen

Xataface hat eine eingebaute Logik, um herauszufinden, wie man neue und bestehende Datensätze , die Beziehungen , die Sie definieren , so lange wie Sie Ihre Beziehungen zu gehorchen ein paar Richtlinien hinzufügen.

Alle Tabellen müssen einen Primärschlüssel haben

Die WHERE -Klausel der SQL-Definition für die Beziehung darf nur '=' Vergleiche und "UND" Konjunktionen enthalten . dh es ist keine 'ODER' Verbindung empfangen kann , noch können Vergleiche mit '>' erfolgen oder '<' . Dies liegt daran, gegeben 'UND' und '=' Konjunktionen ist es einfach für Xataface , um Datensätze, die die Beziehung gerecht wird hinzuzufügen. Wenn ein ' OR' Verbindung verwendet wird, macht es nicht eindeutig (auch wenn dies wahrscheinlich in Zukunft Xataface Mitteilungen korrigiert werden.

Quellcode- Dateien

Laden Sie die Quelldateien für diese Anwendung als tar.gz -Archiv

( Hinweis: Diese PHP- Quellen sind veraltet und gehören veraltete Syntax wie Kurz PHP Open -Tags Sie müssen wahrscheinlich alle PHP -Tags aus offenen ändern "<? " Auf "< php ? " , Damit der Code ausgeführt in . modernste PHP -Umgebungen) .

blog comments powered by Disqus
Powered by Xataface
(c) 2005-2018 All rights reserved