Autor Beitrag
Xuxe
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 27



BeitragVerfasst: Do 02.02.12 13:09 
Hallo Leute!

Ich bin gerade dabei eine DB zu modellieren und ich stoße dabei aufgrund meiner Unerfahrenheit immer wieder auf Probleme. Meine Erfahrungen bezüglich Datenbanken beschränken sich auf die einsemestrige Veranstaltung "Datenbanken" während meines Studiums, bin also mit Begrifflichkeiten vertraut, habe aber keine praktische Erfahrung.
Ich beschreibe einfach mal um was es genau geht und womit ich so meine Probleme habe:

Ich arbeite in einer größeren Firma. Unter anderem ist die Firma in Abteilungen und die Abteilungen in Gruppen aufgeteilt. Mein Abteilungsleiter ist für die Workforce/Workload planung verantwortlich und macht dies mit einer Excel-Tabelle. Nun habe ich die ehrenvolle Aufgabe diese Excel-Tabelle in eine DB zu überführen und ein kleines Progrämmchen zu schreiben das die von ihm geforderten Funktionen erfüllt. In dieser Tabelle stehen Informationen zu:

-Mitarbeitern [ID, Name, Vorname], ein Mitarbeiter arbeitet in einer Gruppe, kann aber kurzfristig an eine andere Gruppe/Abteilung ausgeliehen werden
-Gruppen [ID, Gruppenbez.] (eine Abteilung besteht aus mehreren Gruppen)
-Studenten [ID, Name, Vorname], für Studenten gilt das gleiche wie für Mitarbeiter
-Externe Mitarbeiter [ID, Name, Vorname], für Externe gilt das gleiche wie für Mitarbeiter
-Full Time Equivalent kurz: FTE, das ist die Einheit in der die Workforce gemessen wird. Ein Mitarbeiter der 40 Std./W arbeitet entspricht einem FTE pro Monat (Mitarbeiter X hat einen 40 Stunden Vertrag. Im Monat März wird er vollzeit ohne unterbrechung arbeiten -> Mr. X zählt für Monat März mit einem FTE). Arbeitet ein Mitarbeiter nun weniger als 40 Std./W, wird er halt anteilsmäßig gezählt (z.B. 20 Std./W = 0.5 FTE)
-Monate
-Mitarbeiter die längere zeit abwesend sind (Elternzeit....)
-Mitarbeiter die temporär für eine Gruppe der Abteilung arbeiten bzw. in eine andere Abteilung geschickt werden
-Projekte (ID, Bezeichnung, Art)
-PSP-Elemente (PSP-Nr., Projekt-ID, start, Ende)Ein Projekt besteht aus mehreren PSP-Elementen.
-Workload (Anzahl der stunden, PSP-NR)

Zur besseren Visualisierung habe ich mal eine Excel Tabelle angehängt.
Meine Frage wäre jetzt: wie stelle ich es an das ich diese Tabellen reproduzieren kann?
Mein Ansatz ist auch in der Excel Tabelle enthalten, ich hoffe der ist soweit verständlich.

Bin für jegliche Hilfe dankbar!
Einloggen, um Attachments anzusehen!
Tilo
ontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 1098
Erhaltene Danke: 13

Win7 geg. WInXP oder sogar Win98
Rad2007
BeitragVerfasst: Do 02.02.12 13:51 
Hallo, Xuxe,

Erstmal kläre mal bitte was so grob in der Veranstaltung "Datenbanken" dran war damit wir deinen Kenntnisstand besser einschötzen können. Bei Datenbanken gibt es mindestens die folgenden 3 Themenbereiche.
1) Hardware -> Was für Datenbanken gibt es, wie Speichert eine Datenbank, ...
2) Datenbankabfragen -> was für "Datenbanksprachen" gibt, Aufbau selbiger, Queryplan, ...
3) Datenbankdesign -> Normierungsstufen, ERM, ...

Wissen über die Punkte 1) und 2) ist zwar nett beim Datenbankentwurf aber da dürftest Du eher weniger Einfluss drauf haben.
Wichtig ist Punkt 3). Den mit diesem Wissen kannst Du die Struktur deiner Tabellen/Objekte festlegen.

Punkte die ich beim Design der Datenbank beachten würde:
- Mitarbeiter, Externe und Studenten (als Realobjekte) sind aus Datensicht das gleiche (Name, Alter,..) und Unterscheiden sich Hauptsächlich in einem Punkt: Art der Anstellung
- Wo und wann ein Mitarbeiter arbeitet ist mindestens eine Tabelle, z.B. mit den Feldern MitarbeiterKennung, Arbeitsgruppenkennung, Anfang und Ende der Arbeit in der Gruppe)
- Vermeide als Zeitzuordnung die Kalenderwoche -> bringt nur Ärger beim Monats- und Jahreswechsel
- Berechnung des FTE pro jeweiligen Monat genauer Abklären (Urlaub, gesetzliche Feiertage,..)

Viel Erforlg beim Bau der DB!
Tranx
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 648
Erhaltene Danke: 85

WIN 2000, WIN XP
D5 Prof
BeitragVerfasst: Do 02.02.12 14:12 
Meinem Vorschreibe gebe ich Recht: Gewisse "Eigenschaften" wie Mitarbeiter, Externe und ... kann man in Eigenschaftsfeldern verarbeiten. Ansonsten am Besten so wenig wie möglich Tabellen, damit die SQL-Abfragen nicht zu kompliziert werden.

Wichtig sind wohl relationale Datenbankstrukturen (Hast Du das gehabt?, Denke, ja) Der Art:


Tabelle 1: ID, MATyp, Vorname, Name, Geburtsdatum ...

Tabelle 2: ID, MANr, ProjNr, Gruppe, Bezeichnung ...

Tabelle 3: ID, Projektbez, Anfang, Ende ...


Beziehungen

Tabelle 2 -> Tabelle 1 : MaNr -> ID
Tabelle 2 -> Tabelle 3 : ProjNr -> ID

ID : Primärschlüssel der Tabelle, eindeutig, ohne Duplikate!

So kannst Du z.B. die zu einer Gruppe gehörigen Projekte und Mitarbeiter zuordnen

Bei dem Aufbau der Datenbank könnte u.a. Access helfen. Da kannst Du mit der Datenbank spielen und teilweise gibt es auch schon fertige Assistenten für bestimmte Datenbankstrukturen.

In Delphi eine komplette Datenbank aufzubauen geht zwar auch, aber besser ist es, in einem Datenbankprogramm (Paradox, Access, ....) dies zu tun.

_________________
Toleranz ist eine Grundvoraussetzung für das Leben.
Xuxe Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 27



BeitragVerfasst: Do 02.02.12 16:11 
Also in der Vorlesung Datenbanken ging es hauptsächlich um Punkt 3. Ich weiß auch wie ich Prinzipiell vorgehen muss, aber irgendiwe ist es leicht schwieriger zu einem vorgegebenen Sachverhalt eine Datenbank zu erstellen als "denkt euch mal was für ne Bibliotheksverwaltung aus" wo man halt stark vereinfacht darstellt.

Ok, das mit der Art der Anstellung werde ich berücksichtigen. Ihr meint ja quasi eine Tabelle Mitarbeiter (oder Angestellte) in der ich eine Spalte "Art der Anstellung" habe in der ich eben festlege ob Festangestellt oder Student oder was auch immer...[Personalnr, Name, Vorname, Gruppe, Anstellungsart,...] so ungefähr?

Die Sache mit der Tabelle wo und wann ein Mitarbeiter arbeitet bereitet mir mit am meisten Kopfschmerzen, da ein Mitarbeiter erstmal fest einer Gruppe zugeordnet ist. Nur unter umständen werden Mitarbeiter an andere Gruppen "verliehen" und auch nur temporär, sie bleiben aber in ihrer eigentlichen Gruppe bestehen. Wärs da nicht sinnvoll ein Feld für die Gruppe (fest) zu haben und ein Feld Arbeitsgruppe in der die momentane Gruppe gehalten wird?

Um die FTE Berechnung habe ich mich schon gekümmert, meine Firma setzt eine 40 Std./W als Standard voraus und rechnet mit einer konstanten anzahl an Werktagen pro Monat/Jahr.

Prinzipiell sind mir wie gesagt die Grundlagen bekannt (Aufbau der Tabellen, Primärschlüssel, Fremdschlüssel, ERM, Normalisierung etc...). Mir gehts rein um die Modellierung. Da ich auch in Sachen SQL nur die Grundlagen kann fällt es mir auch schwer zu beurteilen ob ich aus meinem Datenmodell mit den entsprechenden Abfragen auch die Sichtweisen die ich benötige generieren kann...
Ich werd mal die Änderungen einarbeiten. Vielen Dank erstmal!

P.S. Kennt ihr das Programm "DBDesigner 4" und taugt das was?
olliterski
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 105
Erhaltene Danke: 2

Win7 64-Bit
D7 Ent.
BeitragVerfasst: Do 02.02.12 16:34 
user profile iconXuxe hat folgendes geschrieben Zum zitierten Posting springen:
Also in der Vorlesung Datenbanken ging es hauptsächlich um Punkt 3. Ich weiß auch wie ich Prinzipiell vorgehen muss, aber irgendiwe ist es leicht schwieriger zu einem vorgegebenen Sachverhalt eine Datenbank zu erstellen als "denkt euch mal was für ne Bibliotheksverwaltung aus" wo man halt stark vereinfacht darstellt.


Ein folgenschwerer Irrtum!
Wenn Du einen gegebenen Sachverhalt hast, wird dir sehr schnell klar, mit welchen Werten Du es zu tun hast und zu welchem 'Objekt' die Daten gehören! Damit hast Du eine sehr kurze Aufnahme des Sachverhalts und eine klare Zuordnung der Eigenschaften eines 'Objekts'!

'Denkt euch mal was aus...' ...wenn Du beim Ausdenken irgendetwas scheinbar triviales vergisst, hast Du gleich ein riesen Problem, weil deine Datenbank keinerlei Aussagekraft hat!

user profile iconXuxe hat folgendes geschrieben Zum zitierten Posting springen:

Die Sache mit der Tabelle wo und wann ein Mitarbeiter arbeitet bereitet mir mit am meisten Kopfschmerzen, da ein Mitarbeiter erstmal fest einer Gruppe zugeordnet ist. Nur unter umständen werden Mitarbeiter an andere Gruppen "verliehen" und auch nur temporär, sie bleiben aber in ihrer eigentlichen Gruppe bestehen. Wärs da nicht sinnvoll ein Feld für die Gruppe (fest) zu haben und ein Feld Arbeitsgruppe in der die momentane Gruppe gehalten wird?


Wäre am sinnvollsten! Aber nicht vergessen zu aktualisieren!
Was passiert aber wenn er hauptsächlich in Abt. A ist und jetzt an B ausgeliehen wird!? In B erzeugt er meinetwegen einen Auftrag. Muss im Auftrag festgehalten werden wer das gemacht hat aus welcher Abt.? Dann muss der temporäre Wert der Abt. mit in den Auftrag einfließen!
Kommt er nämlich wieder in Abt. A zurück und irgendwann guckt einer wer diesen Auftrag angelegt hat, steht die Frage im Raum:
Warum hat Mitarbeiter A aus Abt. A diesen Auftrag angelegt obwohl nur die aus Abt. B einen Auftrag anlegen dürfen?

user profile iconXuxe hat folgendes geschrieben Zum zitierten Posting springen:

Um die FTE Berechnung habe ich mich schon gekümmert, meine Firma setzt eine 40 Std./W als Standard voraus und rechnet mit einer konstanten anzahl an Werktagen pro Monat/Jahr.


Wenn auf dieser Basis etwas berechnet wird und es zu Abweichungen in der Basis kommt - andere Wochenstunden, abweichende Anzahl an Arbeitstagen pro Monat, etc.- halte ich das für potenziell gefährlich!


user profile iconXuxe hat folgendes geschrieben Zum zitierten Posting springen:
P.S. Kennt ihr das Programm "DBDesigner 4" und taugt das was?

Im Prinzip kann man da jedes verfügbare Programm nehmen. Es kommt eben drauf an, ob deine DB unterstützt wird und ob du mit der Bedienung des Programms zurecht kommst!

Viele Grüße

Oliver

_________________
Viele Grüße
Oliver
Xuxe Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 27



BeitragVerfasst: Do 02.02.12 17:59 
Zitat:
Ein folgenschwerer Irrtum!
Wenn Du einen gegebenen Sachverhalt hast, wird dir sehr schnell klar, mit welchen Werten Du es zu tun hast und zu welchem 'Objekt' die Daten gehören! Damit hast Du eine sehr kurze Aufnahme des Sachverhalts und eine klare Zuordnung der Eigenschaften eines 'Objekts'!


Ich meinte damit eher die Komplexität, also die Tatsache das in der Vorlesung alles sehr einfach gehalten wurde und ich jetzt hier vor Sachverhalten stehe die ich so noch nicht gesehen geschweige denn gelöst habe.
Ich habe mir halt gedacht das ich wie in der Vorlesung gelernt vorgehe:

1. Synthetische Datenmodellierung - Tabellen mit informationsrelevanten Basisattributen und Schlüsselkandidaten
2. Beziehungstypen, Kardinalitäten - Beziehungstypen / Kardinalitäten zwischen intuitiv gefundenen Tabellen
3. Vorläufiges Datenlexikon - Vorläufiges logisches Datenlexikon: Stoffsammlung zur Normalisierung
4. Normalisierung - Analytische Datenmodellierung: Normalisierung bis zur 3NF

Und naja, was soll ich sagen...ich komm schon auf Ergebnisse wie in der Vorlesung auch, aber in der Vorlesung ist es dabei geblieben, wir haben nie unsere geistigen Ergüsse in einer konkreten DB verankert noch mit dieser dann gearbeitet. Ob das was ich bis jetzt so gemacht habe auch so das Gelbe vom Ei ist und ob es in der Praxis funktioniert weiss ich halt nicht.
Aber auf diese DB baut ja alles auf, d.h. ich sollte schon was sinnvolle auf die Beine stellen.

Zitat:
Was passiert aber wenn er hauptsächlich in Abt. A ist und jetzt an B ausgeliehen wird!? In B erzeugt er meinetwegen einen Auftrag. Muss im Auftrag festgehalten werden wer das gemacht hat aus welcher Abt.? Dann muss der temporäre Wert der Abt. mit in den Auftrag einfließen!
Kommt er nämlich wieder in Abt. A zurück und irgendwann guckt einer wer diesen Auftrag angelegt hat, steht die Frage im Raum:
Warum hat Mitarbeiter A aus Abt. A diesen Auftrag angelegt obwohl nur die aus Abt. B einen Auftrag anlegen dürfen?


Also Aufträge oder ähnliches sind in der DB ja nicht vorgesehen.
Es geht rein um die Darstellung der Workforce/Workload. Also z.B. Mitarbeiter X ist in Gruppe Y. Er ist fest angestellt, arbeitet 40 Std./W und ist die letzten 3 Monate des Jahres 2012 in Gruppe Z. Also zählt er für Gruppe Y in den Monaten Jan-Sep mit 1 FTE und für Gruppe Z erhöt sich in den Monaten Okt-Dez die zu verfügung stehende Workforce um jeweils 1 FTE.
Was er alles wann an Arbeiten verrichtet ist hier egal.

Zu der FTE berechnung: Naja, die Wochenstunden werden ja anteilig berechnet, d.h. wenn ein Mitarbeiter weniger als 40 Std./W arbeitet (z.B. 20 Std./W) dann würde er halt pro Monat nur mit 0,5 FTE berechnet werden.
Die unterschiedliche Anzahl an Arbeitstagen pro Monat ist ja für alle gleich, und um einheitlich rechnen zu können ist es schon ok eine druchschnittszahl an Werktagen pro Monat zu grunde zu legen. Oder versteh ich dich grad nicht?
olliterski
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 105
Erhaltene Danke: 2

Win7 64-Bit
D7 Ent.
BeitragVerfasst: Do 02.02.12 22:49 
Kann sein dass ich da was überlesen habe....guck ich mir nachher nochmal genau an....muss erstmal die Raubtiere versorgen und ins Bett bringen...vorher hab ich keine Ruhe!

Aber was die Modellierung allgemein angeht habt ihr doch eigentlich einen guten ansatz gehabt.

Du wirst draußen keine Datenbank finden die NUR aus den Daten besteht (Objekte und ihre Eigenschaften). Mir ist jedenfalls bisher keine Datenbank vor die Finger gekommen, die nicht zusätzlich zu den normalen Daten nicht auch noch Parameter enthielt die den aktuellen Zustand einer Sache beschrieben haben!

Soll heißen, erst Datenbankdesign as usual und dann kommen Felder in die einzelnen Tabellen mit denen du jeden Eintrag steuern kannst!

Das ist ne Idee die sich die 'grossen' der Branche zu nutze machen - warum sollte man das nicht auch bei kleinen Datenbanken anwenden?

Viele Grüße

Oliver

PS: ...habe gerade nochmal einen genauen Blick auf deine Datei oben geworfen - ihr macht doch nichts anderes als eine Projektverwaltung oder? Welche Datenbank steckt denn da im Hintergrund? Würde dir für die Modellierung eine AccessDB weiterhelfen?

...???...???...???...???...

Warum willst Du denn REPRODUZIEREN?????
Etwa für jedes Jahr neue Tabellen???? :gruebel:

...also ich hab das jetzt einfach mal in Access gemacht und da sieht der Spass in etwa so aus wie im Anhang.

Durch das Hinzufügen der Jahreszahl brauchst Du die Tabellen nicht mehr zu reproduzieren.
Ich denke mal das war der Hintergrund deiner Frage nach Tabellen die sich reproduzieren lassen.

So aber hast Du auf jeden Fall das Jahr gleich mit dabei, kannst immer mit dieser einen Tabelle arbeiten und ihr habt auch gleich eine Historie in der Datenbank.

Das mit den Monaten hab ich jetzt einfach mal so aus deinem Rohentwurf übernommen. Man könnte sich an dieser Stelle auch auf 2 Felder beschränken - 1 Feld für den Monat und 1 Feld für die FTE´s. Ist halt nur die Frage wie ihr das später darstellen wollt. Es geht so oder so.

Vielleicht hab ich jetzt hier und da nicht genau auf die Datentypen geachtet und man muss auf jeden Fall noch mal über die Zuordnungen drüber gucken, aber ich denke das ist ein brauchbares Muster. Ich schick dir auch gerne die AccessDB zu, hab sie ja noch gespeichert. Ist aber ne 2010er Version!!!

Viele Grüße

Oliver

DB_Modellieren
Einloggen, um Attachments anzusehen!
_________________
Viele Grüße
Oliver

Für diesen Beitrag haben gedankt: Xuxe
Xuxe Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 27



BeitragVerfasst: Fr 03.02.12 13:39 
Zitat:
Soll heißen, erst Datenbankdesign as usual und dann kommen Felder in die einzelnen Tabellen mit denen du jeden Eintrag steuern kannst!


Das versteh ich grad nicht wirklich, kannst du mir das genauer erklären?



Hmm...also grundsätzlich ist es so, dass ich eine Anwendung zur verwaltung der Workforce/Workload schreiben soll.
Das ganze wird von den Gruppenleitern einer Abteilung und dem Abteilungsleiter benutzt.
Soll so ablaufen, dass die Gruppenleiter ihr Workforce pflegen und die Workload schätzen:

-Wievile Mitarbeiter habe ich in welchem Monat in der Gruppe?
-Wer davon ist Festangestellt, Leiharbeiter, Student, länger Abwesend (Elternzeit, etc...) oder ist aus einer anderen Gruppe kurzfristig ausgeliehen bzw. an eine andere Gruppe kurzfristig verliehen?
-Wieviel Stunden arbeitet jeder einzelne? (40Std./W entsprechen in einem Monat 1 FTE)
-Welche PSP-Elemente (quasi Kostenstelle bzw. Arbeitspaket, anhand des PSP-Elements weiß der Gruppenleiter welche Aufgaben von wann bis wann zu erledigen sind) sind meiner Gruppe zugeteilt?
-Wieviel Stunden pro Monat wird die meiner Gruppe zugeteilten Arbeit ca. in Anspruch nehmen?

Der Abteilungsleiter bekommt eine Liste mit der vom Projektmanagement geplanten Workload, diese muss er mit der von den Gruppenleitern geschätzten Zahlen abgleichen und synchronisieren. Diese geplante Workload wird dann in FTE umgerechnet und mit den zur verfügung stehenden Workforce abgegelichen. So kann er erkennen in welchem Monat zuviel, bzw. zuwenig Arbeit für die einzelnen Gruppen ansteht.

Bisher wurde das mit einer Excell-Datei gemacht, die sieht ungefähr so aus wie die Tabellen die ich in der Exceldatei dargestellt habe. Nun soll ich aber ein Programm schreiben das dass Ganze etwas automatisiert. Deshlab schrieb ich "reproduzieren", weil ich quasi diese Exceldatei 1:1 umsetzen soll. Nun kann ich ja nicht einfach den Aufbau der Tabellen aus dieser Exceldatei in meiner DB übernehmen. Mein Ansatz dazu ist ja dann auf dem anderen Tabellenblatt.

Mit den Monaten und den FTE ist das so ne Sache, dargestellt soll das ganze 1:1 wie in der Exceldatei:
Name | Vorname | Gruppe | Jan | ... | Dez
hans | Meier | G1 | 1 | ... | 1

So, ich habe jetzt mal anhand von olliterski's entwurf (vielen lieben Dank übrigens für deine Mühe!!) einen neuen Ansatz gemacht (siehe Anhang).

Vielen Dank!!!
Einloggen, um Attachments anzusehen!
olliterski
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 105
Erhaltene Danke: 2

Win7 64-Bit
D7 Ent.
BeitragVerfasst: Fr 03.02.12 15:57 
Hallo Xuxe,

sieht gut aus!
Was da aber noch fehlt ist die Verbindung zwischen Mitarbeiter und PSP-Element!

So wie Du es jetzt hast, kannst Du Projekte anlegen, jedem Projekt ein bzw. mehrere PSP-Elemente zuordnen (1:n) und für jedes PSP-Element die Zeiten hinterlegen.
Ausserdem kannst Du Mitarbeiter erfassen (Gruppe= Externe, Interne, Studis, etc.), die in verschiedenen Gruppen arbeiten können, aber immer nur in einer !
Und da die Zeiten direkt an der MA_ID hängen erfasst Du in der FTE-Tabelle immer nur die Zeit die ein MA während seiner Zugehörigkeit zu einer Gruppen geleistet hat.

1. Fallstrick: ein Projekt geht über mehr als ein Jahr - das kannst Du nämlich nicht mehr abbilden sondern nur von Jan-Dez eines Jahres!
2. Fallstrick: Wie willst Du die Soll-Zeiten (PSP_Monate) mit den IST-Zeiten (FTE-Monate) in Verbindung bringen?

Es ist nämlich so wie ich es mir schon dachte - in einer Projektverwaltung werden Projekte in kleine Aufgaben unterteilt (PSP), denen widerrum ein oder mehrere MA zugeordnet werden, die widerrum in gewissen Perioden Aufwände verursachen, die Du mit deiner Anwendung erfassen und später auch wieder darstellen sollst!
Und m.E. nach geht das mit deinem Entwurf nur sehr eingeschränkt! Eingabe JA, Ausgabe NAJA! *istnichtbösegemeint* ;)

Also DB-Entwurf:
Objekte (Tabellen)
- Projekt (ID,Name)
- PSP-Element (ID,Name,FK-Projekt,Sollzeit/Monat)
- Mitarbeiter (ID,VName, NName, FK_Art,FK_Gruppe,FK,A-Gruppe
- Gruppe (ID,Name)
- Arbeitsgruppe (ID,Name)
- Mitarbeiterart (ID,Name)
- Zeit (ID, Monat,SOLLIST,PSP_ODER_MA,PSP_MA_ID,Wert)

Beziehungen:

Projekt-PSP: 1:n
PSP-Mtarbeiter: n:m! (dadurch das ein MA vorrübergehend auch zu einer anderen Arb.-Gruppe gehören kann! -> Extratabelle mit n:1 und 1:n -> n:m = siehe meine Grafik -> PSPMA-Tabelle!)
usw.

An deiner Stelle würde ich dei REL_07 als Extratabelle aufbauen. d.h. aus einer ID für jeden Eintrag, Mitarbeiter und Arbeitsgruppe.
Wenn Du von dieser neu geschaffenen Tabelle einen Link auf das PSP-Element setzt, hast Du automatisch einen Bezug von Mitarbeiter zu PSP-Element und damit auch zwischen SOLL- und IST-Zeiten!

Wenn Du die Verbindung, wie auch immer sie aussehen möge, nicht machst, kriegst Du mit einem späteren Select entweder ein Kreuzprodukt oder Werte die in keinerlei Zusammehang stehen und somit nichts aussagen, weil Du die ID aus PSP_Monate und die ID aus FTE_Monate NICHT gleich setzen kannst!

Vielleicht hab ich da jetzt noch einen kleinen Denkfehler drin - was ich nicht ganz glaube - aber ich muss raus meine Raubtiere einsammeln!

Ich würde mir an deiner Stelle noch mal alle Daten aufschreiben die Du in der DB unterbringen musst und dann diese Daten dann den Tabellen zuordnen.

Viele Grüße

Oliver

PS: man könnte auch die Arbeitsgruppe mit dem PSP verbinden, dafür müßte man aber dennoch die REL_07 auflösen, weil sich die Arbeitsgruppe immer wieder anders zusammensetzen kann. In diesem Fall müßten die Zeiten an diese Extratabelle gelinkt werden!

_________________
Viele Grüße
Oliver

Für diesen Beitrag haben gedankt: Xuxe
Xuxe Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 27



BeitragVerfasst: Mi 08.02.12 14:42 
Hmm...ich glaube wir reden aneinander vorbei, oder ich bin einfach zu blöd ;-)

Zitat:
Und da die Zeiten direkt an der MA_ID hängen erfasst Du in der FTE-Tabelle immer nur die Zeit die ein MA während seiner Zugehörigkeit zu einer Gruppen geleistet hat.


So solls ja auch sein?!? Es geht mir nämlich nur um die Arbeitskraft die ein MA leisten WIRD (das sind keine IST-Zahlen, sondern die Zeit die mir der Mitarbeiter zur Verfügung stehen wird) und nicht um das was er tatsächlich getan hat (der IST-Abgleich erfolgt an einer anderen Stelle).

Zitat:

1. Fallstrick: ein Projekt geht über mehr als ein Jahr - das kannst Du nämlich nicht mehr abbilden sondern nur von Jan-Dez eines Jahres!
2. Fallstrick: Wie willst Du die Soll-Zeiten (PSP_Monate) mit den IST-Zeiten (FTE-Monate) in Verbindung bringen?


zu 1.: Also muss ich in der Tabelle PSP ein Feld "Dauer" einführen, und in der FTE_Monate und PSP_Monate Tabelle könnte ich das Jahr als ID verwenden, so müsste das doch gehen?

zu 2.: die FTE-Monate sind ja keine IST-Zeiten, sondern die GEPLANTE Workforce (die theoretisch zur verfügung stehende Arbeitskraft). Die PSP_Monate steht für den GEPLANTEN Arbeitsaufwand. Vergleicht man diese Zahlen bekommt man ausschließlich eine Aussage darüber ob für einen bestimmten Monat genug Arbeitskraft zur Verfügung steht oder nicht (oder anders: ob genügend Arbeit vorhanden ist um alle Mitarbeiter auszulasten).

Zitat:
Es ist nämlich so wie ich es mir schon dachte - in einer Projektverwaltung werden Projekte in kleine Aufgaben unterteilt (PSP), denen widerrum ein oder mehrere MA zugeordnet werden, die widerrum in gewissen Perioden Aufwände verursachen, die Du mit deiner Anwendung erfassen und später auch wieder darstellen sollst!


Aber so ist es nämlich nicht! Die PSP-Elemente werden keinen Mitarbeitern zugeordnet, sondern nur Projekten! Die Aufwändungen die die Mitarbeiter verursachen (Die Stunden die sie auf eine gewisse Kostenstelle schreiben), werden separat an einer anderen Stelle (Datenbank auf die ich keinen Zugriff habe) erfasst.
Mit meiner Anwendung möchte ich nur erfassen wieviel Arbeitskraft mir theoretisch im Monat zur Verfügung steht und mit wieviel Arbeit (Stundenaufwand) ich für meine Aufgaben rechne.
Der SOLL-IST-Vergleich geschieht dann wie gesagt an einer anderen Stelle (Ich bekomme aus der Datenbank, auf die ich keinen Zugriff habe, eine Auflistung aller PSP Elemente auf die die Mitarbeiter meiner Abteilung Stunden geschrieben haben, wenn ich diese Auslese habe ich ja meine IST-Zahlen die ich mit den Geplanten Stunden für ein PSP (diese sind ja in meiner Datenbank) vergleichen kann.)

Ich werde mal die "Jahresproblematik" in meinen Entwurf einarbeiten. Ansonsten müsste ich doch mit meinem Entwurf hinkommen?

An dieser Stelle nochmal vielen Dank für deine Mühe und Hilfsbereitschaft, ich weiß es wirklich zu schätzen! Danke!

Viele Grüße

Boris
olliterski
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 105
Erhaltene Danke: 2

Win7 64-Bit
D7 Ent.
BeitragVerfasst: Fr 10.02.12 16:05 
Hallo Boris,

also ich hab ja extra geschrieben ... Projekte -> PSP-Elemente -> MA...das Mitarbeiter den PSPs zugewiesen werden hatte ich ja nicht geschrieben! ;)
Und die Mitarbeiter bilden ja eine Arbeitsgruppe - die Kostenstelle auf die nachher auch die IST-Zeiten geschrieben werden.

Es scheint mir, man sollte Dir Einblick auf die entsprechende Datenbankstruktur gewähren, damit Du deine Struktur zur einfacheren Anbindung anpassen kannst - würde jedenfalls aus meinen Augen Sinn machen.

Das die IST-Daten an anderer Stelle stehen, habe ich vielleicht anfangs überlesen, würde aber jetzt auch nichts weiter an dem aktuellen Modell ändern.

Ansonsten denk ich, sieht die Struktur bis jetzt ganz gut aus!

Viele Grüße

Oliver

_________________
Viele Grüße
Oliver
Xuxe Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 27



BeitragVerfasst: Fr 10.02.12 17:31 
Hallo Oliver,

Ja, Sinn würde das schon machen nur leider ist es so das ich keinen Einblick in die Struktur der DB in der die "Stunden geschrieben" werden bekomme. Ich habe auch keine Zugriff auf diese DB deswegen muss ich einige Umwege gehen.

Das mit den PSPs und den Mitarbeitern kapiere ich immer noch nicht so wirklich. Wozu soll das genau gut sein? Sorry wenn ich so begriffsstutzig bin, aber bei mir dauerts ab und zu ein bisschen länger :-)

Ich schreib einfach mal wie das bei uns abläuft und wie ich mir das in meiner DB gedacht habe, eventuell wird dann mein Denkfehler klarer.
In meiner Tabelle PSP stehen ja nur geplante Werte, und in der anderen DB stehen die bis zu einem bestimmten Zeitpunkt tatsächlich auf ein PSP-Element (=Kostenstelle) geschriebenen Stunden (Welcher MA genau auf welches PSP wieviel Stunden geschrieben hat, ist an dieser Stelle uninteressant. Das ganze soll auf Gruppenebene erfolgen). Diese IST-Wert brauche ich ja nicht in meiner DB speichern, sondern diese brauche ich ja lediglich zur Verarbeitung, d.h. später soll einfach nur eine Excel-Tabelle (eine Auflistung in der Art: "Gruppe 1 belastet PSP-Element XYZ mit n Stunden") eingelesen werden, meine Plan-Werte mit den eingelsenen IST-Werte verglichen und ein Ergebnis ausgegeben werden (also in etwa wenn: IST < SOLL "alles ok", IST > SOLL "achtung hier läuft etwas schief").
Die Tabelle Arbeitsgruppe ist dafür da um Mitarbeiter an anderen Gruppen ausleiehn zu können (dabei bleiben sie fest in ihrer Gruppe und sind nur kurzfristig für eine andere Gruppe tätig).

Jetzt sind mir noch 2 Sachen aufgefallen, und für die habe ich noch keine Lösung bzw. ich weiß nicht ob ich das nicht eventuell sogar schon darstellen kann.

1. Für die Workforce Planung ist es von nöten das Mitarbeiter längere Zeit "nicht anwesend" sein können (z.B. wegen Elternzeit). Wie könnte ich sowas umsetzen?

2. In der FTE_Monats- und PSP_Monats-Tabelle habe ich (siehe Anhang) als Primärschlüssel das Jahr. Ich bräuchte doch aber einen zusammengesetzten Primärschlüssel aus Jahr und MA_ID bzw. Jahr und PSP_ID (ansonsten kann ich für ein Jahr nur einen Mitarbeiter darstellen)? Geht das überhaupt?

Vielen Dank und sorry wenn ich nicht gleich alles kapier ;-)

Boris