Is dit een goede manier om te starten of denken jullie anders?
Op zich is het goed dat je je eerst verdiept in Access voordat je ermee begint.
Het leggen van relaties t.o.v. de verschillende tabellen, hoe kan dit het beste gedaan worden? een of meerdere
Eigenlijk kan je dat maar op één manier (goed) doen. Op basis van de gegevens die je denkt nodig te hebben en de vereiste functionaliteit ontwerp je een model. Daarbij pas je bepaalde regels toe (normalisatieregels). De relaties rollen er dan in feite vanzelf uit.
In jouw situatie bijvoorbeeld:
- Een stuk materieel wordt één of meer keer verhuurd en een verhuur heeft altijd betrekking op één stuk materieel. Je hebt dan een 1-op-veel relatie tussen "Verhuurmateriaal" en "Bestellingen". Als in één bestelling meer materiaal in een keer besteld kan worden, moet het model anders. Je hebt dus een goede beschrijving van de wensen nodig om goed te kunnen modelleren.
- Een uitvoerder kan (in de loop der tijd) één of meer bestellingen doen. Een bestelling wordt altijd door één uitvoerder gedaan. Dus een 1-op-veel relatie tussen "Uitvoerder" en "Bestellingen".
Relaties uiten zich door het feit dat je in de tabel aan de "veel-kant" (alleen) het sleutelveld (primary key) van de tabel aan de "één-kant" opneemt (dat is dan de zogenaamde foreign key). Voor de relatie "Verhuurmateriaal - Bestellingen" betekent dat het volgende.
Om de beginnen moet de sleutel (primary key) van "Verhuurmateriaal" het veld "Materiaal_Id" zijn. "Verhuur_id" (wat dat ook moge zijn) hoort daar niet thuis.
In "Bestellingen" neem je "Materiaal_ID" op als foreign key. Je kan zo aan een bestelling zien op welk materiaal die betrekking heeft en van materiaal kan je nagaan hoe vaak en aan wie het verhuurd is.
"Omschrijving materiaal" hoort niet thuis in "Bestellingen" maar alleen in "Verhuurmateriaal". Het is een kenmerk van materiaal en sla je dus alleen daar op. Locatie weet ik niet helemaal zeker wat je daar mee moet.
Als de locatie is waar het materiaal staat als het niet verhuurd is, dan hoort ook dat alleen in de materiaaltabel thuis. Ik zou sowieso een tabel met locaties toevoegen om te zorgen dat iedereen dezelfde namen gebruikt.
Wat "Werkgever_Id" in de beide tabellen doet weet ik niet. In je uitleg van de bedoeling ben ik het niet tegengekomen.
Over de tabellen "Uitvoerders" en "Uitvoerend personeel" valt ook nog wel wat te zeggen. Een basisregel bij databaseontwerp is dat je gegevens vastlegt in velden van tabellen. Dat klinkt als een open deur, maar hier wringt er iets. Je ziet twee tabellen met vrijwel dezelfde velden; dat is "verdacht". In feite heb je hier gegevens (de rol van een persoon) verstopt in een tabelnaam en dat hoort niet. Als een persoon een andere functie krijgt zou je hem opnieuw moeten toevoegen en dat is niet logisch. Ik zou dus één tabel (werknemer) maken met daarin een veld "rol" (en een tabel met mogelijke rollen). Bij het vastleggen van de besteller en afhaler kan je afdwingen dat de betrokken medewerker een bepaalde rol heeft.
Waarom je bij uitvoerders de functie (uitvoerder?) vastlegt en bij uitvoerend personeel het personeelsnummer weet ik niet.
Al met al kom ik met wat ik nu weet (en dat is vast niet alles) tot dit model:
Opmerkingen:
- Er lopen twee relaties tussen "Medewerker" en "Vehuur". Access laat dat zien door een kopie van de tabel "Medewerker" te tonen in het relatieschema: "Medewerker_1" is gewoon de tabel "Medewerker".
- Ik gebruik altijd enkelvoudige zelfstandige naamwoorden als tabelnaam.
- Probeer consistent te zijn in benamingen (geen bestelling en verhuur door elkaar).
- Gebruik geen spaties in tabel- en veldnamen.
P.S.
De namen in de tabellen zien er wel verdacht echt uit. Vanuit privacyoverwegingen is het onwenselijk die hier op het net te gooien.