Databaser afhænger af nøgler til at gemme, sortere og sammenligne eller skabe relationer mellem poster. Hvis du har været rundt i databaser i et stykke tid, har du sikkert hørt om forskellige typer nøgler: primærnøgler, kandidatnøgler og fremmednøgler.
Når du opretter en ny databasetabel, bliver du bedt om at vælge én primær nøgle, der unikt identificerer hver post, der er gemt i den tabel.
Hvorfor en primær nøgle er vigtig
Valget af en primær nøgle er en af de mest kritiske beslutninger, du vil tage i forbindelse med designet af en ny database. Den vigtigste begrænsning er, at du skal sikre, at den valgte nøgle er unik. Hvis det er muligt, at to poster (fortid, nutid eller fremtid) kan dele den samme værdi for en attribut, er det et dårligt valg for en primær nøgle.
Et andet vigtigt aspekt af en primær nøgle er dens brug af andre tabeller, der linker til den i en relationel database. I dette aspekt fungerer en primær nøgle som mål for en pointer. På grund af disse indbyrdes afhængigheder skal der eksistere en primær nøgle, når en post oprettes, og den kan aldrig ændre sig.
Dårlige valg til primære nøgler
Hvad nogle mennesker måske betragter som et indlysende valg for en primær nøgle, kunne i stedet være et dårligt valg. Her er et par eksempler:
- Postkoder er ikke gode primære nøgler til en tabel med byer. Hvis du laver en simpel opslagstabel over byer, ser postnummer ud til at være en logisk primær nøgle. Men ved yderligere undersøgelser vil du måske indse, at mere end én by deler et postnummer. For eksempel deler byerne Neptune, Neptune City, Tinton Falls og Wall Township i New Jersey alle postnummeret 07753.
- cpr-numre er ikke gode primærnøgler af mange årsager. De fleste mennesker betragter deres SSN som privat og vil ikke have det klart synligt for databasebrugere. Derudover har nogle mennesker ikke SSN'er.
- E-mail-adresser er også et dårligt valg for en primær nøgle. Selvom de er unikke, kan de ændre sig over tid. Desuden er det ikke alle, der har en e-mailadresse.
Hvad gør en god primærnøgle
Så, hvordan vælger du en effektiv primær nøgle? I de fleste tilfælde skal du henvende dig til dit databasesystem for at få support.
En bedste praksis inden for databasedesign er at bruge en internt genereret primær nøgle. Dit databasestyringssystem kan norm alt generere en unik identifikator, der ikke har nogen betydning uden for databasesystemet.
Du kan f.eks. bruge Microsoft Access AutoNumber-datatypen til at oprette et felt kaldet RecordID. Datatypen Autonummerering øger automatisk feltet, hver gang du opretter en post. Selvom selve nummeret er meningsløst, giver det en pålidelig måde at referere til en individuel post i forespørgsler.
En god primærnøgle er norm alt kort, bruger tal og undgår speci altegn eller en blanding af store og små bogstaver for at lette hurtige databaseopslag og sammenligninger.