online 1
gast (50)

/ Forum / Datenbanken

DatenbankenDatenbanken

Fragevon Datenbankler vom 08.08.2019, 15:19 Options

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:


Relationen
Gruß 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?

Ähnliche Themen

Access Datenbank 2000 mit Access 1997 öffnen
jam85385  02.05.2007 - 226 Hits - 1 Antwort

Datenbank von Works8.5 in Access umwandeln
knuti24  22.07.2007 - 55 Hits -

Rechnungskurs-Datenbank
ichhabeinefrage  02.08.2007 - 148 Hits - 7 Antworten

MS Access Datenbank vom Programmfenster lösen
Pydna  21.08.2007 - 65 Hits - 1 Antwort

ms access datenbank
Wayne  15.12.2007 - 182 Hits - 2 Antworten

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Mon Jan 26 01:23:17 2026