Neuigkeiten:

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

Mobiles Hauptmenü

Datenbankentwurf

Begonnen von AstraDyne, Februar 21, 2024, 09:14:05

⏪ vorheriges - nächstes ⏩

AstraDyne

Hallo an das A-o-M Team und Forum,
ich lese seit geraumer Zeit mit und profitieren von vielen Beiträgen und Tips hier und schätze diese Infos sehr!
Sollte dieser Beitrag in der verkehrten Kategorie sein, verschiebe ich dieses Thema gerne dorthin..bitte mir dann einen Hinweis geben!
In der Vergangenheit habe ich mir bereits mehrere Datenbänke gebaut. Unter anderem mit Abfrage zu Lebensmitteln (per Excel/OpenOffice/Libre hier mit SVERWEIS), Kunden und Verträge per HaFo+UFo mittels BASE-DB und verknüpften Tabellen(hier 3 Tabellen und eine Hilfstabelle mit Doppelschlüssel)...das klappte auch alles sehr gut.
Nun habe ich ein Projekt, welches ich gerne umsetzen möchte, aber nicht sicher bin, auf welcher "Basis" ich dieses tun sollte, bzw. auf welchem Weg (Excel und VBA ooooder Access oooooder VBA in Access einbinden).
Das heisst, ich sitze vor einem Blatt Papier, habe mir visualisiert, welche Tabellen ich habe, weiß, welche Abfragen ich brauche und welchen Bericht/Berichte, bin aber unsicher, wie ich die Beziehungen der Tabellen untereinander machen muss, damit folgende Abfrage/Abfragen und Filterungen realisiert werden können:

Tabelle: Drucker,Patronen,Zubehoer,Garantie, (Drucker)Serie, (Sach-)Bearbeiter-da gibts vorerst nur Einen-, Lieferant(da gibts vorerst auch nur Einen), Angebot(e), Kunden

Mehrere Formulare soll es geben für die Auswahl der Kombis:
Eins für "die Auswahl" (Filterung nach DINA3 oder DINA4 oder DINA0 oder Scanner oder nach ModellSerie)-> ist diese Auswahl geschehen, soll eine weitere Filterung nach: Farbe oder Schwarz-weiss geschehen sowie eine Filterung nach NUR Drucker oder MultiFunktionsPrinter (MFP) wobei hier noch die Frage ist, ob die DINA4 Felder der Tabelle als Ja/Nein Boolean gesetzt werden sollen(oder ob das für eine Abfrage dann eher ungünstig ist).
Diese Auswahl soll dann eine sichtbare "Restliste" ergeben, die die einzelnen Drucker untereinander auflistet (Datenblattansicht). Wählt man hier nun einen Drucker aus, soll in einer weiteren Tabelle oder Doppeltabelle(Datenblattansicht) dieser Drucker seine ihm zugehörigen "Teile" auflisten. Sprich: Wird Drucker ABC ausgewählt, steht daneben in einer oder mehreren Tabellen(UFos) Zubehör,Patronen,Garantien zu Drucker ABC.

Später soll dann aus dieser "Letzt-Auswahl" per Checkbox oder Button diese Teile ausgewählt werden können und mittels Bericht als Angebot ausdruckbar sein (Oder überführbar in PDF Format).Hier erst würde der Schritt der Kundenauswahl greifen und die Auswahl soll auch zu dem Kunden zugehörig gespeichert in der DB verbleiben. Natürlich ginge es auch andersherum, dass der Kunde erst ausgewählt wird, und dann in diesem Dialog Abfrage und Auswahl des Druckers nebst Zubehör erfolgt.

Wie würdet Ihr das realisieren?
Welche Beziehungen würdet Ihr zu den Tabellen untereinander setzen, damit bei Auswahl von Drucker x dann das entsprechende Zubehör, Patronen und Garantie angezeigt wird?
Würdet Ihr da mit einer Hilfstabelle arbeiten die alle Foreignkeys der einzelnen anzusprechenden Tabellen beinhaltet -also so an die 4- und als Schlüssel gesetzt sind? Oder untereinander die einzelnen Tabellen "verketten" 1:n und n:m  und dann mittels SQL abfragen? Ein ungebundenes Formular mit den Filterungen basteln und dann anschließend darauf ein oder mehrere Ufos? Oder "Einzelformular" und darauf diverse Ufos für Zubehör,Patronen und Garantie?
Ich würde mich über ein paar Ideen oder Vorschläge Brainstormingmäßig freuen, wie Ihr das angehen würdet im Grundkonstrukt, da ich im Augenblick einfach zu nah dran bin und einen Knoten im Kopf habe.

Und bevor ich wild drauflosbastel und dann feststelle, dass es besser "andersherum" gewesen wäre, möchte ich vorher am Reißbrett erstmal die Marschrichtung festlegen und schätze hier Eure Meinung sehr, da Ihr da augenscheinlich deutlich mehr Erfahrung und Wissen habt.

Vielen Dank vorab für Eure Mühen,Zeit und Ideen,
Astra









MzKlMu

Hallo,
mache mal einen Entwurf (mit Access), lege Beziehungen an und zeige hier mal ein Bild dieses Beziehungsfensters.
Deine obige verbale Beschreibung ist mir zu abstrakt.
Gruß Klaus

AstraDyne

Zitat von: MzKlMu am Februar 21, 2024, 10:22:07Hallo,
mache mal einen Entwurf (mit Access), lege Beziehungen an und zeige hier mal ein Bild dieses Beziehungsfensters.

Hallo,
Danke, dass versuche ich nachher(ab ca. 21Uhr), ich bin noch unterwegs.
Es gibt noch keine Beziehungen.
Da müsste ich erstmal grob kreieren...
Viele Grüße

AstraDyne

Sodele, Entschuldigung, ich habe es gestern Abend nicht mehr geschafft, ein paar Tabellen anzlegen und zu screenshotten.
Hier der Rohentwurf.
Meine Frage zielte ja auch genau das ab: wie würdet Ihr die Beziehungen anlegen, wenn die Abfrage eine Auswahl ergeben soll, die zum entsprechenden Drucker, nurnoch die entsprechenden Patronen, Zubehöre und Garantien anzeigen lassen soll.
Bin nicht sicher, ob es so gehen würde, wie erstmal "hingerissen" im Bild:

Danke vorab für Eure Ideen und konstruktiven Beispiele/Ideen!


Wie gesagt, ich habe gerade einen Knoten im Schädel :-[

Sie dürfen in diesem Board keine Dateianhänge sehen.

AstraDyne







Korrigierter Entwurf

Sie dürfen in diesem Board keine Dateianhänge sehen.

AstraDyne

Ergänzung....:
tblKunden zu tblKontaktKD habe ich auf 1:1 Beziehung gesetzt mit den Feldern IDKD zu IDKontakt.

AstraDyne

Hallo nochmal an alle,
ich habe nun schonmal ein Formular angelegt, welches erstmal alles enthält, was als Ergebnis dabei herauskommen soll(te), um mein erstes Posting vielleicht klarer zu machen(las Foto mit eingefügt hier)
Das mit den einer der Beziehungen (wo ich den Knoten im Kopf habe) hat mich da vor die ersten Probleme gestellt, nämlich: Die Zubehör Auswahl, die für mehrere Geräte in Frage kommt.
Dazu Frage A:
Ob ich da noch eine weitere Beziehung zu den existierenden Tabellen zusätzlich erstellen kann...?( wegen Einfügen weiterer pot.Teile, die für mehrere Geräte verwendet werden können)...einfach eine weitere Beziehung 1:1 zwischen Zubehör und Drucker? oder mit Foreign Key etwas? oder doch händisch? (so habe ich es jetzt gelöst, aber das ist ja nicht im Sinne des Erfinders)
Nun zu den weiteren Fragen (die auch Knoten im Kopf gemacht haben und auf dem Screenshot numeriert sind):
Der Screenshot ist ein Einzelformular mit 4 Subformularen
Frage 1:
Ich würde gern dort die Summen der einzelnen Spalten ausgeben lassen.Hier im Forum und auch auf google habe ich mehrfach schon gelesen,dass man berechnete Felder nicht weiter berechnen kann, bzw. dass man nicht aus mehreren Tabellen(aus Ufos z.B.) summieren kann.
Wie kann ich es nun programmieren/hinbekommen, dass diese Summen dort ausgegeben werden? Mit Hilfe einer Zusatztabelle? Wenn ja, wie?
Oder muss ich das in Excel zusammenstellen/-rechnen lassen und dann als Exceltabelle im Formular einbetten?
Frage 2:
Wie kann ich einen Button erstellen, der aus den 4 Ufos dann ALLE Mengenfelder wieder zurück auf Null setzt, bzw. das Feld leert und da alle gleichzeitig?
Bisher werden die Summen oben in den Summenfeldern unter 1 erst angezeigt, wenn man den Aktulisieren Button drückt und nicht schon, wenn man eine Eingabe gemacht hat.
Muss ich mich hier in VBA reinknien? (Da hab ich nicht wirklich den Plan von...)
Oder kann ich da ebenfalls einen Button setzen und aus den Access vorgegebenen Steuerelementen einen verwenden? Wenn ja, welchen?
Frage 3:
Wie kann ich ein Feld setzen, das den Gewinn "eingebbar" macht und dann auf alle 4 Ufos anwendet?
Beispielsweise : 20% , 22%, 30% und so weiter.......
Ist das auch eine Aufgabe für VBA? Oder ausschließlich Excel? Oder muss ich da einzeln in den Ufos noch ein Feld setzen? Hat da jmd von Euch eine Idee?

Ich bedanke mich schon vorab für Ideen und Denkanstösse
Grüße,
Astra

AstraDyne

#7
::)

AstraDyne

Ohman, das tut mir leid, das ist jetzt dreinmal drinnen....BITTE an den Moderator: zwei Screenshots bitte löschen!
Mir wurde immer ein Fehler angezeigt und das Bild war weg, daher hatte ich es immer wieder reingeladen. Das war keine Absicht

MzKlMu

#9
Hallo,
vergiss mal die Formulare. Das Datenmodell ist noch ziemlich unausgereift.

So wie das jetzt ist, kannst Du im Angebot nur einen Drucker anbieten, ist das realistisch ?
Ebenso nur einen Typ Patronen. Die gleiche Patrone kann doch an mehreren Druckern passen, das geht bei Dir nicht.
Das gleiche gilt für das Zubehör. So wie Du das jetzt hast, kann ein Drucker nur ein Zubehör haben.
Auch das mit den Preisen funktioniert so nicht, die Preise unterliegen ja einer Veränderung, wie soll das bei deiner Struktur gehen. Wenn Du den Preis eines Zubehörs änderst, ändern sich auch die Preise vergangener Angebote und das darf nicht sein.
Die Angebotstabelle ist auch falsch. Die Angebotstabelle darf nur Felder enthalten die sich auf das eigentliche Angebot beziehen. Dann brauchst Du eine weitere Tabelle mit den Details zum Angebot. Darin ist jede Position ein eigener Datensatz.
Bietest Du z.B. einen Drucker an mit Patronen und einem Netzteil, so sind das dann 3 Datensätze in der Detailtabelle. Mit FS zu Angebot, FS zum Drucker, FS zum Zubehör und FS zu den Patronen. Den Preis musst Du dann den Stammdatensätzen entnehmen und redundant in der AngebotDetailtabelle speichern.
Die Patronen und das Zubehör würde ich in einer Tabelle führen.
Die Patronen sind ja auch Zubehör. Wenn dann je nach Art des Zubehörs Felder leer bleiben würde ich hier in Kauf nehmen.

Ich sehe hier auch keine einzige 1:1 Beziehung, das wird alles 1:n.

Auch die Kontakte sind in der Form ungeeignet.
Du brauchst eine Tabelel für die Kontaktarten (Tel, Mobil, Fax, usw.) in je einem Datensatz. In einer n:m Zwischentabelle werden die Kontaktarten einem Kunden zugeordnet. In diese Tabelle kommt dann auch der eigentliche Eintrag. Das gilt sinngemäß auch für die Kontaktarten der Sachbearbeiter. Siehe hierzu ein Bild.
Die Firmentabelle wären dann die Kunden.

Da gibt es noch viel zu tun. So wie ich das sehe, ist (fast) keine der Tabellen wrklich brauchbar.

Du musst Du noch mal ran.
Gruß Klaus

AstraDyne

#10
Zitat von: MzKlMu am Februar 26, 2024, 15:54:12Hallo,
vergiss mal die Formulare. Das Datenmodell ist noch ziemlich unausgereift.

So wie das jetzt ist, kannst Du im Angebot nur einen Drucker anbieten, ist das realistisch ?
Ebenso nur einen Typ Patronen. Die gleiche Patrone kann doch an mehreren Druckern passen, das geht bei Dir nicht.
....
Du musst Du noch mal ran.


Hallo Klaus,
Danke für die Ausführungen!
Das war ja auch die Frage bei meinem Eingangspost...genau diese "Mit"Ideen der Profis hier wollte ich brainstormen"- wie Ihr das machen würdet. Du hast mir super Vorschläge gemacht , Danke dafür !  :)

Zu dem Drucker und ein Typ Patronen und ein Typ Zubehör:
 Doch, genau DAS ist gewollt (zumindest so wie ich deine Ausführungen verstanden habe).
Das jetzige Konstrukt macht genau, was es soll in den Unterformularen, nämlich per EINEM Drucker das dazu gehörige Equipement auflisten. Das funktioniert so ganz gut. Bei der Drucker Auswahl im Oberen Bereich werden lediglich die passenden Patronen gelistet und das passende Zubehör und das passende Garantie Modell (und NICHTS Anderes).
Man kann links in den Spalten in Menge eine 1 setzen (je eine der Patronen auswählen, also in einem Drucker dann vier Patronen mit untesch.Farben ) bei den gewünschten Teilen und die summierten Preise (aus je der Rubrik Patronen , Rubrik Drucker, Rubrik Zubehör, Rubrik Zubehör) stehen oben, nur eben leider nicht TotalOverall zusammengerechnet (Das war eine der Fragen aus dem zweiten Fragepost).

Mit den Preisen hast Du Recht. Das kann ein Problem sein, darüber hatte ich noch nicht nachgedacht.
Bisher ist es aber so, dass die Modelle einmal im Jahr eingespielt werden und sich daran nichts ändert bis zum Folgejahr, daher hatte ich mir darüber noch keinerlei Gedanken gemacht.


Mit den Kontaktdaten hate ich noch gar nichts eingetragen und im Angebot/Angebotstabelle auch nicht. Und auch noch nicht ausprobiert. Wie erwähnt hatte ich zunächst erstmal "grob zusammengeschmissen" , denn bei meinem ersten Post existierte noch keine einzige Tabelle. Ich hatte bei den Kontakten gedacht, dass es so richtig ist, die Kommunikation "auszulagern" in eine andere Tabelle. Dann muss ich den Schlüssel da nochmal ändern.

Danke schonmal für deine Ausführungen, da hilft mir das Ein oder Andere schon weiter.
Die Funktion mit dem Angebot aus dem bisherigen Formular hatte ich noch nicht aufgegriffen/gestartet auszuprobieren.

Die Patronen und das Zubehör sind deswegen getrennt in Unterformularen/Abfragen, weil ich es gesondert ausweisen wollte und keine Ahnung habe, wie ich sonst die dedizierte Abfrage daraus machen sollte aus EINER Tabelle heraus, um halt nach Druckern zu filtern und dann NUR und AUSSCHLIEßLICH die zugehörigen Sachen gelistet zu bekommen. Man sagt ja, dass man die Tabellen aufs kleinste atomisieren soll. Daher hab ich das auch für die Rubriken Drucker, Patronen, Zubehör und Garantie gemacht.
Wie man hier jetzt die Patronen zu den verschiedenen Druckern und das Zubehör zu den verschiedenen Druckern mit Beziehung zuordnet und die Beziehung setzt, das hat halt den Knoten im Kopf verursacht. Also, wie das dann aussehen soll. :-\ .
Ich stehe wie so ein Ochse vorm Berg  :(

Im Moment weiss ich nicht, in welche Beziehungen oder Tabellen ich es sonst aufteilen muss, um die gewünschte Auflistung wie beschrieben dann zu bekommen

Wie gesagt: Ich bin für Anregungen sehr sehr dankbar !Das hilft mir weiter





AstraDyne

 ...Ach so, zu dem Sachbearbeiter: Es gibt derzeit nur Einen und das wird auch - voraussichtlich- so bleiben, denn dieses Datenbankmodell mit der Angebotserstellung soll einem Freund von mir helfen, die Angebote schneller und übersichtlicher erstellen zu können, denn bisher wühlt er sich durch unübersichtliche Word-Dokumente und Pivottabellen.
und zu der Angebotsvariante: Das Angebot unfasst immer nur EIN Druckersystem ( es wurde bisher nie mehr als ein Druckersystem angeboten, also a la : Der Drucker mit dem Zubehör und der andere Drucker mit den Patronen und dann nochmal fünf Stück von der anderen Sorte Druckern...).
Die Angebote werden bisher mit einem unfassbar langen Beschreibungstext erstellt (Ein Drucker mit vier Patronen= 3-4 DIN A4 Seiten) und der soll wegfallen und NUR zeigen: Der Drucker, die Patronen, das Zubehör, der Preis- Netto, UST, Brutto...
Allerdings soll durchaus ein zweites Angebot als Vergleich erstellt werden können.
In einem Bericht KANN dann vielleicht das Eine zum Anderen nebeneinander gestellt werden so als Preisvergleich ....Bisher ist das aber alles untereinander. Bedeutet: Bei zwei verschiedenen Druckersystemene, die angeboten werden, sind das mal schnell 5-6 DIN A 4 Seiten und der Kunde muss sich dann zwischen den Seiten die Preise aus der Unterbeschreibung nochmal selbst herleiten...das ist nicht nur unübersichtlich, sondern häßlich und schlicht nicht nutzbar

MzKlMu

Hallo,
Zitatalso in einem Drucker dann vier Patronen mit untesch.Farben )
Und wie willst in dieser Tabelle z.B. zu einem Drucker 4 Patronen erfassen mit ggf. unterschiedlichen Preisen ? Du hast ja auch nur eine Preisspalte.
Zitatdaher hatte ich mir darüber noch keinerlei Gedanken gemacht.
Das musst Du aber, das Intervall der Änderungen spielt keine Rolle. Bei neuen Preisen dürfen sich die Preise in den vorherigen Angeboten nicht ändern.
ZitatIch hatte bei den Kontakten gedacht, dass es so richtig ist, die Kommunikation "auszulagern"
Das ist richtig. Bei meinem Vorschlag (siehe Bild in #9) sind die Kontakte auch ausgelagert, aber flexibler.
ZitatDie Patronen und das Zubehör sind deswegen getrennt in Unterformularen/Abfragen, weil ich es gesondert ausweisen wollte
Die kannst Du auch gesondert ausweisen wenn diese in einer gemeinsamen Tabelle sind. Du brauchst nur ein Kennzeichen in der Tabelle ob Zubehör oder Patronen. Und filtern kannst Du auch, völlig problemlos. Es wird sogar einfacher, weil alles in einer Tabelle ist. Auch verschiede Unterformulare (wobei ich denke, dass die nicht sinnvoll sind) kannst Du dann auch einrichten.

Gruß Klaus

AstraDyne

Hallo Klaus,

Danke für das konkrete Beispiel zu den Kontakten, das werde ich mal so versuchen.

Zitatalso in einem Drucker dann vier Patronen mit untesch.Farben )Und wie willst in dieser Tabelle z.B. zu einem Drucker 4 Patronen erfassen mit ggf. unterschiedlichen Preisen ? Du hast ja auch nur eine Preisspalte.


Also, so wie ich es jetzt habe, zeigt das Formular/die Abfrage seltsamerweise  :o  diese Patronen zu dem Drucker separat an und auch die verschiedenen einzelnen Preise und rechnet das aus (wie in dem Screenshot des Formulars zu sehen ist)......zum Beispiel: Drucker X der Preis und Patronen 4 Stück= der Preis für 4 Patronen Gesamt....ich glaube aber, ich mache einen Denkfehler oder hab das nicht richtig verstanden, was du meinst ... ::)

ZitatDas ist richtig. Bei meinem Vorschlag (siehe Bild in #9) sind die Kontakte auch ausgelagert, aber flexibler.
Das ist mir auch lieber, daher werde ich deinen Vorschlag so übernehmen mit meinen gewünschten Daten

ZitatDie kannst Du auch gesondert ausweisen wenn diese in einer gemeinsamen Tabelle sind. Du brauchst nur ein Kennzeichen in der Tabelle ob Zubehör oder Patronen. Und filtern kannst Du auch, völlig problemlos. Es wird sogar einfacher, weil alles in einer Tabelle ist. Auch verschiede Unterformulare (wobei ich denke, dass die nicht sinnvoll sind) kannst Du dann auch einrichten. 

Und genau hier ist mein Hauptproblem: ich bekomme da die Abfrage dann nicht hin (wenn alles in einer Tabelle ist), so dass er mir nur und ausschließlich die Sachen zeigt, die nur zu einem Drucker gezeigt werden sollen, bzw. das ginge ja noch mit Kriterium in der Abfrage und dem Kennzeichen zu dem Drucker......aber, sobald ich dann die Abfrage stellen soll, dass die Patrone oder das Zubehör AUCH für Drucker x, x oder z sein soll und die Datenbank dann UMGEKHRT zu dem anderen Drucker auch NUR diese Patrone zuordnen/anzeigen lassen soll, dann knotet mein Hirn.

Ich nehme an, dass du das hier meinst, wenn ich dich richtig verstanden habe:
Die gemeinsame Tabelle  hat eine ID und eine weitere (als FK) für eine Kategorie wie z.B. Zubehör,Patronen,Garantie....und hier dann als n:m..?! zu dem entsprechenden Drucker? Oder jeweils als 1:n ?
Hier ist mir aber nicht klar, welcher Schlüssel in welcher Tabelle Fremdschlüssel, 1:1 oder n:m haben soll oder welche Gruppierung in welcher Tabelle mit drin steht.  :-X  :-\

Über diese Variante hatte ich im Vorwege nachgedacht, diese aber verworfen, weil man ja Tabellen so weit wie es geht normalisieren und atomisieren soll. Daher hatte ich das in mehrere Tabellen rein geworfen.
Grundsätzlich sehe ich es wie du, dass dann Felder die leer sind (weil alles in einer  gemeinsamen Tabelle steht) egal wären.
Ich sitz gerade wie's Karnickel vor der Schlange bei den Drucker/Patronen/Zubehör/Garantie- Verwicklungen ;D
Würdest Du die Garantie auch mit in die Tabelle machen? Oder eher diese Aufteilung:

tblDrucker
tblZubehoer(Patronen und Zubehör)
tblGarantie
tblKunden
tblKommunikation
tblSachbearbeiter
tblAngebote
tblPreise


Daher hatte ich eben diesen Post aufgemacht für genau diese Anregungen.... Da bin ich sehr sehr glücklich und dankbar für Deine Hinweise!DANKE,DANKE!   ... der Knoten ist leider noch nicht vollständig aufgelöst, aber ich sitze schon an einem anderen Entwurf und hoffe, dass ich den Entwurf dann hier posten kann zum "drüber schauen" und evtl.verbessern

Viele Grüße,einen schönen Abend Dir/Euch allen,
Astra



AstraDyne

Hallo Klaus ,
das hatte ich vergessen, noch zu erwähnen:

Zitat
Zitatdaher hatte ich mir darüber noch keinerlei Gedanken gemacht.

Das musst Du aber, das Intervall der Änderungen spielt keine Rolle. Bei neuen Preisen dürfen sich die Preise in den vorherigen Angeboten nicht ändern.




Generell bin ich da bei dir, das stimmt.
Hier ist es nur so, dass mit den neuen Modellen die neuen Modelle "ihren" eigenen Preis haben und die Alten ganz rausgenommen werden und nicht mehr angeboten werden. Deshalb hatte ich das mit geänderten Preisen vernachlässigt und mir (noch) keine Gedanken dazu gemacht...