Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Datenbankmodell mit Import aus Webanwendung

Begonnen von Micharius, Oktober 28, 2019, 10:11:02

⏪ vorheriges - nächstes ⏩

Micharius

Hallo zusammen

Bei uns in der Firma haben wir eine webbasierte Lösung zum Projektmanagement im Einsatz. Sie bietet eine Möglichkeit, Daten per XML Schnittstelle abzurufen und somit weiter zu verwenden. Diese XML kann ich mittlerweile sehr gut via VBA abrufen, parsen, und in Access Tabellen abfüllen. Auch das Updaten und Anfügen von geänderten und/oder neuen Datensätzen kann auf Knopfdruck erfolgen. An die Tabellen, und somit auch an die ID aus der Webanwendung eindeutig zuordnbar sind in Access nun viele Einsätze möglich. Die Anzahlt der Datensätze ist bescheiden: Derzeit 87 aktive Kundendatensätze, zu 90% würden lediglich neu Datensätze aus der Webanwendung abgerufen und angefügt werden. Ein Update von bestehenden Datensätzen (Adressänderungen, Namensänderungen) käme wesentlich seltener vor. Werden Datensätze in der Cloud gelöscht bzw. auf inaktiv gesetzt, erfolgt z.Z. kein Update in Access.

Die Idee ist nun, eine Datenbank für einen kleinen Benutzerkreis (max. 5 Benutzer) im lokalen Netzwerk zu haben, welche damit arbeiten kann. Wird so in der Cloudlösung z.B. eine neue Kundenadresse erfasst oder mutiert, stehen diese Daten nach der Aktualisierung auch in der Access DB zur Verfügung. Der Datenfluss ist immer Oneway, d.h. die Webanwendung ist der Master für alle neue Daten, die Access-DB kann keine Daten schreiben, nur empfangen.

Für diese Umsetzung habe ich mir nun 2 mögliche Lösungsansätze überlegt. Es würde mich interessieren, welche euch besser erscheint, ob ich alles berücksichtigt habe oder ob es auch noch andere Möglichkeiten gibt.

Lokale importierte Daten
Hierbei hätte jeder Benutzer z.B. eine Tabelle tblKunden in seinem Frontend auf dem Rechner. Diese Tabelle muss er selber aktualisieren, wenn er die neuesten Daten aus der Webanwendung haben möchte, oder dies wird automatisch beim Start der DB gemacht. Weitere Tabellen, z.B. tblVerkaufschance liegen im Backend auf dem Fileserver und verfügen jeweils über einen Fremdschlüssel, der sich auf die (aus der Webanwendung importierte) ID des Datensatzes in tblKunden bezieht.

Vorteil aus meiner Sicht: Beim Aktualisieren wird es nicht passieren, dass ein anderer Benutzer gerade die zu aktualisierende Tabelle oder Datensatz blockiert.
Nachteil: Grösserer Aufwand seitens Benutzer, da jeder einzeln die Aktualisierung der Daten vornehmen muss.

Alles im Backend
Alle Tabellen liegen im Backend. Nimmt ein Benutzer die Aktualisierung der tblKunden vor, ist diese im Backend aktualisiert - andere Benutzer müssen die Aktualisierung nicht mehr vornehmen. Das ist der Vorteil aus meiner Sicht. Der Nachteil, den ich aber zuwenig einschätzen kann: Wie und ob und wie das Probleme bereiten kann hinsichtlich gesperrte Datensätze beim Updaten ("Geht mal alle kurz bitte aus der DB, ich muss updaten...") .

Auf euer (wie immer gnadenlose  ;) ) Feedback freue ich mich,

lg Micharius

DF6GL

Hallo,

aus meiner Sicht kommt nur "Alles im Backend" in Frage, wobei die Aktualisierung auch dort (automatisch, außerhalb der Arbeitszeit) stattfinden könnte (sollte).


Das (für jeden User lokal kopierte und ausgeführte)  Frontend kann so entwickelt werden, dass die Formulare sich standardmäßig im Anzeigemodus befinden. Nur wenn ein DS geändert werden muss, geschieht das mit einem separaten gesondert eingestellten Formular (oder das Anzeigeform wird per VBA temporär  in den Edit-Modus umgestellt).  Die Gefahr einer DS-Sperrung ist dann nur während dem Edit-Modus vorhanden.

Je nach Größe eines DS kann sich allerdings eine Sperre auf einige weitere "benachbarte" Datensätze auswirken.

Vielleicht könnte man auch im Vorfeld abschätzen, wie viele User  am selben DS  Änderungen vornehmen würden.


Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

Micharius

Hallo Franz

Super, vielen Dank für die Einschätzung - ich werde es auf jeden Fall so machen. Es sind max. 5 Personen in der DB eingeloggt - wir schauen es mal an, wie es so läuft bezüglich gegenseitiger Sperrung, und sonst kann man immer noch deine weiteren Vorschläge umsetzen.

Grüsse,

Micharius