Access Datenbank für Ausbildungsberufe
Hallo,
ich habe folgendes Problem:
Nach langem Überlegen und Probieren hänge ich an den Berufen mit Fachrichtungen fest. Und zwar, in der Datenbank sollen jeden Beruf mehrere Fachrichtungen zugeordnet werden. Bedingung, es sollen keine Redundanzen oder leere Datensätze in der Tab vorhanden sein.
Ich habs mit Abfragen probiert, das wird aber verdammt aufwendig da es 127 Berufe gibt, es hat nich jeder Beruf eine Fachrichtung, aber ungefähr 30 Berufe haben ne Fachrictung.
Außerdem hat nicht jeder Beruf nur eine Fachrichtung sondern teilweise sogar 5.
Wie kann ich es "am einfachsten" machen, für die Benutzer?
Bitte um Hilfe....
Danke...
Antwort schreiben
Antwort 1 von OmaDuck vom 08.08.2019, 16:41 Options
Hallo,
das ist ein klassischer m:n Fall. Du brauchst eine Zwischentabelle in der Du jedem Beruf eine Fachrichtung zuordnest.
Bsp.:
Tab. Berufe
Id
Text
Tab. Fachrichtungen
ID
Text
Tab. Zuordnung
ID
Berufe.ID
Fachrichtungen.ID
In der Tabelle Zuodnung kann dann jeder Beruf, aber auch jede Fachrichtung, mehrfach vorkommen
Gruß
OmaDuck
Antwort 2 von Datenbankler vom 09.08.2019, 08:35 Options
aber es sollen ja eben nicht fachrichtungen mehrfachvorkommen, d.h. keine duplikate, sondern einem beruf sollen bspw. 5 fachrichtungen zugeordnet werden, sollte ich diese "mehrfach fachrichtungen" in nem nachschlage feld unterbringen? was auch nicht so funzt.....
oder mit nem unterdaten blatt...
bitte um hilfe
cu
Antwort 3 von Teddy7 vom 09.08.2019, 08:47 Options
Du hast ja 2 Tabellen: Berufe und Fachrichtungen - wobei in tblFachrichtungen der Beruf nochmal als Schlüssel steht.
Also machst Du ein Formular mit Datenquelle Berufe.
Da soll man z.B. über ein Kombifeld den Beruf auswählen können, den man pflegen oder ändern will, bzw. einen neuen Beruf eingeben.
In dieses Formular hängst Du ein Endlos-Unterformular mit Datenquelle Fachrichtungen, verknüpft mit dem Hauptformular über den Beruf. Hier werden dann alle zu dem Beruf gehörenden Fachrichtungen angezeigt.
Wichtig ist, daß man bei Neueingaben dafür sorgt, daß das Feld Beruf in der tblFachrichtung aus dem Feld Beruf im Hauptformular gefüllt wird (dann muß es nicht jedesmal mit erfaßt werden).
Gruß
Teddy
Antwort 4 von Datenbankler vom 09.08.2019, 08:57 Options
in der Tab Fachrichtungen stehen nur die Fachrichtungen, ich hab jetz mal n feld mit Berufe angelegt soweit so gut.
Ich klär euch mal auf, was noch in der DB für Tab sind.
einmal die Berufe Tab mit Feld Berufe, Berater, Fachrichtungen, Berufsschule, Dauer, weitere Informationen, Zwischenprüfung, Abschlussprüfung.
Dann eine Tab Berater mit Feld Berater-Nr, Ausbildungsberater, Telefon, Email.
Dann die besagte Tab Fachrichtungen mit Feld Fachrichtungen.
Und eine Tab Berufsschule mit Feld Berufsschule, Straße, Postleitzahl, Ort, Ansprechpartner, Schulleiter/-in, Stellvertreter, Telefon, Fax, email, Internetadresse.
so...das waren sie alle, ich werd den Vorschlag von Teddy mal gleich ausprobieren, den Vorschlag von OmaDuck hab ich nicht ganz verstanden mit den IDs...trotzdem Danke.
Antwort 5 von Datenbankler vom 09.08.2019, 09:32 Options
@ Teddy
ich kann doch gar nicht in der Tab Fachrichtungen das Feld Berufe als Primär schlüssel festlegen....steht doch gar nix drinne
Antwort 6 von Teddy7 vom 09.08.2019, 10:07 Options
Das muß aber gefüllt sein/werden, weil Du sonst keine Verbindung Beruf/Fachrichtungen herstellen kannst.
Von Schlüssel in der Tabelle hab ich nix gesagt !
Antwort 7 von RalfH vom 09.08.2019, 10:09 Options
Hallo,
Was Teddy meint ist, das Du ja eine Verknüpfung brauchst, damit Access die diversen Fachrichtungen auch einen Beruf zuordnen kannst. Das nennt man Relation.
Beispiel:
Tab Berufe
Berufs_id = 1
Beruf: Lackierer
Berufsbeschreibung: blabla
Tab Fachrichtung
Fachrichtungs_id=1
Zitat:
Berufs_id: Hier kommt nun der zu verknüpfende Beruf rein.
Fachrichtung: Maler und Lackierer
Tab Fachrichtung
Fachrichtungs_id=2
Zitat:
Berufs_id: Hier kommt nun der zu verknüpfende Beruf rein.
Fachrichtung: Fahrzeuglackierer
Nun wird im Hauptformular der Beruf LACKIERER angezeigt und im Unterformular die 2 dazugehörigen Fachrichtungen.
Hier kannste Du mal nachlesen:
RelationenGruß Ralf
Antwort 8 von Datenbankler vom 09.08.2019, 10:10 Options
" Du hast ja 2 Tabellen: Berufe und Fachrichtungen - wobei in tblFachrichtungen der Beruf nochmal als Schlüssel steht."
damit hast du doch gesagt, dass in der Tab Fachrichtungen der Beruf als Primärschlüssel definiert is....oder was soll das heißen?
Antwort 9 von Datenbankler vom 09.08.2019, 10:56 Options
Guter Stoff Ralf, aber nicht grad einfach....
danke.
Zurück zur DB, also mach ich jetz ne neue Tab mit den Namen ID. Mit Berufe_ID und Fachrichtung_ID, die beiden als Primärschlüssel, dann verknüpf ich das feld Berufe_ID mit der Tab Berufe, über das Feld Berufe.
Dann schnapp ich mir die Tab ID, verknüpfe das Feld Fachrichtung_ID mit dem Feld aus der Tab Fachrichtung, soweit in Ordnung?
danke
Antwort 10 von Datenbankler vom 09.08.2019, 11:14 Options
ich versteh nich, wie dass gehen soll.
1. es sind ca. 127 berufe
2. es sind ca. 68 Fachrichtungen
wie soll ich dass machen, dass über die Tab IDs den Berufen die richtigen Fachrichtungen angezeigt werden??
Is das dass Prinzip "mach ne Tabelle in der machst 2 spalten mit Laufenden Nummern, und diese Nummern werden Primärschlüssel"?
Wenn das so ist, is es doch einfach....
Hoffe ich habs richtig verstanden...
danke
Antwort 11 von Teddy7 vom 09.08.2019, 11:33 Options
Schlüssel hat nix mit Primärschlüssel zu tun.
Die Tabellen sollten so aussehen
tblBerufe:
id1 autowert primärschlüssel
Beruf text
....sonstige Felder zum Beruf......
tblFachrichtung:
id2 autowert primärschlüssel
Beruf text
Fachrichtung text
....sonstige Felder zur Fachrichtung......
ODER SO
tblBerufe:
id1 autowert primärschlüssel
Beruf text
....sonstige Felder zum Beruf......
tblFachrichtung:
id2 autowert primärschlüssel
id1 long integer
Fachrichtung text
....sonstige Felder zur Fachrichtung......
Die Verknüpfung zwischen den beiden Tabelln macht man erst in einer Abfrage oder in Formular/Unterformular.
Antwort 12 von Datenbankler vom 09.08.2019, 11:48 Options
Danke Teddy....schwere Geburt mit der DB :)
habe soweit die Tabellen mit autowerten versehen.
Jetzt sollte ich die Abfragen oder das Formular/Unterformular starten?
Warum macht man die Verknüpfungen außerdem erst bei der Abfrage bzw. Formular/Unterformular?
Antwort 13 von Datenbankler vom 09.08.2019, 12:45 Options
wenn ich die beiden Tabellen verknüpfen will, also die Berater Tabelle mit Berater_ID Primärschlüssel und die Tabelle Berufe mit Berufe_ID Primärschlüssel, dann versucht er ne 1:1 verbindung aufzubaun, was ja überhaupt nicht vom logischen her stimmen kann, da ein berater ca. 20-30 berufe betreut.
Dann sag mir doch bitte Teddy, wie ich die Tabellen verküpfen soll?
Danke.
Antwort 14 von Teddy7 vom 09.08.2019, 13:18 Options
Man kann bereits die Tabellen miteinander verknüpfen. Aber das kann zu Problemen führen und ist überflüssig, es sei denn man will eine automatische Löschweiterleitung haben.
Wenn Du es also so haben willst, daß wenn ein Beruf gelöscht wird automatisch die zugehörigen Fachrichtungen gelöscht werden, dann solltest Du eine Verknüpfung bei den Tabellen einrichten.
/////
Berater-Id mit Berufs-Id verknüpfen ist natürlich Schwachsinn.
Eigentlich solltest Du jetzt schon wissen, daß man bei einer 1:n Verbindung eine zusätzliche Tabelle braucht, in der der Berater(oder seine ID) und die zugehörigen Berufe(oder deren id) gespeichert werden.
Antwort 15 von Datenbankler vom 09.08.2019, 13:24 Options
ich hab ja ne tab für die ganzen IDs.
Tab ID mit Feldern Berufe_ID, Berater_ID, Berufsschule_ID, Fachrichtungen_ID.
Antwort 16 von Datenbankler vom 09.08.2019, 13:26 Options
die ganzen restlichen "informationen" wie etwa die Orte der Berufsschule oder der Ansprechpartner, die werden ja auch "sozusagen" mit verknüpft, ich mein, dass ich an die infos rankomme über das formular später, is doch richtig oder?
Antwort 17 von RalfH vom 09.08.2019, 13:43 Options
Hallo Datenbankler,
Es gibt Programmierer die Verknüpfungen (Relationen)erst zur Laufzeit, z.B. bei einer Abfrage erstellen. So wie es Teddy dir schreibt, und es ist nicht verkehrt !
Allerdings bin ich der Meinung, gerade dann, wenn man am Anfang seiner Datenbankler Karriere ;-) steht, sollte man es so machen, wie es die Gelehrten beschreiben.
Hier mal ein wenig Grundlagen Wissen
Datenmodellierung:
Der Datenmodellierung kommt im Prozess der allgemeinen Anwendungsentwicklung eine überragende und grundlegende Bedeutung zu, denn ohne eine konsistente Datenstruktur wird eine Datenbank auf dauer nicht widerspruchsfrei funktionieren.
Bei der Datenmodellierung kommt es darauf an, Sachverhalte von Ausschnitten der realen Welt in einem logischen konsistenten Datenmodell abzubilden.
Das ERM Model Entity-Relationship-Modell
Das wird nicht nur in Access benutzt sondern in allen Relationalen Datenbanken (Ms Access,MS SQL, PostgrSQL, usw)
Entity: Entität Eine Entität repräsentiert Objekte der realen Welt z.B ( Kunden,Berufe,Personal, Kategorien,Bestellungen, usw.)
Jede Entität wird durch eine Tabelle wiedergegeben.
Entitäten besitzen Attribute ( Eigenschaften).
Zum Beispiel hat die Entität "Personal" die Eigenschaften Name,Nachname,Anrede, usw.) Eigenschaften werden also in der Tabelle als Felder wiedergegeben.
Beziehungen
Eine Beziehung drückt den Zusammenhang zwischen zwei Tabellen ( Entitäten) aus.
Man Unterscheidet zwischen drei Beziehungstypen:
1:n ( Ein Datensatz der Tabelle A, passt zu vielen in der Tabelle B)
m:n (Ein Datensatz der Tabelle A passt zu vielen in B, und von Tabelle B zu vielen in Tabelle A)
1:1 ( Ein Datensatz der Tabelle A, passt zu höchstens einem Datensatz der Tabelle B)
Der wesentliche Grund für die Aufteilung der Daten in verschiedenen Tabellen ist die Vermeidung von überflüssigen Daten ( Redudanzen), die
a) vermehrt Speicherplatz belegen würden
b) dadurch die performance Bremsen und
c) die zu Wiedersprüchen in den Daten führen können und somit auf Dauer den gebrauch einer Datenbank minimieren bzw. unmöglich machen.
Wichtig ist, das in den Tabellen Primärschlüsselfelder definiert werden.
Ein Primärschlüssel ein eindeutiger Wert zu einem Datensatz, quasi der Fingerabdruck !
Das heißt, wenn ich in Tabelle Fachrichtung den ID Schlüssel des Berufes unterbringe ( dass nennt man Fremdschlüssel),
Und ich jetzt ein Formular Berufe erstelle, in diesem Formular ein EnhdlosUnterformular Fachrichtungen erstelle, werden beide Formulare mit dem Schlüssel Berufs_ID verknüpft. Und die entsprechenden Daten werden Dir angezeigt, so wie in Antwort 7 beschrieben.
Das ganze wäre aus meiner Sicht eine 1 zu N Verbindung
1 Beruf kann x beliebige Fachrichtungen haben ( siehe z.B. Kaufmännische Berufe oder Ingeneure).
Gruß Ralf
Antwort 18 von RalfH vom 09.08.2019, 13:53 Options
sorry, Antwort 3 von Teddy vergessen, auch Klasse beschrieben.
Gruß Ralf
Antwort 19 von Datenbankler vom 09.08.2019, 13:57 Options
@ RalfH
Top, Top geschrieben .....
Jetzt erscheint mir vieles Klarer.
Meld mich wenn se fertig is .
Danke an alle, die mir hier geholfen haben.
CU
Antwort 20 von Datenbankler vom 09.08.2019, 14:20 Options
@ RalfH
was meinst du mit " wenn ich in Tabelle Fachrichtungen den ID Schlüssel des Berufes unterbringe (dass nennt man Fremdschlüssel),"
was soll ich da machen? soll ich ne spalte machen mit autowert als laufende NR oder was?