Autor Beitrag
Primusio
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 51



BeitragVerfasst: Fr 19.08.05 00:22 
Hallöchen,
brauche mal wieder eure Hilfe.

Ich habe im Netz einen Onlineshop der auf PHP und mySQL aufbaut.
Nun möchte ich den Nutzern ein Offlinetool zur Verfügung stellen, dazu verwende ich die Firebird Datenbank mit den FIBplus Komponenten. Für die Verbindung zur mySQL Datenbank werde ich wohl auch eine kommerzielle Komponente nehmen aber das ist vorerst Nebensache.

Mir geht es jetzt umd die Struktur der lokalen Datenbank.
Das Problem ist, dass der Abgleich in beide Richtungen funktionieren soll und genau da komme ich nicht ganz weiter.

Ich habe Beispielsweise eine Tabelle "Kunden" in der ich 3 Kunden = (1,2,3) habe mit den Primary Keys (1,2,3), jetzt kommt online noch ein Kunde hinzu Kunde 4 mit dem PK 4.

Der Benutzer hat aber bevor der die Datenbanken abgeglichen hat selbst einen neuen Kunden Namens "Test" mit dem PK 4 hinzugefügt, nun muss das Programm dies irgendwie erkennen. Ein weiteres Problem ist, dass an diesen Primärschlüsseln weitere Daten verknüpft sind, wie BEstellungen ...

Jetzt wäre ich für eure Hilfe dankbar, Tipps, Links, Beispiele sind sehr willkommen. Und wie gesagt es geht nicht um die Komponenten oder den eigentlich Abgleich sondern erst einmal nur um ein logisches Datenbankdesign.

MfG
Primusio
noidic
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 851

Win 2000 Win XP Vista
D7 Ent, SharpDevelop 2.2
BeitragVerfasst: Fr 19.08.05 08:15 
In meiner Firma ist ein ähnliches Thema aktuell, allerdings ist unsere Datenbankstruktur von Anfang an darauf ausgelegt worden, sonst hätten wir ein Problem.

Du wirst nicht umhin kommen, einen zweiteiligen PK zu haben, eine laufende Nummer und einen identifier für das System, wo der Datensatz erstellt wurde. Alle referenzierenden Datensätze müssen dann auf beide Felder referenzieren.

In deinem Fall hättest du dann zwei Datensätze mit der ID 4, aber mit unterschiedlichen System_id ( oder wie du das Feld auch immer nennst ), womit die Datensätze wieder eindeutig sind.

_________________
Bravery calls my name in the sound of the wind in the night...
alex517
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 60


D7Ent, FB, FIBPlus
BeitragVerfasst: Fr 19.08.05 09:38 
Es gäbe auch die Möglichkeit eine GUID als PRIMARY KEY zu verwenden.
Die ist weltweit einmalig, egal welcher Computer sie erzeugt.
Du kannst sie in Firebird über eine UDF erzeugen lassen.

www.ibphoenix.com/downloads/uuidlib.zip

alex
Primusio Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 51



BeitragVerfasst: Fr 19.08.05 17:13 
Erst einmal danke für eure Antworten dank dem GUID bin ich vielleicht auf eine Idee gekommen, da ich mich im Inet und in Foren etwas belesen habe, sagten die meisten das GUID für 2 Datenbanken übertrieben ist, da dies ja ein String ist und die Performence reduziert.

Also denke ich derzeit an folgendes, würde aber gern eure Meinung dazu hören.

Ein Integer PK zusammengesetzt aus
Jahr-Monat-Tag-Stunden-Minuten-Sekunden-Und eine Zufallstahl zwischen 1-1000

Dies ergibt allerdings eine Länge von bis zu 18 Ziffern, nun also meine Frage, besser ein GUID welche als String identifiziert wird oder ein 18 stelliger Integer Key ?

Über Meinungen würde ich mich freuen.

MfG
Primusio