Geplande uren verwerken in Desktop Project Management database

Status
Niet open voor verdere reacties.
Ik zal het niet goed gedaan hebben, want het resultaat is nog slechter geworden :(
 
Ik vind je opzet niet goed; je hebt de urentabellen aan Projecten gehangen, wat in mijn ogen verkeerd is. Uren zijn namelijk in jouw geval een subentiteit van de Medewerker, niet van het project. Een project kent meerdere medewerkers, en daar heb je dan weer géén koppeltabel voor. Die zou ik dus eerst maken met een één-op-veel relatie met Employees. In die tabel heb je dus per project meerdere medewerkers, en één record uit die tabel koppel je dan aan de urentabellen. Op die manier leg je de uren op een correcte manier vast.
 
@Octafish: was jouw bericht aan mij of voor johhnnyboy? Betreft het de tabellen zoals ik ze als voorbeeld meegezonden had? Deze heb ik namelijk van microsoft access downloadsite zelf.

@Johhnnyboy: inderdaad zoiets, bij de query "()...combined" zie ik wel records dubbel terug. Is dat een probleem?
 
Dubbele zoals welke? Lijkt mij een probleem maar kon er zo niet een vinden vooralsnog.
Ook als ik er een distinct tussen gooi verandert het aantal niet.
 
@Dencar: mijn opmerkingen waren (uiteraard, jij bent de TS) voor jou bedoeld. Microsoft heeft door de jaren heen met grote regelmaat (kijk naar de ontwikkeling van Access) laten zien dat ze weinig kaas hebben gegeten van databases. Dat zie je dan ook af aan de voorbeeld databases die ze leveren, want aan elk voorbeeld mankeert wel iets (tot heel veel). Ze hebben wel goeie programmeurs in huis uiteraard, dus je kunt er wél een hoop van leren. En zo moet je ze ook zien en gebruiken.
Je mag uiteraard doorgaan op de weg die Microsoft en Johnny ook gebruiken, maar het zou mijn keus niet zijn :).
 
Als ik je een beetje volg zeg jij: Elk project heeft medewerkers die er aan werken (tblproject (met hier een projmedID die linkt naar:) en tblmedewerker). Dan heb je de medewerker die uren verantwoord in tblUren (in tblmedewerker maak je een medurenID). En vervolgens heb je een andere tabel tblGeplandeuren en deze link je ook aan tblmedewerker, zoals tblUren.

@Johhnnyboy: ik heb een bijlage toegevoegd van de query waar de dubbele registraties voorkomen.dubbele invoer.jpg
 
Laatst bewerkt door een moderator:
Yep. En zou zou het in mijn ogen ook moeten: Medewerkers hebben een afhankelijkheid van projecten, en uren hebben een afhankelijkheid van Medewerkers. Je kunt dan in één query zien wat de geplande en wat de uitgevoerde uren zijn, zonder ingewikkelde constructies zoals nu. Bij het ontwerpen van een database moet je eerst voor jezelf bepalen wat je wilt bijhouden: is dat het aantal uren voor een project, of het aantal uren voor de medewerkers? Jij hebt een systeem dat de uren bijhoudt voor het project. Kan natuurlijk, maar het moet wel een bewuste keus zijn.
Een fout die veel mensen maken is dat ze een bestaande database vinden, en vervolgens denken: die doet wel ongeveer wat ik zou willen (Microsoft templates). Terwijl je andersom moet denken: wat wil ik uit de db kunnen halen, en wat heb ik dan nodig om het er in te stoppen. Als je dat weet, kun je gaan bouwen. In de andere variant komt het ontwerpproces niet meer aan bod, want het eindproduct ligt er al.
 
Laatst bewerkt:
Als je verder naar links gaat zie je dat het hele record wel degelijk anders is.
Je kunt deze query bewerken afhankelijk van de output die je eruit wil halen.
 
@Johhnnyboy: klopt, naarmate je naar links of rechts gaat dan kloppen die gegevens inderdaad. Zag het net ook. Maar kom je dan straks niet in de knoei wanneer je sommige data wilt optellen bijvoorbeeld? Zover ik nu kan kijken is het werkend je methode.

@Octafish: ik heb een bestandje toegevoegd. Is zoiets wat je bedoelt met de tabellen? Ik begin nu pas te begrijpen wat je bedoelde met de onafhankelijkheid van "onderwerpen". Misschien niet een vraag die nu hier thuis hoort, maar wanneer je de tabellen gaat "linken", doe je dit in het tabblad "hulpmiddelen voor databases" en dan naar "relaties" of doe je dit het beste middels queries? Ik zal bij het uitvoeren van je variant hier rekening mee moeten houden. Op dit moment, zoals ook in de afbeelding is te zien, heb ik die in de "relaties" gemaakt.betere tabellen.jpg
 
Dat is niet helemaal wat ik bedoel; Projecten zijn zelfstandige entiteiten, en Medewerkers ook. Tussen de 2 bestaat volgens mij een veel-op-veel relatie: veel projecten kunnen aan veel medewerkers worden gekoppeld. Er moet dus een tabel Project_Medewerker tussen waarin je de combinaties vastlegt. Zo kan elk project meerdere medewerkers hebben, en elke medewerker op meerdere projecten werken.
 
2epoging.jpg
Je slaat de spijker op de kop. Ik heb nogmaals een poging gewaagd voor de combinatietabel...
 
Je gaat de goede kant op, maar nu moet je de urentabellen nog omhangen, want die hangen nu aan Medewerker. En dat is niet goed, want je gewerkte/geplande uren hebben betrekking op de uren die een medewerker voor een project maakt, niet op zijn totale urenbesteding. Je moet de urentabellen dus koppelen aan het veld ProMedID van de tabel tblProjectMedewerker.
 
3epoging.jpg
Ook wel logisch, maja, dan moet je het wel eerst logisch kunnen beredeneren :)...
 
Daarom is het zo belangrijk dat je eerst nadenkt over je ontwerp, voordat je überhaupt maar naar een computer grijpt :). Beschrijf eerst de opdracht, bekijk dan een oplossing in ga daarna kijken hoe je die oplossing kunt bouwen. Voor hetzelfde geld rolt er uit dat je met een Word document al een goede oplossing hebt...
Maar als ik nu naar je plaatje kijk, zie ik één-op-één relaties tussen tblProjectMedewerker en de urentabellen. Lijkt mij ook niet handig. Een medewerker moet op meerdere dagen uren kunnen boeken, en niet maar één keer. Je hebt in de 2 urentabellen een veld [ProMedID] nodig, dat geen sleutelveld is. De één-op-veel relatie is dan gelijk goed. Misschien dat je de geplande uren nog wel op projectbasis wilt invoeren (Medewerker Jansen mag 120 uur aan het project werken) maar de bestede uren zul je toch per datum invoeren.
 
ik ben je even kwijt vanaf "je hebt in de 2 urentabellen....()". Moet ik een verbinding maken met tblProjectMedewerker (promedID) en Project Gewerkte Uren (pTijdMedID)?
 
Mocht je merken dat ik niet meer reageer, dan komt dit doordat ik op mijn goede oor ga liggen. Morgenochtend ga ik er weer verder mee. Ontzettend ontzettend bedankt voor jullie hulp!
 
Lijkt mij sterk dat je dat veld ervoor kunt gebruiken. Je hebt een nieuwe tabel gemaakt met een nieuw sleutelveld. Dat sleutelveld moet je koppelen aan je urentabellen, maar daar ontbreekt dat veld nu. Soms kun je, als je slim gegevens overzet naar een nieuwe tabel, de bestaande velden hernoemen en hergebruiken. Ik weet natuurlijk niet of dat hier ook geldt. Zo niet, dan moet je het veld ProMedID toevoegen aan de urentabellen. Meestal kun je de ProMedID wel vullen met een bijwerkquery als je bestaande velden kunt koppelen. Zo niet: handmatig invullen.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan