Geindexeerd vs primairy key

Status
Niet open voor verdere reacties.

Dipke

Gebruiker
Lid geworden
29 dec 2011
Berichten
23
Hi,

Wat is juist het verschil tussen een primairy key instellen en "geindexeerd : Ja (Geen duplicaten)" in het eigenschapvenster ?
Hoe maak ik 2 velden die uniek zijn in de tabel maar niet ten opzichte van elkaar ?

mvg
 
Primary key en Index worden als benaming nogal eens door elkaar gebruikt.
Een index wordt inderdaad gebruikt om records zodanig te indexeren dat ze met het juiste filter direct op te vragen zijn zonder dat alle records gelezen en vergeleken hoeven te worden (Sequentieel).

Een primary key is de tegenhanger van een foreign key en wordt gebruikt om een actie aan te geven bij een actie op de master tabel en de daaraan gelinkte detail tabel.
Wordt een record uit de master tabel verwijderd dan kan een primary key worden gebruikt om aan te geven dat tevens de bijbehorende records uit de detail tabel moeten worden verwijderd. Die detail tabel bevat dan de zgn. Foreign Key.
Dit heet Referentiele Integriteit.

Acties die aan een primary key kunnen worden toegekend zijn o.a.

"ON DELETE CASCADE" (Bovenstaand voorbeeld)
"ON UPDATE CASCADE"

Zo zijn er ook nog de acties RESTRICT, SET NULL, NO ACTION en SET DEFAULT.

Bovenstaande is ANSI SQL. Met Access heb ik nog nooit gewerkt dus ook geen idee hoe het daar in werkt en er zijn nog veel meer mogelijkheden maar zo heb je wel een idee van het verschil tussen een Primary Key en een Index.

Lees ook eens:
http://en.wikipedia.org/wiki/Foreign_key
 
Laatst bewerkt:
Hi,

Bedankt voor dit antwoord.
Maar mijn 2de vraag blijft nog : Hoe maak ik 2 velden die uniek zijn in de tabel maar niet ten opzichte van elkaar ?
maw : Het veld [ID] en het veld
Code:
 mogen geen dubplicaten bevatten.
Voor 1 veld kan ik een primairy key gebruiken. Maar als ik 2 primairy keys gebruik maakt ik ze uniek ten opzichte van elkaar en dat mag niet.
Kan ik 1 een primairy key geven en de ander indexeren zonder duplicaten ?

mvg
 
Zoals ik al zei ben ik niet bekend met Access en weet daarom ook niet hoe de datamodellering daarin werkt.
Normaal gesproken kan een index uit 1 of meerdere velden bestaan. Daarmee kun je dan een record uniek maken in een tabel terwijl er wel een overeenkomstig veld is voor een te joinen tabel.

Misschien dat er nog iemand reageert die meer thuis is in hoe dit in Access in z'n werk gaat.
 
Kan ik 1 een primairy key geven en de ander indexeren zonder duplicaten ?

Dat kan.
Doe je vanuit tabelontwerp.
Id instellen als primaire sleutel.
op code zet je een index met Primair = Nee, Uniek = Ja.

Een primaire sleutel stel je in om gegevens uniek te identificeren.
In de praktijk gebruik je daarvoor een Autonummer kolom.
Een kolom gedefinieerd met gegevenstype Autonummering heeft geen betekenis buiten je tabel, je gebruikt hem dus alleen om gegevens uniek te identificeren.
Voor gegevens die je extern gebrikt, zoals een ordernummer/factuurnummer, is autonummering niet bedoeld/ongeschikt.

Tardis
 
En nu antwoord op je vraag: selecteer in het tabelontwerp de velden die je uniek wilt maken, en klik dan op de knop met de sleutel. Nu is de combinatie van de velden uniek, en kun je elke combinatie maar één keer toevoegen: de sleutel!
 
Dat bedoelde ik dus in m'n vorige reactie :)
 
Laatst bewerkt:
Dipke,

als je bedoeling is een combinatie uniek te maken (combinatie mag maar 1 keer voorkomen), gebruik dan een samengestelde index.
Eventueel kun je de suggestie van OctaFish gebruiken.
Je gebruikt dan een samengestelde primaire sleutel.
Zelf zou ik nooit met samengestelde primaire sleutels werken.

Gebruik anders mijn eerdere suggestie.

Tardis
 
OctaFish,
Mijn bedoeling is om 2 velden uniek te maken en niet de combinatie ervan.
Dus is het voor mij belangrijk om met de index te werken en niet met samengestelde sleutels.

Iedereen bedankt voor het antwoord

mvg
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan