Einzelnen Beitrag anzeigen

norwegen60

Registriert seit: 23. Dez 2007
Ort: Schwarzwald
505 Beiträge
 
Delphi 12 Athens
 
#1

Primarykeys über mehrere Standorte hinweg

  Alt 6. Dez 2010, 17:30
Datenbank: mssql • Version: 2005 • Zugriff über: UniDac
Hallo zusammen,

ich habe eine Anwendungen, die unter folgenden Bedingungen laufen soll:

Prüfschränke sollen innerhalb einer Fa. auch dann laufen, wenn das Netz (der Server) nicht verfügbar ist. Die Grunddaten (Prüfpläne, Serien-Nr., ... werden aber immer auf dem Server behandelt. Nur Prüfprotokolle müssen noch lokal weiter erstellbar sein. Derzeit überlege ich noch, ob ich mit Replikationen arbeiten soll oder andere Wege suchen soll.

Lösungsansatz: Der Primarykey für die Protokolldaten setzt sich aus einer ID + dem Prüfplatz-ID zusammen

Grunddaten sollen zwischen verschiedenen Standorten ausgetauscht werden. Die Daten sind eindeutig, d.h. z.B. User können pro Standort eigenständig verwaltet werden. Die Daten anderer Standorte sollen aber am Stammsitz zusammengezogen werden können
Lösungsansatz 1: Definition von Nummernbändern, z.B Standort 1 ab 1, Standort 2 = ab 5'000'000, ...
Lösungsansatz 2: Zusammengesetzter Primarykey aus ID + Standortkennung. Ist schon als char(1) vorhanden
Lösungsansatz 3: Unique keys

Gegen L2 spricht, dass pro Detailsatz 2 Felder notwendig sind
Gegen L3 spricht, dass ein sprachlicher Informationsaustausch per ID unmöglich ist e357c628-148f-4cd6-9ca5-d28a8355c7c4 kann sich keiner auch nur kurzfristig merken, 5'000'112 schon.

Von daher bervorzuge ich L1 zumal 5'000'000 Stellen ca 150 Jahre pro Standort halten.

Zum einen würde ich mich über den ein oder anderen Kommentar zu den Lösungsansätzen freuen. Hauptsächlich aber wüsste ich gerne zwei Sachen:
  1. Was passiert am Hauptsitz, wenn dort ein Datensatz mit der ID 5'000'393 eingespielt wird obwohl dort nur ID's 1..4'999'999 vergeben werden. Werden dann dort ID's ab 5'000'393 vergeben?
  2. Gibt es in MsSQl eine Möglichkeit, die DB lokal so zu installieren, dass für alle Tabellen gilt: ID-Startwert = 5'000'000. Derzeit wird die DB als Restore einer Leertabelle erzeugt.

Vielen Dank
Gerd
  Mit Zitat antworten Zitat