Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 12.0.1 (Deutsch) » MobiLink - Erste Orientierung » Praktische Einführungen in MobiLink » Praktische Einführung: MobiLink mit einer konsolidierten Adaptive Server Enterprise-Datenbank verwenden

 

Lektion 3: Hinzufügen eindeutiger Schlüssel

In dieser Lektion wird davon ausgegangen, dass Sie bereits alle vorherigen Lektionen abgeschlossen haben. Siehe Lektion 1: Planen von Schemata.

In einem Synchronisationssystem ist der Primärschlüssel einer Tabelle die einzige Möglichkeit, eine Zeile in einer anderen Datenbank eindeutig zu identifizieren, und die einzige Möglichkeit, Konflikte zu erkennen. Jede für die mobile Verwendung eingerichtete Tabelle muss einen Primärschlüssel haben. Der Primärschlüssel darf nie geändert werden. Sie müssen außerdem sicherstellen, dass ein in einer Datenbank eingefügter Primärschlüsselwert in keiner weiteren Datenbank eingefügt wird.

Es gibt mehrere Möglichkeiten, eindeutige Primärschlüssel zu generieren. Der Einfachheit halber wird in dieser praktischen Einführung die Methode der zusammengesetzten Primärschlüssel verwendet. Diese Methode erstellt Primärschlüssel mit mehreren Spalten, die in konsolidierten und entfernten Datenbanken eindeutig sind.

 Hinzufügen eindeutiger Primärschlüssel zur konsolidierten Datenbank
  1. Stellen Sie mithilfe des Dienstprogramms iSQL in Adaptive Server Enterprise als sa eine Verbindung mit der Datenbank pubs2 her. Führen Sie an einer Eingabeaufforderung folgenden Befehl in einer einzigen Zeile aus:

    isql
    -U sa
    -P your-password-for-sa-account
    -D pubs2

    Wenn Sie entfernt auf Adaptive Server Enterprise zugreifen, geben Sie den Servernamen mit der Option -S an.

  2. Die folgenden Zeilen sind nicht eindeutig und basieren auf dem zusammengesetzten Primärschlüssel, der für die Tabelle salesdetail erstellt wurde. Der Einfachheit halber löschen Sie die Zeilen, indem Sie folgenden Anweisungen ausführen:

    DELETE FROM salesdetail 
    WHERE stor_id = '5023' 
    AND ord_num = 'NF-123-ADS-642-9G3' 
    AND title_id = 'PC8888'
    
    DELETE FROM salesdetail 
    WHERE stor_id = '5023' 
    AND ord_num = 'ZS-645-CAT-415-1B2' 
    AND title_id = 'BU2075'
  3. Die folgenden Indizes beeinträchtigen die Erstellung von Primärschlüsseln in einem vorherigen Schritt. Zum Löschen der Indizes führen Sie folgende Anweisungen aus:

    DROP INDEX authors.auidind
    DROP INDEX titleauthor.taind
    DROP INDEX titles.titleidind
    DROP INDEX sales.salesind
  4. Fügen Sie eindeutige Primärschlüssel hinzu, indem Sie folgende Anweisungen ausführen:

    ALTER TABLE au_pix ADD PRIMARY KEY (au_id)
    ALTER TABLE authors ADD PRIMARY KEY (au_id)
    ALTER TABLE titleauthor ADD PRIMARY KEY (au_id, title_id)
    ALTER TABLE titles ADD PRIMARY KEY (title_id)
    ALTER TABLE discounts ADD PRIMARY KEY (discounttype)
    ALTER TABLE stores ADD PRIMARY KEY (stor_id)
    ALTER TABLE sales ADD PRIMARY KEY (stor_id, ord_num)
    ALTER TABLE salesdetail ADD PRIMARY KEY (stor_id, ord_num, title_id)

    Nachdem Sie diese Anweisungen ausgeführt haben, stellt der MobiLink-Server eine Verbindung mit der konsolidierten Datenbank her und richtet die Synchronisation für eine beliebige Anzahl entfernter Datenbanken ein.

    Hinweis

    Es ist möglich, Daten mit konsolidierten Datenbanken, die keine Primärschlüssel haben, zu synchronisieren. Sie müssen jedoch eigene Synchronisationsereignisse erstellen, die in Schattentabellen Aktionen ausführen, mit denen Zeilen in anderen Tabellen eindeutig identifiziert werden.

    In einer späteren Lektion wird anhand des konsolidierten Schemas das entfernte Schema erstellt. Das bedeutet, dass das entfernte Schema dieselben Primärschlüssel enthält wie das konsolidierte Schema.

    Spalten wurden gezielt ausgewählt, um eindeutige Primärschlüssel für alle Datenbanken sicherzustellen. Für die Tabelle sales besteht der Primärschlüssel aus den Spalten stor_id und ord_num. Jeder in die entfernte Tabelle sales eingegebene Wert muss eine eindeutige Bestellnummer haben (der stor_id-Wert ist immer gleich). Mit diesem Verfahren wird die Eindeutigkeit in jeder entfernten Sales-Tabelle sichergestellt. Der Primärschlüssel in der konsolidierten Sales-Tabelle verhindert Konflikte, wenn mehrere Buchhandlungen gleichzeitig Daten hochladen. Jeder Upload einer Buchhandlung ist von Uploads anderer Buchhandlungen eindeutig zu unterscheiden, da ihre stor_id-Werte unterschiedlich sind.

    Für die Tabelle salesdetail besteht der Primärschlüssel aus den Spalten stor_id, ord_num und title_id. Eine Bestellung kann mehrere Buchtitel enthalten. Zeilen der entfernten Sales-Tabellen können dieselben Werte für stor_id und ord_num enthalten, doch sie müssen unterschiedliche Werte für title_id haben. Mit dieser Konfiguration wird die Eindeutigkeit in jeder entfernten Salesdetail-Tabelle sichergestellt. Ähnlich wie bei der sales-Tabelle ist jeder Upload einer Buchhandlung in die konsolidierte Datenbank aufgrund der unterschiedlichen stor_id eindeutig.

  5. Fortfahren mit Lektion 4: Herstellen der Verbindung mit MobiLink.

 Siehe auch