PDA

Vollständige Version anzeigen : Abbilden einer Organisationsstruktur


Stefan734
25.01.2008, 20:30
Hallo Access-Profis,

hier mal eine Frage, die -zumindest für mich- nicht so einfach zu beantworten ist.

Wie bilde ich in Access eine Org.-Struktur so ab, dass ich später mittels Abfragen die entsprechenden Mitarbeiter erhalte. Ein Beispiel...

Bereich 1
- Referat 1.1
-- Team 1.1.1
-- Team 1.1.2
- Referat 1.2
usw...

Am liebsten wäre es mir, wenn Mitarbeiter nur auf der untersten Ebene zuordnen werden müssten, aber eine Abfrage auf Bereich 1 alle Mitarbeiter aus allen Referaten und Teams liefert. Natürlich müssen die Leiter der Einheiten den oberen Einheiten direkt zugeordnet werden.

Die Zuordnung Mitarbeiter Gruppe habe ich schon-ist natürlich recht einfach.
Aber Gruppe - Gruppe (geschachtelt und leicht abfragbar):confused:

Bin für jede Idee / jeden Anstoß dankbar.

Gruß
Stefan

hcscherzer
25.01.2008, 20:46
Moin Stefan,
also Du hast vier Tabellen (tblBereich, tblReferat, tblTeam und tblMA).
Jede hat einen Primärschlüssel und in der jeweils darunterliegenden gibt es dazu einen Fremdschlüssel über den die Tabellen verknüpft sind:
tblBereich.ID -> tblReferat.Bereich_ID
tblReferat.ID -> tblTeam.Ref_ID
tblTeam.ID -> tblMA.Team_ID

Die Mitarbeiter sind den Teams zugeordnet. Eventuell gibt es in den drei oberen Tabellen noch Felder für die Leiter, die wiederum den ID's aus der Tabelle tblMA entsprechen.
Wenn Du eine Abfrage erstellst, in der alle vier Tabellen mit ihren JOIN's aufgeführt sind, ist es kein Problem, zu einem Bereich - per Filter - alle Mitarbeiter aufzulisten.

ebs17
25.01.2008, 22:18
Vielleicht ist auch das einen Blick wert:
Hierarchien/Baumstrukturen (http://www.dbwiki.de/wiki.php?title=Access_Bedienungsanleitung:_Hierarchien/Baumstrukturen/Treeviews_f%FCr_Anf%E4nger)

Stefan734
28.01.2008, 20:34
Hallo Hans-Christian und Eberhard,

die Idee mit den 4 Tabellen funktioniert, aber geht das auch etwas dynamischer. Die DB wird in den unterschiedlichsten Aufbauorganisationen eingesetzt, so dass es auch mehr oder weniger als 4 werden könnten.

Funktioniert eigentlich ein Verweis auf die eigene Tabelle (Art Rekursion)?

Der Baum ist auch nicht schlecht, muss mir aber noch die Datenhaltung näher ansehen. Die Darstellung kommt dann wahrscheinlich deutlich später.

Stefan

borisrisker
28.01.2008, 20:42
Hallo,
also ich würde den Baum kombinieren mit einer Tabelle "OrganisationsEinheitenArten". In dieser stehen die möglichen Arten, die eine OrgEinheit im Baum haben kann. Dann würde ich der Baum-Tabelle das Feld "OrgEinheitArt" hinzufügen, was auf die Tabelle "OrganisationsEinheitenArten" verweist.

Auf diese Weise hast du Flexibilität ...

Um Rekursion wirst du nicht herumkommen ... ich habe auf meinem Comp eine DB mit entsprechender Funktionalität, aber der Comp wartet auf seinen neuen Lüfter ...

Josef P.
28.01.2008, 21:06
Um Rekursion wirst du nicht herumkommen ...
... je nach Fall vielleicht doch. ;) (zumindest wenn du mir Rekursion das Darstellen des Baumes meinst. Rekursive Funktionsaufrufe sind in der "Datenbankwelt" nicht unbedingt performant, weil man damit die Stärke von Datenbanksystemen - Daten massenweise zu verarbeiten - nicht nutzt.

siehe: http://www.ms-office-forum.net/forum/showthread.php?t=224565

Stefan734
30.01.2008, 12:43
ui, ist einiges zu durchdenken...

Für mich ist es wichtig, dass ich im Ergebnis leicht (über Abfragen) an die mit den Mitarbeitern verknüpften Daten komme. Dies scheint mir auf den ersten Blick über eine VBA-Rekursion nicht der Fall zu sein.

Insofern gebt mir ein paar Tage, um die verschiedenen Varianten im Detail zu prüfen.

@Boris:
Sollte dein PC wieder Luft bekommen, interessiert mich deine eingebaute Flexibilität.

Gruß
Stefan

Stefan734
12.02.2008, 12:23
Hat doch etwas länger gedauert...

nested sets, scheint für mich der richtige Weg zu sein:top:

Leider habe ich nur eine Muster-DB gefunden, die anhand einer starren, exemplarischen Struktur das Prinzip erklärt. Schon nicht schlecht, aber mehr helfen würde mir eine Art FrameworkDB, aus der ich die wesentlichen CodeTeile benutzen kann.

Hat oder kennt jemand von euch ein derartige MusterDB?