Probleem met 2 primaire sleutels

Status
Niet open voor verdere reacties.

blastdragon

Nieuwe gebruiker
Lid geworden
5 sep 2009
Berichten
4
Ik moet voor school een enquete overzetten van excel naar acces. Dit eerste gedeelte is niet heel erg zwaar maar ik moet dan de verbindingen nog leggen. Ik heb 3 tabellen, "vragen", "antwoorden" en "deelnemers". Elke deelnemer heeft een getal net als elke vraag. De tabel "antwoorden" ziet er nu zo uit;

Deelnemer_nr________Vraag 1__________________Vraag 2

1___________________ Antwoord op vraag 1______ Antwoord op vraag 2


2 ___________________Antwoord op vraag 1_______Enz. Enz. Enz.

En toch moet ik een verbinding maken tussen "antwoorden" en de 2 andere tabellen. Onze leraar zegt dat het met 2 primaire sleutels moet maar moet ik dan voor iedere deelnemer een aparte rij maken met daarin 1 antwoord?

Alvast bedankt voor de hulp.
 
Even voor het beeld: je hebt dus 3 tabellen:
1. Deelnemers - DeelnemerID, Naam etc
2. Vragen - VraagID, Vraag
3. Antwoorden - DeelnemerID, VraagID, Antwoord

In de tabel Deelnemers heb je de gegevens van de Deelnemers. Deze hebben, als je het goed hebt gedaan, een uniek nummer, DeelnemerID. Dit is dan ook de primaire sleutel.
In de tabel Vragen heb je de vragen die gesteld worden. Ook hier is elke vraag uniek, dus herkenbaar aan het VraagID. Ook dit is de primaire sleutel.

De samenvoegende tabel is dus de tabel Antwoorden: hierin sla je van elke deelnemer het antwoord op elke vraag op.
Deze tabel kun je uniek maken met een eigen Autonummerveld, maar dat is niet zo handig in dit geval. Je wilt in deze tabel de antwoorden van de deelnemers opslaan. Dat betekent dus, dat je in ieder geval moet invoeren:
1. het DeelnemerID
2. het VraagID
3. het antwoord

Je wilt namelijk later zien welke deelnemer op welke vraag welk antwoord heeft gegeven.
Je leraar heeft (bijna) gelijk, als hij het over twee primaire sleutels heeft. Maar je hebt er nog een meer nodig, namelijk in de tabel Antwoorden. Deze sleutel is ietsje gecompliceerder. Bij het maken van een primaire sleutel moet je nadenken over een veld, of een combinatie van velden die één record uniek maakt. Vaak wordt er daarom een Autonummerveld gebruikt, want dat is per definitie een uniek nummer. Job done! Of toch niet??
Kijken we naar je enquete, dan moet je stellen, dat elke deelnemer elke vraag maar één keer mag beantwoorden. Je wilt dus in de tabel Antwoorden ook voorkomen dat je van deelnemer 12 op vraag 5 drie antwoorden kunt invullen. Kortom: de combinatie van DeelnemerID en VraagID moet uniek zijn. De sleutel in de tabel Antwoorden zou ik dus maken van DeelnemerID en VraagID.
Daarmee heb je dus in totaal 3 sleutels, waarvan één samengestelde.
 
Oke, ik zie het nu. Wordt nog wel een groot prut werkje maar ik kom er wel uit. Heel erg bedankt!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan