SebastianStieme
Returning Observer

FiSp-Datenquelle n:m mit externer Datenbank/Schnittstelle verknüpfen

Jump to solution

Hallo FirstSpirit-Experten,

vielleicht könnt ihr mir bei folgender Anforderung helfen.

Wir haben eine Datenquelle "Vortrag" in FirstSpirit.

Diese Datensätze aus der Datenquelle "Vortrag" sollen nun auf irgendeine Weise mit Datensätzen einer externen Datenbank bzw. Schnittstelle "Aussteller" n:m verknüpft werden. Habt ihr vielleicht Ansätze, wie wir das lösen könnten?

Vielen Dank schon einmal für eure Ideen/Hinweise

Gruß

Sebastian

0 Kudos
1 Solution

Accepted Solutions
hoebbel
Crownpeak employee

Hallo Sebastian,

wenn die externe Datenbank "Aussteller" in FirstSpirit eingebunden wurde [Layer konfigurieren der auf die Datenbank zeigt und diesen in eine Projekt mit den Optionen NoSchemaSync & Readonly anbinden] und ein Schema aus der Datenbank erzeugt wurde [Neu/Schema aus Datenbank erzeugen], dann würde ich so vorgehen:

  • Für das externe Schema eine neue Tabellenvorlage erzeugen, die die entsprechenden Aussteller-Daten darstellt (Schnipsel Definition nicht vergessen)
  • In der FirstSpirit Datenbank "Vortrag" in der entsprechenden Tabelle eine FirstSpirit Editor Spalte anlegen
  • Eine FS_INDEX Eingabekomponente definieren, die über DatasetDataAccessPlugin die externe Datenbanktabelle über das zuvor erzeugte Tabletemplate einbindet
  • Die FS_INDEX Eingabekomponente auf die FirstSpirit Editor Spalte mappen

--> Damit können dann von der Tabelle in der Datenbank "Vortrag" beliebige Datensätze aus der entsprechenden Tabelle der Datenbank "Aussteller" verlinkt werden

Die Verlinkung anders herum ist natürlich nicht möglich, da die "Aussteller" Datenbank ja nicht unter FirstSpirit Kontrolle steht, also nicht geändert werden kann.

Problematisch wird das Konstrukt, wenn abgefragt werden muss, welche Vorträge zu einem Aussteller gehören, da dann über alle Vortrags-Datensätze iteriert werden muss, um die zu finden, die den Aussteller referenzieren.

Viele Grüße

Holger

View solution in original post

0 Kudos
4 Replies
hoebbel
Crownpeak employee

Hallo Sebastian,

wenn die externe Datenbank "Aussteller" in FirstSpirit eingebunden wurde [Layer konfigurieren der auf die Datenbank zeigt und diesen in eine Projekt mit den Optionen NoSchemaSync & Readonly anbinden] und ein Schema aus der Datenbank erzeugt wurde [Neu/Schema aus Datenbank erzeugen], dann würde ich so vorgehen:

  • Für das externe Schema eine neue Tabellenvorlage erzeugen, die die entsprechenden Aussteller-Daten darstellt (Schnipsel Definition nicht vergessen)
  • In der FirstSpirit Datenbank "Vortrag" in der entsprechenden Tabelle eine FirstSpirit Editor Spalte anlegen
  • Eine FS_INDEX Eingabekomponente definieren, die über DatasetDataAccessPlugin die externe Datenbanktabelle über das zuvor erzeugte Tabletemplate einbindet
  • Die FS_INDEX Eingabekomponente auf die FirstSpirit Editor Spalte mappen

--> Damit können dann von der Tabelle in der Datenbank "Vortrag" beliebige Datensätze aus der entsprechenden Tabelle der Datenbank "Aussteller" verlinkt werden

Die Verlinkung anders herum ist natürlich nicht möglich, da die "Aussteller" Datenbank ja nicht unter FirstSpirit Kontrolle steht, also nicht geändert werden kann.

Problematisch wird das Konstrukt, wenn abgefragt werden muss, welche Vorträge zu einem Aussteller gehören, da dann über alle Vortrags-Datensätze iteriert werden muss, um die zu finden, die den Aussteller referenzieren.

Viele Grüße

Holger

0 Kudos

Danke schon einmal für deine Idee.

Die Idee hatten wir auch schon so, aber so ganz das richtige ist das in unserem Fall vermutlich leider nicht.

die "Aussteller"-DB besteht aus mehreren Tabellen, da müssten wir dann pro Mandant kompliziert Views erstellen usw.

Dann gibts auch noch einen jährlichen Zyklus, so das es auch schwierig wäre das jedes mal sinnig anzupassen.

Gibts also vlt. noch andere Ansätze?

Eine wichtige Info die ich vlt. noch vergessen habe. Es wäre auch denkbar das jeweils nur hin und wieder zu importieren oder so. Denn das würde pro Jahr wahrscheinlich nur einmal gemacht werden müssen. Schöner wäre natürlich immer die aktuellen Daten, aber ein Import z. B. einmal im Jahr wäre auch ok.

0 Kudos

Hallo Sebastian,

so ganz klar ist mir euer Konstrukt nicht (vielleicht hilft ja ein Bild). Eine n:m Beziehung ist hier vermutlich auch nicht gemeint, weil es über Datenbanken hinweg eher schwierig zu realisieren sein wird.

Ich vermute mal, dass der Ansatz über ein DataAccessPlugin schon der richtige ist, um die Beziehung aus FirstSpirit heraus zu realisieren. Wenn ihr euch nicht scheut, könnt ihr ein eigenes solches Plugin schreiben, das die Geschäftslogik bzgl. Mandanten und Zieltabellen kapselt. In einer FS_INDEX könntet ihr dann Referenzen über das Plugin auf die externen Daten setzen. Vorausgesetzt, eure Datenbank hat eine programmatische API. Alternativ könntet ihr das Plugin auch auf einem Datenbank-Export basieren lassen, den ihr bspw. über eine Projekt-Komponente regelmäßig (manuell) einpflegt. Die Logik innerhalb des Plugins liegt dabei in Eurer Hand. Entsprechende Doku und Beispiele dazu findet ihr bei uns im ODFS.

Beste Grüße

Stefan

0 Kudos

Vielen Dank.

So machen wir es jetzt vermutlich. Ich hab das so Durchstichtechnisch schon mal implementiert.

Ein Problem was ich hatte, ist dass bei [Neu/Schema aus Datenbank erzeugen] die DB Views, die ich zuvor angelegt hatte nicht mit angelegt wurden 😕

Hab dann aber mal hier im Forum weiter recherchiert und den Hinweis gefunden (MySQL 5 externe View an CMS anbinden; Primary Key für View festlegen; Datenbankschema; FS5 ), dass man die Views hinzufügen kann, indem man das XML des Schemas über [Schema manuell extern bearbeiten] hinzufügen kann.

Scheint nun also alles zu funktionieren.

Super, vielen Dank

0 Kudos