Hallo,
ich habe mal eine etwas grundsätzliche Frage zum Datenaustausch zwischen Applikationen, deren Datenbestand getrennt gepflegt wird. (historisch bedingt) Es gibt zwei Systeme A und B. Beide enthalten Artikeldaten. Beim Artikel gibt es u.a Hersteller, Steuer und Frachtgruppen.
Nun erzeugt A einen ArtikelDatensatz der den Herstellernamen im Klartext enthält. B empfängt diesen Datensatz. Kennt B den Herstellernamen wird es kein Problem geben. Kennt es ihn nicht, kann er entweder automatisch angelegt werden oder der Datensatz wird abgelehnt. Prima Sache. Bemerkt nun jemand in A z.B. einen Schreibfehler im Herstellernamen und korrigiert ihn, ist das dann für B ein neuer Hersteller. Bei automatischer Anlage hat B dann sowas wie ID1: Aple, ID2 :Apple. Oder B lehnt solange alle DS ab, bis der Hersteller angelegt / umbenannt wurde. Ausserdem kann es Probleme bei der Stringübertragung geben - unterschiedliche Betriebsysteme, dumme proprietäre Anwendungen etc - villeicht wird der String nicht immer sauber erkannt.
Erzeugt A hingegen einen Code für den Hersteller Apple, ist die Übertragung unabhängig von den Umständen ziemlich gesichert. Herstller 1 ist dann Apple, auch wenn wir alle mal russisch sprechen sollten. Allerdings muss dann dafür wieder eine in A und B zu pflegende Mappingtable existieren, oder eine an zentraler Stelle, wo sich die Applikationen (kann ja auch mal noch C dazukommen) bedienen. Mal abgesehen davon, dass ein proprietäres System diese Möglichkeit nicht so ohne weiters bietet, muss auch diese Tables wieder händisch gepflegt werden......
Nun bin ich am abwägen, welche Variante geeigneter wäre.... Ausprägung oder Key ...... Hat einer vielleicht noch eine andere Idee dafür auf Lager?
Mit freundlichen Grüßen
Jens Puruckherr
On Fri, Jul 11, 2003 at 03:16:45PM +0100, Jens Puruckherr wrote: ...
Nun bin ich am abwägen, welche Variante geeigneter wäre.... Ausprägung oder Key ...... Hat einer vielleicht noch eine andere Idee dafür auf Lager?
...
Wie wär's, wenn du einfach beides (Id und Hersteller) überträgst? Dann kannst du an Hand der Id den Datensatz identifizieren und mit den Daten aus dem Herstellerfeld kannst du den dann neu anlegen oder modifizieren.
Oder hab ich mir das jetzt zu einfach vorgestellt?
Grüße Jan
Ohne alles bis zu Ende gelesen zu haben,
aber wenn Du den kompletten Herstellernamen als Attribut Deines Artikels hast, kommt mir das vor, als wäre es möglicherweise ein Verstoß gegen eine dieser Normalformen - ein DB-Spezialist oder Informatiker möge mich korrigieren...
Den Ausweg hast Du selbst gehen - eine neue Tabelle (Relation?) für die Hersteller.
Artikel ------- ID | Artikel | Hersteller-ID / ,---------------' / Hersteller ---------- ID | Name
Um die "referenzielle Integrität" (?) zu wahren, könnte man mit Fremschlüsseln (?) arbeiten - MySQL (4.x) kann sowas schon oder bald, weiß ich jetzt nicht. Man sieht es dort als unnützes Feature, denn eigentlich wäre es Aufgabe der Applikation ...
Nun bin ich am abwägen, welche Variante geeigneter wäre.... Ausprägung oder Key ...... Hat einer vielleicht noch eine andere Idee dafür auf Lager?
Da wäre ich für den Key, das ist sauber.
Heiko
lug-dd@schlittermann.de writes:
aber wenn Du den kompletten Herstellernamen als Attribut Deines Artikels hast, kommt mir das vor, als wäre es möglicherweise ein Verstoß gegen eine dieser Normalformen - ein DB-Spezialist oder Informatiker möge mich korrigieren...
Die Speicherung in den Endsystemen erfolgt bereits normalisiert in versch. Datenbanken. Nur hat eben jedes System eigene Keys für einen Hersteller. Kommen weitere Systeme hinzu, gibt es weitere ID's. Die Endsysteme werden (historisch) getrennt gepflegt und sollen nun verheiratet werden. Der Austausch soll via XML geschehen, und nur dafür brauche ich die Entscheidung *wie* übertragen wird.
Mit freundlichen Grüßen
Jens Puruckherr
lug-dd@mailman.schlittermann.de