Entwickler-Ecke
Datenbanken - Datenbankdesign für Datenbankabgleich
Primusio - Fr 19.08.05 00:22
Titel: Datenbankdesign für Datenbankabgleich
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 - 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.
alex517 - 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.
http://www.ibphoenix.com/downloads/uuidlib.zip
alex
Primusio - 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
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!