login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Postgresql sleutelvraag

Offline cunces - 14/08/2009 20:11 (laatste wijziging 14/08/2009 20:34)
Avatar van cuncesNieuw lid Ik heb nu deze 2 tabellen:

WERKNEMERS
----------------
werknemernr (prim key)
projectnr (ref key naar PROJECTEN.projectnr)
voornaam
naam

PROJECTEN
-------------
projectnr(prim key)
onderwerp
startdatum


maar nu zit ik met het probleem dat wanneer een werknemer zich registreert er al een project moet aangemaakt zijn voor hem. Ik twijfel nu dus om de referring keys weg te laten. Dit geeft dan meer flexibiliteit. Maar dan kunnen er weer fouten in sluipen dmv verkeerde projectnr's. Iemand een goed idee voor dit ontwerp ?

7 antwoorden

Gesponsorde links
Offline Stefan14 - 14/08/2009 21:22
Avatar van Stefan14 PHP gevorderde Mij lijkt het handiger om bij de projecten tabel het werknemersnr te zetten.

Of als er meerdere werknemers aan een project moeten kunnen werken, zul je gebruik moeten maken van een aparte koppeltabel.

Zoals je het nu doet, kan een werknemer maximaal 1 project (tegelijk) doen, en zodra hij een ander project toegewezen krijgt kun je later niet meer zien wie een bepaald project heeft gedaan.

Maar deze opzet gaat je inderdaad problemen opleveren zoals je nu reeds merkt.
Offline cunces - 14/08/2009 21:26
Avatar van cunces Nieuw lid nja idd ga met koppeltabel is een oplossing. Maar m'n opdracht voor school was dat ik m'n erd moest volgen. En daarin staat dat een werknemer max 1 project tegelijk mag hebben. Aan deze voorwaarde is wel voldaan maar idd zoals u stelt, wanneer hij een nieuw project begint is de info van het vorige weg. (staat niet in de probleemomschrijving of dat nodig is)

Nu weet ik niet wat doen 
Offline Stefan14 - 14/08/2009 21:31 (laatste wijziging 14/08/2009 21:34)
Avatar van Stefan14 PHP gevorderde
cunces schreef:
Maar m'n opdracht voor school was dat ik m'n erd moest volgen.


Erd? = opdrachtomschrijving?

Anyway, als een werknemer maximaal 1 project tegelijk mag doen, kun je in principe voor allebei de optie's gaan.

Enige wat je dan moet doen om het hebben van meerdere projecten te voorkomen is bij het toewijzen van projecten een controle of deze persoon reeds een (nog openstaand) project heeft.
Wel moet je dan in je projectentabel een extra kolom opnemen genaamd 'status' of iets in die richting waarin je bijhoudt of het project is afgerond of niet. Want aan de hand daarvan kun je dan je controle doen.

De koppeltabel heeft mijn persoonlijke voorkeur.
Dit maakt het namelijk mogelijk om meerdere personen aan een project toe te wijzen. Dit hoeft uiteraard niet, maar wie weet is het ooit nodig en dan hoef je niet heel je script om te bouwen.
Offline cunces - 14/08/2009 21:42
Avatar van cunces Nieuw lid erd is zo'n schema: "1-<>-n".
Ga jouw oplossing nemen. En in de koppelingstabel een extra boolean actief ipv in de projectentabel, is dat niet beter? Sneller om te controleren lijkt me.

Alleszinds bedankt voor de hulp, pz uit
Offline Stefan14 - 15/08/2009 00:48 (laatste wijziging 15/08/2009 00:49)
Avatar van Stefan14 PHP gevorderde De status van je projecten bijhouden in de koppelingstabel is eigenlijk vragen om fouten.
Zeker zodra je meerdere gebruikers op een project zet, kan het voorkomen dat de ene gebruiker het project wel afgerond heeft staan en de ander niet.
Dan weet het systeem dus niet welke status hij moet aanhouden.

Dit soort dingen kun je beter bijhouden direct bij de data waar deze ook daadwerkelijk bij hoort.

Opzich is het niet zo heel moeilijk te controleren. Is een kwestie van een join gebruiken. (zie tutorials) Of anders gewoon een aparte query.
Offline Richard - 16/08/2009 11:17
Avatar van Richard Crew algemeen Dit lijkt meer op een m:n structuur (meer op meer), omdat meerdere werknemers best aan meerdere projecten kunnen werken...

Dan krijg je dus:

werknemer(werknemer_id, voornaam, achternaam)
project(project_id, start_datum, onderwerp)
werknemer_per_project(werknemer_id, project_id)

En in werknemer_per_project zijn beide kolommen foreign keys naar de velden die je in andere tabellen ziet. :-)
Offline cunces - 18/08/2009 14:31
Avatar van cunces Nieuw lid bedankt voor de hulp jongeuns!
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.263s