Externe IDs speichern - Tabellenaufbau

OnDemand

Top Contributor
Guten Morgen,

hab folgendes "Problem" grad.

Ich hab in meiner Datenbank hundertdausende Datensätze, welche zu externen Portalen geschoben werden. Angenommen wir haben Schuhe, welche zu Ama*n, E*ay und anderen Plattformen geschickt werden.

Jede Plattform liefert dann eine ID des Artikels zurück die wir speichern. Nun liefert aber eine Plattform Long zurück, eine andere Integer und noch eine andere UID (String)

Am liebsten und einfachsten wäre ja folgende Struktur um die Daten zu speichern (Dummy)

table platform_id_mapping
int id
int schuh_id
int external_id
int platform_id

geht aber nicht, weil ja external_id long, string oder int sein kann.

1. Überlegung ist die spalte als String zu machen und dann im Code entsprechend in Long, Integer zu convertieren.
2. Überlegung ist je plattform eine eigene Tabelle

Habt ihr noch ne Idee? gibts vielleicht noch ein Datenformat was ich nicht bedacht habe und nutzen könnte?
 
Die erste Frage wäre, was für Operationen Du auf und mit den Daten vor hast. Ich selbst finde es nicht gut, Datentypen zu "verweichen". Du kannst es einfach als String speichern, dann passen da int, long, uuid, ... rein. Aber die Typsicherheit ist ggf. ein Problem (lässt sich aber ggf. auch mit Triggern noch abbilden...)

Wenn das aber alles ist, was Du brauchst an Informationen (und nicht noch Dinge wie Anzahl, min/max Preise u.s.w.), dann würde ich hier ggf. auch minimal bleiben und es einfach als String speichern (Wie @Thallius bereits vorgeschlagen hat).
 
Wenn es nötig sein sollte nach der Id zu sortieren oder min/max etc zu finden kann du auch einfach dem int 10 Nullen voranstellen und danach auf die letzten 10 stellen kürzen beim konvertieren in den String. Dann geht das auch alles wieder
 
Tja, dann hast du halt nur die Möglichkeit eine basisklasse zu erstellen und für jeden Anbieter davon zu vererben und die passende Id hinzuzufügen oder du trickst und speicherst die Id als String und hast ein weiteres Attribut welches dir angibt dass du es nach int konvertieren Must für den put request.
 
Tja, dann hast du halt nur die Möglichkeit eine basisklasse zu erstellen und für jeden Anbieter davon zu vererben und die passende Id hinzuzufügen oder du trickst und speicherst die Id als String und hast ein weiteres Attribut welches dir angibt dass du es nach int konvertieren Must für den put request.
so hab ich es in der Art gelöst. Ich weiss ja in dem entsprechenden Modul ob ich Long oder Integer braucht und kann entsprechend parsen. Das passt.
 
Man muss ja eh zwischen interner Datenrepräsentation und externer Datenrepräsentation unterscheiden und dazwischen konvertieren. In den seltensten Fällen sind die 1:1 identisch.
 

Zurück
Oben