====== Nøgler i relationsdatabaser ====== I en relationsdatabase bruges **nøgler** til to vigtige formål: * At kunne skelne én post fra en anden * At forbinde data mellem tabeller ===== Primærnøgle ===== En **primærnøgle** er et felt – eller en kombination af felter – som entydigt identificerer en post i en tabel. Det betyder, at der ikke findes to poster med samme primærnøgle. For eksempel kan tabellen **Kunde** have et felt som **KundeID** som primærnøgle.\\ Denne primærnøgle bruges også i andre tabeller. I tabellen **Ordre** vil *KundeID* være en **fremmednøgle**, der viser, hvilken kunde ordren tilhører. På den måde kan databasen forbinde en ordre med den rigtige kunde. ===== Kandidatnøgler ===== En **kandidatnøgle** er den __mindste__ mængde felter, der tilsammen kan identificere en unik post i en tabel. En tabel kan have flere kandidatnøgler. Eksempel: I tabellen **Kunde** kan der være flere kandidatnøgler: * **KundeID** (ét enkelt felt) * En kombination af **Fornavn**, **Efternavn** og **E-mail** Begge kan identificere en kunde entydigt, og de er derfor kandidatnøgler. ===== Valg af primærnøgle ===== Ud af de mulige kandidatnøgler vælges én som **primærnøgle**. Som regel vælger man den **enkleste kandidatnøgle**, ofte et enkelt felt som **KundeID**. Det gør databasen hurtigere og mere effektiv, når der skal søges i data. ===== Sammenhæng mellem tabeller ===== I en relationsdatabase er data opdelt i tabeller efter emne, for eksempel **Kunder**, **Ordrer** eller **Kontaktpersoner**. Hver tabel indeholder felter (også kaldet attributter) som navn, telefonnummer og e-mail. Tabellerne forbindes ved hjælp af **fremmednøgler**, så relaterede data kan samles på tværs af tabeller. For eksempel forbinder en fremmednøgle i tabellen **Ordre** ordren med den kunde, der har foretaget den.