Database opzetten

  • Onderwerp starter Onderwerp starter mkn
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

mkn

Nieuwe gebruiker
Lid geworden
9 mei 2003
Berichten
4
Ik wil een database opzetten met daarin de volgende gegevens:

- personeelsgegevens (zoals personeelsnummer en adresgegevens, sofinr. datum in dienst etc.)
- opleidingen/cursussen die het personeel gevolgd heeft. Ook de nog te volgen opleidingen moeten erin komen te staan, met start- en einddatum, status etc.
Dit zijn heel veel verschillende opleidingen en cursussen . Dit is dus per persoon verschillend.

Een tabel met personeelsgegevens heb ik al gemaakt.
Ik kom er niet uit hoe ik het beste de opleidingen aan het personeel kan koppelen of hoe ik dit moet opzetten.

Ik kom dan uit op alle gegevens in 1 tabel zetten, maar dit is natuurlijk niet de bedoeling van Access. Ik krijg dan ook een hele "brede"tabel. Dan staan wel alle opleidingen met de personeelsgegevens in 1 tabel, maar gegevens zoals start- en einddatum kan ik dan niet kwijt. (omdat dit bij elke opleiding van toepassing is)

Ik wil bijvoorbeeld ook op kunnen vragen: alle personeelsleden die de cursus EHBO hebben gevolgd. Dit kan dan weer met een query, maar hoe ik het bestand in eerste instantie opzet, is mijn probleem dus.

Heeft iemand tips hoe ik dit het best kan aanpakken?
 
Maak een tweede tabel waarin je alle cursussen opneemt met hun specifieke gegevens (bv. cursusnummer, duur, kosten, lokatie).
Vervolgens een derde tabel maken waarin je het personeelsnummer, cursusnummer, begindatum, einddatum, diploma (ja/nee), etc. opneemt.
Daarna kun je via deze tabel een query maken die de voor jou relevante gegevens ophoest.

Suc6
 
Maar als er heel veel soorten cursussen zijn, dan kan ik dit toch niet in 1 tabel opnemen? (met achter elke cursus cursusnr, duur, status etc.) Dan krijg je een gigantisch lange tabel, of zie ik dit verkeerd?Dan komt onder elke cursus bijv. cursusnr., duur, status. Dan wordt de tabel toch gigantisch lang?
 
Wat is lang?
20 of 30 velden in een tabel is geen probleem.
Ook het aantal records in een tabel zal niet snel een probleem zijn.
Ik heb access toepassingen gemaakt waar op dit moment tabellen in zitten die meer als 300000 records bevatten.
Wel moet je dan toegangspad analyses gaan doen en op de juiste plekken in je database indexen gaan zetten.
 
Tabel: Cursus
Velden:
1 Cursusnr
2 Cursusnaam
3 Cursusduur
4 Cursuskosten

Tabel: Cursusdatum
Velden:
1 Cursusnr
2 Cursusvolgnr
3 Cursusdatumbegin
4 Cursusdatumeinde
5 Cursuslokatie

Tabel: Persoon
1 Persnr
2 Naam
3 Voornaam


Tabel: PersCur
1 Persnr
2 Cursusnr
3 Cursusvolgnr
4 Status
5 Diploma


Door deze indeling van de database hou je alle gegevens apart.
De tabel Cursus bevat alle gegevens die bij de cursus horen en niet variabel zijn.
De tabel Cursusdatum bevat alle gegevens die bij een cursus van een bepaalde datum horen.
De tabel Persoon bevat alle gegevens van een personeelslid die niet variabel zijn.
De tabel PersoonCursus bevat alle te volgen en gevolgde cursussen.

Wil je weten welke personen de EHBO-cursus met goed gevolg hebben doorlopen, gebruik dan onderstaande query:

SELECT DISTINCT Persoon.Voornaam, Persoon.Naam
FROM Persoon, PersCur
WHERE Persoon.Persnr = PersCur.Persnr
AND PersCur.Diploma = 'Ja'
AND PersCur.Cursusnr in
(SELECT Cursus.Cursusnr
FROM Cursus
WHERE Cursus.Cursusnaam = 'EHBO')
 
Bericht voor Silkcom:

Als ik de tabel PersoonCursus ontwerp, met de volgende velden:
Personeelsnr.
Cursusnr.
Status
Diploma

Elk personeelslid heeft meerdere cursussen gevolgd, dan krijg je meerdere cursusnrs. per persoon. Zo kan ik niet per persoon, per cursus de status en diploma aangeven. (omdat in 1 veld meerdere cursusnrs. genoemd worden)
Op deze manier kan ik volgens mij ook geen opvraag doen voor 1 cursus bijvoorbeeld omdat er per persoon meerdere cursussen kunnen voorkomen.
Hoe kan ik dit het beste aanpakken of is dit niet mogelijk?
 
Laatst bewerkt:
De tabel PersCurs is een tussentabel die de (veel-op-veel) relatie legt tussen de tabel Persoon en Cursus. Elk record in die tussentabel geeft één relatie weer. Als twee personen elk drie cursussen volgen dan heb je dus zes records in deze tabel.
Zie de uitleg op http://www.sip.be/cursus/access/inhoud.htm bij het onderwerp Relaties, of op mijn site http://www.pcmenu.nl of direct bij http://home.planet.nl/~digihans/pc_help/access/tabel_query.htm.
Met een query kun je vervolgens alle gegevens weer in één overzicht zien.
't Is even puzzelen, maar het werkt goed.
 
Laatst bewerkt:
Aangezien ik de laatste tijd druk en geweest, heb ik niet op je reactie kunnen reageren.

Ik heb een voorbeeld DB voor je gemaakt zodat je een en ander na kunt kijken.
Er is een versie voor Access 97 en een voor Access 2003.

Veel succes.
 

Bijlagen

Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan