Access relationale DB

zer0core

Ensign
Registriert
Sep. 2007
Beiträge
174
Guten Abend,

ich habe eine Frage bezüglich dem Aufbau meiner DB.
Als Datengrundlage habe ich eine Excel Liste, in der alle Daten in verschiedenen Spalten zusammengetragen sind. es gibt höchstens 2 Ansprechpartner.

in dem angehangenen Bild seht ihr die bisherigen Beziehungen der verschiedenen Tabellen.
ich denke, dass ich bei dem Aufbau ein Denkfehler habe...
Denn wenn ich über eine Anfüge oder aktualisierungsabfrage versuche die Daten in die Tabellen zu schreiben passiert nichts...

könnt ihr mir bitte auf die Sprünge helfen?

LG Zer0
 

Anhänge

  • Access - Gesamt _ Datenbank- W__Projekt_iOPM_01_TP1_Gesamtumsetzung_M-TEXT_IST-A_2022-02-15_19...jpg
    Access - Gesamt _ Datenbank- W__Projekt_iOPM_01_TP1_Gesamtumsetzung_M-TEXT_IST-A_2022-02-15_19...jpg
    174 KB · Aufrufe: 251
Ich glaub wir brauchen mehr Details:
  • Wie sieht die Aktualisierungsanfrage aus?
  • Was willst du denn genau anfügen, in welche Tabelle?
  • Kommt eine Fehlermeldung?

Ergänzung ()

PS: Das Schemadesign der Tabelle könnte man vielleicht auch mal diskutieren, aber vielleicht in einem separaten Thread?
 
  • Gefällt mir
Reaktionen: madmax2010
Ich würde auch sagen, du beginnst damit, dass du uns erklärst was du vor hast. Ich denke das wird auch dir helfen dann die Fragen zu stellen, die zu deiner Lösung beitragen werden.
 
  • Gefällt mir
Reaktionen: madmax2010
Guten Morgen zusammen, ich möchte die gesamte Excel (eine Übersicht von Briefen) in Access portieren und dabei eigentlich die 3. Normalform einhalten. Meine Haupttabelle, in die ich alle Briefe haben möchte ist tbl_Übersicht.

bei der Tabelle mit den Ansprechpartnern weiß ich wie ich es machen muss aber wie steht es um die tbl_Doppelvorhaltung, weiß es hier ja auch eine Beziehung mit Tbl_System gibt.
 
zer0core schrieb:
Guten Morgen zusammen, ich möchte die gesamte Excel (eine Übersicht von Briefen) in Access portieren und dabei eigentlich die 3. Normalform einhalten. Meine Haupttabelle, in die ich alle Briefe haben möchte ist tbl_Übersicht.

bei der Tabelle mit den Ansprechpartnern weiß ich wie ich es machen muss aber wie steht es um die tbl_Doppelvorhaltung, weiß es hier ja auch eine Beziehung mit Tbl_System gibt.
Moin moin.
Ich weiß nicht wie es die anderen sehen, aber für mich sind das immer noch zu wenige Infos, zu dem was du vor hast. Bis auf das Ziel "Excel mit Briefübersicht in Access portieren" sehe ich keinerlei Informationen für mich, wo ich sagen könnte "aha, so und so müsstest du die Tabelle gestalten oder die Beziehungen so oder so setzen".

Wie sind die Zusammenhänge?
Was steckt hinter Dopelvorhaltung?
Was ist die Tabelle System?
Was ist die Tabelle Vorwissen?

Erklär uns wie deine Excel momentan Aufgebaut ist und welche Logik dahinter steckt. Versuch das nach dem Motto "Wie erkläre ich es meinem Kind" :).
 
G-Red schrieb:
Haha ok Danke.

Also die Excel hat folgende Spalten:
Kürzel (technischer Schlüssel)
Beschreibung (Beschreibung der Korrespondenz)
System (auf welchem Text-System ist diese. Es gibt lediglich 3 verschiedene)
Prozess (technischer Prozess aus SAP)
Komplexität (Einfach, Mittel, Schwer)
Folgedokumente (Freitext)
Flyer (4 Auswahlmöglichkeiten)
Dialog (JA/NEIN öffnet sich eine Dialogbox)
Art (3 Auswahlmöglichkeiten Anschreiben, Formular, Infoblatt)
Umsetzung Formularkonzept (JA/NEIN muss nur befällt sein, wenn Art = Formular)
Nutzdatengenerierung (JA/NEIN)
Bei anderer BD vorhanden (3 Auswahlmöglichkeiten ist die Korrespondenz auch bei anderen Bezirksdirektionen)
Druckzahlen (Double)
Stand (Datum)
wichtige Änderungen im 1. HJ 22 (JA/NEIN)
Priorität (1-3)
Doppelvorhaltung (JA/NEIN ist der Brief auch in einem anderen System)
Doppelvorhaltung System (Wenn ja, welches System, siehe oben)
Doppelvorhaltung Kürzel (Wenn ja, technischer Schlüssel)

zu guter letzt die Ansprechpartner des Briefes
Anrede
Vorname
Nachname
Mail
Unternehmensbereich
Geschäftsbereich

und das gleiche für Stellvertretungen
 
Zuletzt bearbeitet von einem Moderator:
Mir fehlt leider nach wie vor das Verständnis zu deinem Arbeitsworkflow bzw. der Logik bei deiner Aufgabe. Wenn ich hier das Verwalten von Eingangsmails zugrunde lege und dein ER-Diagramm, dann stelle ich mir die Abbildung des Prozesses wie folgt vor.
1645006713501.png


Wobei mir hier natürlich folgendes nicht ganz klar ist und daher in meinem ER-Diagramm nicht vorhanden.
  • Was ist Vorwissen 1 und 2?
  • Warum gibt es in deinem ER-Diagramm zwei Tabellen mit Ansprechpartnern?
  • Was haben z.B. Druckzahlen, wichtige Änderungen im HU1 uä. (deine tbl_Übersicht) mit der E-Mail zu tun?

Wie gesagt, hier fehlt nach wie vor das Verständnis zu deiner Aufgabe die du realisieren möchtest sowie zu den einzelnen Elemente wie o.g. Das zu erklären wäre hilfreich.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: madmax2010
Was ich mich hier auch frage … du erwähnst SAP (ich gehe mal von ERP, also entweder ECC oder S4 Hana, aus) was habt ihr denn für Module aktiv? Kein CRM dabei? Denn in C4C (Nachfolger von SAP CRM) und Salesforce kann sowas problemlos abgebildet werden. Daher evtl. mal nochmal über den Prozess und die verwendete Software nachdenken.
 
G-Red schrieb:

Vielen Dank für die Antwort!
Also Ziel ist es, einen Überblick über alle Briefe zu bekommen, die bei uns aus 3 verschiedenen Textsystemen heraus ausgelöst werden können.

Die Textsysteme sollen zusammengeführt werden in ein 4. Daher benötigen wir die technischen Kürzel, Beschreibung, auf welchem System es ist, und ob der Brief evtl auf zwei verschiedenen Systemen Parallel läuft.

Des weiteren benötigen wir auch die Druckzahlen und die anderen Werte für ein Scoringverfahren, welcher Brief zuerst umgesetzt wird.

Jeder Brief kann 2 Ansprechpartner haben. Hier fragen wir die Ansprechpartner über deren technisches Vorwissen und das Vorwissen der Textsysteme ab, um späteren Schulungsbedarf zu ermitteln.
 
Zuletzt bearbeitet von einem Moderator:
OK, dann habe ich etwas das vorherige ER-Diagramm angepasst.
1645022422784.png


Die Tabelle mail_Daten kannst du um weitere Werte für das Scoring erweitern, also das was bei dir zum Teil in der tbl_Übersicht steht. Lagere die Sachen in separate Tabellen aus, wo es sich ähnlich zum Typ oder System verhält. Die Haupttabelle (mail_Daten) sollte eigentlich in keiner Spalte leere Werte haben, sprich alle Zellen, wenn wir im Excel-Slang sprechen, sollen gefüllt sein.

Darüber hinaus empfehle ich dir, dein Vorhaben in ähnlicher Form aufzuschreiben wie du mir das in deinem letzten Post beschrieben hast. Mache dir halt Gedanken wo, was und wann passieren muss, von was es abhängt usw. Auch solche Fragestellungen wie, was passiert wenn das oder jenes passiert, oder sich morgen ändert, solltest du dir stellen.

Sobald du mit dem Befüllen der Daten, auf Basis eines von dir überlegten Schemas, begonnen hast, wird es zu einem Desaster wenn du dann plötzlich feststellst, dass die Struktur nicht dem Prozess entspricht.

Wenn du nicht das Know-How in der Datenmodellierung hast, würde ich dir empfehlen jemand zu engagieren, sofern es ein kritisches System ist. Es scheint sich bei dir, zumindest hört sich das so für mich an, um ein Unternehmen zu handeln.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: madmax2010
zer0core schrieb:
Haha ok Danke.

Also die Excel hat folgende Spalten:
. . .
Interessante Aufgabe! Meinst Du wirklich Spalten? Wie angegeben sind es mit der Stellvertretung 50 Spalten. Würde mich interessieren, wie das aussieht. Vielleicht könntest Du mal einen Screenshot zeigen, persönliche Daten etc. geschwärzt.
Um so etwas datenbankmäßig zu erfassen, würde ich ich erstmal an zwei DBs denken, die man mit entsprechenden Abfragen verbinden kann.

Mal sehen, ob was kommt.
 
kommt auf deine daten an..
sagen wir, eine person ist mit 2 email adressen regsitriert, ist der Datensatz halt doppelt, wobei sich nur die email adresse unterscheidet.
 
zer0core schrieb:
Vielen Dank dafür!
aber wie verhält es sich in deinem Diagramm mit der Doppelvorhaltung?
Eigentlich kann man das aus meiner Tabelle mail_Daten komplett entfernen und die System Tabelle etwas anders gestalten, sodass pro System ein Wert steht, welches für den jeweiligen Brief anzeigt, ob es darin vorkommt oder nicht. D.h. es könnte in der Tabelle mail_System wie folgt aussehen.
sys_IDmail_DatenSystem 1System 2System 3
11NeinJaJa
Würde aber statt Ja/Nein 0 oder 1 verwenden, weil dann weniger Speicherplatz verbraucht wird und für das Reporting numerische Werte besser geeignet sind. Auch bei anderen Spalten, wo Binärauswahl genügt, würde ich so vorgehen.

Damit könntest du dann mit einer Join Abfrage ermitteln, in welchem System sich der jeweilige Brief befindet, oder welche Briefe kommen in mehr als einem System vor.
1645045679180.png
,
 
Zuletzt bearbeitet:
Datensätze doppelt in die Datenbank zu werfen ist schlechtes Design. Genauso wie in einer Datenbank sowas wie "Doppelvorhaltung" als expliziten Wert zu speichern. Ob etwas mehrfach vorkommt, bekommt man ja eh raus, wenn man die Datenbankabfrage laufen lässt. Da läuft man Gefahr, dass das was in "Doppelvorhaltung" vermerkt ist und das was die Datenbankabfragen herausbekommen auseinander läuft.
An der Stelle sei nochmal auf die bereits erwähnten Normalisierungsformen von Datenbanken hingewiesen.

Untitled.png


An der Stelle ein Select auf Mail_Relation nach mail_id. Kommt nur ein Ergebnis zurück, dann gibt es keine Doppelvorhaltung. Kommen mehrere Ergebnisse zurück, gibt es eine Dopplung. Der Vorschlag von G-Red da mehrere Spalten mit für jedes System vorzuhalten ist Käse[1].
Da denkbar ist, dass die selbe Emails bei den verschiedenen Systemen unterschiedliche Zeiten für Empfang und Ausgang haben, wäre es im Zweifelsfall angebracht da entsprechend umzugestalten. Da ich eure Prozesse und vor allem die Mailsysteme nicht kenne, spare ich mir mehr als einen Ansatz zu modellieren. Datenbankmodellierung ohne Prozesse und vor allem Daten(flüsse) zu kennen ist halt wirklich Unfug.

Allgemein zur Benennung. Wenn deine Tabelle mail_Prioritaeten heißt, brachst du die ID-Spalte nicht prio_ID benennen. Die Abfragen schreiben sich ja sowieso SELECT Table.id FROM Table;. Auch bei der Groß/Kleinschreibung solltest du mal in Erfahrung bringen, ob es bei euch da Konventionen gibt. Ich kenne es ja grob so:
DATENBANK
Table
column


[1] Es gibt immer Ausnahmen, wieso man sowas bei einem relationalem Datenbanksystem macht, aber begründbar ist das hier nicht.
 
Piktogramm schrieb:
An der Stelle ein Select auf Mail_Relation nach mail_id. Kommt nur ein Ergebnis zurück, dann gibt es keine Doppelvorhaltung. Kommen mehrere Ergebnisse zurück, gibt es eine Dopplung. Der Vorschlag von G-Red da mehrere Spalten mit für jedes System vorzuhalten ist Käse[1].
Hier wurde zuvor gesagt, es gibt nur 3 Systeme auf die man sich bezieht, weshalb auch die Tabelle mit fester Anzahl aufgebaut wurde, da davon auszugehen ist, dass keines mehr hinzukommt. Sind weitere Systeme in der Zukunft angedacht wo dieselben Briefe nochmals vorkommen, dann ist der "Käse" natürlich tatsächlich da :), weil dann haufenweise Updates kommen werden um den neu hinzugekommenen Kram hinein zu quetschen. So was geht öfters nicht ohne Fehler.
Piktogramm schrieb:
Da ich eure Prozesse und vor allem die Mailsysteme nicht kenne, spare ich mir mehr als einen Ansatz zu modellieren. Datenbankmodellierung ohne Prozesse und vor allem Daten(flüsse) zu kennen ist halt wirklich Unfug.
Bin bei dir mit der Aussage und habe den TE schon mehrmals darauf hingewiesen. Deshalb sind auch meine Gedankengänge, denn als solche sind meine ER-Diagramme zu Bezeichnen, nur für erste Überlegungen gut und nicht als Grundlage für den Einsatz in einem Produktivsystem gedacht, da mir ebenfalls vieles an Informationen fehlt.
 
Zuletzt bearbeitet:
Ich bedanke mich recht herzlich an allen beteiligten zur Lösungsfindung 😎
 
@Piktogramm, @G-Red - welche Programme nehmt ihr zur Visualisierung der Relationen in einer Datenbank? Gibt's da auch etwas kostenloses und brauchbares (sprich: einfach genug für mich), womit man die Struktur einer bestehenden DB einlesen und visualisieren kann?

Danke!
 
Zurück
Oben