En **nøkkel** i en database er attributter/data som kan peke til eller fastsette andre data. Nøkkelbegrepet brukes i hovedsak i sammenheng med relasjonsdatabaser. I tillegg til at nøkler tjener som referanser, er de viktige *integritetsregler*, dvs. regler som begrenser hvilke tilstander som er lovlige i databasen (se: entitetsintegritet, domeneintegritet og referanseintegritet). Nøklene stiller krav til verdiene i databasen, som databasehåndteringssystemet må kontrollere at er oppfylt ved hver endring.

Supernøkkel
-----------

Utdypende artikkel: Supernøkkel

En **supernøkkel** er en eller flere data som entydig definerer en rad (eller et tuppel) i en tabell. Det innebærer at to ulike objekter ikke kan ha like verdier i en supernøkkel.

Kandidatnøkkel
--------------

En **kandidatnøkkel** er en minimal supernøkkel. Det vil si at hvis man fjerner noen attributter fra nøkkelen, er den ikke lenger en supernøkkel. Kandidatnøkler er sikre identifikatorer for en rad, og kan brukes som primærnøkler og som referanser for fremmednøkler.

Primærnøkkel
------------

En **primærnøkkel** er en spesielt utvalgt kandidatnøkkel. Alle relasjoner i en database skal ha en og bare en primærnøkkel. Primærnøkkelen er den foretrukne metoden for å identifisere en rad i en tabell i en relasjonsdatabase.

For eksempel kan man ha en oversikt/tabell over bøker med en kolonne for ISBN. Alle bøker har ett ISBN, og ingen bøker har samme ISBN. Dette er en kandidatnøkkel, og vil være en god primærnøkkel siden ISBN er et svært stabilt attributt.

En **surrogatnøkkel** er en primærnøkkel som ikke har noen "naturlig" funksjon utover å fungere som primærnøkkel for tabellen. For eksempel dersom man i en tabell med en liste over brukerne av en nettside velger å benytte en systemgenerert (generert hver gang en ny bruker registrerer seg) id som primærnøkkel for å identifisere hver unike bruker. I motsetning ville det å deklarere brukerens unike brukernavn som primærnøkkelen ikke vært en surrogatnøkkel. 

I objektdatabaser har hvert objekt en unik ID som er generert av systemet og som ikke er synlig for brukere av systemet. Denne erstatter primærnøkkelen.

Nøkkelattributt
---------------

Et **nøkkelattributt** er et attributt som er med i (minst) én kandidatnøkkel.

Fremmednøkkel
-------------

En **fremmednøkkel** er en henvisning til andre data i en database. I en relasjonsdatabase peker fremmednøkkelen til en kandidatnøkkel. Vanligvis vil dette være en primærnøkkel i en annen tabell, men det er også tillatt at fremmednøkler peker til oppføringer i samme tabell som de forekommer i.

Et eksempel på bruk av fremmednøkkel er at man har to tabeller, hvor den ene inneholder informasjon om ulike forfattere og den andre er en liste over bøker. I boktabellen er det et felt som henviser til forfattertabellen. Dette er en fremmednøkkel. Det er en én-til-mange-relasjon mellom tabellene: Hver bok har bare én forfatter, men en forfatter kan ha skrevet flere bøker.

Andre typer nøkler
------------------

* Naturlig nøkkel

| * v
* d
* r
Databaser |
| --- |
| 
* Database
* Relasjonsdatabase
* Objektdatabase
* Objektrelasjonell database
* XML
* Databasehåndteringssystem (DBMS)
* Databasemotor
* Datavarehus
* Relasjonsalgebra
* Serialiserbarhet
* Historie
* Nøkler
* Normalisering
* Tabell
* SQL
* NoSQL
* XQuery
* ODBC
* JDBC
* Perl DBI

 |
| Tema innen SQL | 
* Select
* Insert
* Update
* Delete
* Join
* Union
* Create
* Drop
* Utløser
* Visning
* Lagret prosedyre

 |
| Implementasjoner | 
* Apache Derby
* Berkeley DB
* Clipper
* Firebird
* IBM DB2
* Informix
* Ingres
* Microsoft SQL Server
* MySQL
* Oracle
* PostgreSQL
* SQLite
* Visual FoxPro

 |