En afhængighed er en begrænsning, der gælder for eller definerer forholdet mellem attributter. Det forekommer i en database, når oplysninger, der er gemt i den samme database tabel, bestemmer unikt andre oplysninger, der er gemt i samme tabel. Du kan også beskrive dette som et forhold, hvor man ved at kende værdien af en attribut (eller et sæt attributter) er nok til at fortælle værdien af en anden attribut (eller sæt attributter) i samme tabel.
Database afhængigheder forveksler ofte både studerende og databasepersonale. Heldigvis er de ikke så komplicerede, som de kan synes. De kan bedst forklares ved hjælp af et par eksempler. Her undersøger vi almindelige databaseafhængighedstyper.
Database afhængigheder og funktionelle afhængigheder
At sige, at der er en afhængighed mellem attributter i et bord, er det samme som at sige, at der er en funktionel afhængighed mellem disse attributter. Hvis der er en afhængighed i en database, sådan at attribut B er afhængig af attributt A, ville du skrive dette som:
A -> B
For eksempel kan i en tabel med medarbejderegenskaber, herunder Social Security Number (SSN) og navn, siges, at navnet er afhængigt af SSN (eller SSN -> navn), fordi en medarbejders navn kan være unikt bestemt af en SSN. Den omvendte erklæring (navn -> SSN) er dog ikke sandt, fordi mere end én medarbejder kan have samme navn, men altid har forskellige SSN'er. En triviel funktionel afhængighed opstår, når du beskriver en funktionel afhængighed af en attribut på en samling af attributter, der indeholder den oprindelige attribut. For eksempel er {A, B} -> B en triviel funktionel afhængighed, som det er {navn, SSN} -> SSN. Denne type funktionel afhængighed kaldes trivial, fordi den kan stamme fra sund fornuft. Det er indlysende, at hvis du allerede kender værdien af B, så kan værdien af B være entydigt bestemt af den viden. En fuld funktionel afhængighed opstår, når du allerede opfylder kravene til en funktionel afhængighed, og sæt af attributter på venstre side af den funktionelle afhængighedserklæring kan ikke reduceres yderligere. For eksempel er {SSN, alder} -> navn en funktionel afhængighed, men det er ikke en fuld funktionel afhængighed, fordi du kan fjerne alder fra venstre side af udsagnet uden at påvirke afhængighedsforholdet. Transitive afhængigheder opstår, når der er et indirekte forhold, der forårsager en funktionel afhængighed. For eksempel er A -> C en transitiv afhængighed, når den kun er sand, fordi både A -> B og B -> C er sande. Multivalente afhængigheder opstår, når tilstedeværelsen af en eller flere rækker i en tabel indebærer tilstedeværelsen af en eller flere andre rækker i samme tabel. Forestil dig for eksempel en bilvirksomhed, der fremstiller mange bilmodeller, men gør altid både røde og blå farver på hver model. Hvis du har et bord, der indeholder modelnavn, farve og år for hver bil, som firmaet fremstiller, er der en multivalued afhængighed i den tabel. Hvis der er en række til et bestemt modelnavn og år i blåt, skal der også være en tilsvarende række svarende til den røde version af den samme bil. Database afhængigheder er vigtige at forstå, fordi de giver de grundlæggende byggesten, der bruges i databasen normalisering, processen med effektivt at organisere data i en database. For eksempel: Trivial funktionelle afhængigheder
Fuld funktionelle afhængigheder
Transitive afhængigheder
Multivalente afhængigheder
Betydningen af afhængigheder