Tabeller
En tabell är ett tvådimensionellt rutnät av celler. Den har rader och kolumner.
Normalt sett innehåller varje tabell en sorts saker/entiteter. Användare, kommentarer, filmer, highscores etc.
När man gör om ett ER-diagram till en databas…
Rektanglarna (entiteterna) blir tabeller.
Egenskaperna blir kolumner.
Relationerna blir kolumner eller nya tabeller.
1:1 och 1:N-relationer blir kolumner med hänvisningar till andra tabeller.
N:M-relationer blir nya tabeller, med kolumner som har hänvisningar till två (eller flera?) tabeller.
Databasens struktur i ett databassystem, alltså vilka tabeller som finns och hur de är uppbyggda, kallas också för databasens schema.
Rad/post
Varje rad i tabellen motsvarar en sak/entitet – en person, en kommentar, en film, ett highscore etc. De kallas också poster. Varje post innehåller en eller flera attribut.
Kolumn/attribut
Varje kolumn i en databastabell motsvarar en specifik egenskap hos saken. De kallas också attribut.
Exempel på kolumner kan vara "username", "password" eller "description".
Celler/värden
Där en rad och en kolumn möts ligger en cell – ett specifikt värde som en sak/entitet har i ett specifikt attribut. Exempel på värden kan vara "1", "micke" eller "Jupiter Ascending".
Primärnyckel
En primärnnyckel är en kolumn eller kombination av kolumner som gör posten unik. I de flesta fall används en särskild "id"-kolumn som primärnyckel.
Ingen rad får ha en tom primärnyckel.
Två rader får inte ha samma primärnyckel.
Ofta markeras primärnyckel-kolumnen genom en lite nyckelsymbol, när en tabell visas grafiskt.
id🔑 | username | password |
---|---|---|
1 | micke | 12345 |
2 | karim | hello1 |
3 | liv | PenguinHotdogBonanza |
Kandidatnyckel
En kandidatnyckel är en potentiell primärnyckel.
I tabellen med användare finns följande kandidatnycklar:
id
username
id+username
id+password
username+password
id+username+password
Varje användare måste (kan man anta) ha ett unikt namn, men flera användare kan ha samma lösenord – därför kan lösenord i sig inte vara en kandidatnyckel.
Alternativ nyckel
Alla kandidatnycklar som inte är primärnyckeln kallas alternativa nycklar.
Främmande nyckel
En främmande nyckel är en kolumn i vilken man fyller i primärnyckeln från en annan tabell. Det är på det viset man skapar relationer av typen 1:N i en relationell databas.
id🔑 | comment | user_id |
---|---|---|
1 | Hej | 1 |
2 | Hej själv! | 2 |
3 | Vad händer? | 2 |
Istället för att innehålla användarens namn både i användar-tabellen och i kommentars-tabellen så lägger man in ett id – där man kan se att användare 1 ("micke") skrivit första kommentaren och användare 2 ("karim") skrivit de nästkommande två.
N:M-Relationer
1:N-relationer är enkla att skapa i tabellform – om en användare ska kunna skriva flera kommentarer, så behövs en tabell för användare och en för kommentarer. Eftersom varje kommentar bara kan skrivas av en användare är det lämpligast att lägga in en främmande nyckel i kommentars-tabellen som hänvisar till användare i användar-tabellen.
N:M är klurigare. Generellt bygger man en "mellan-tabell":
id🔑 | club_name |
---|---|
1 | Hellhawkz |
2 | Everybody Loves Jazz |
3 | The 123s |
id🔑 | user_id | club_id |
---|---|---|
1 | 1 | 1 |
2 | 1 | 2 |
3 | 2 | 2 |
Här är en tabell för klubbar. Varje användare kan vara med i flera klubbar och varje klubb kan ha flera användare. Då skapar man en tredje tabell som bara innehåller den relationen. Den har en primärnyckel samt två främmande nycklar – en som hänvisar till primärycklar i användartabellen och en som hänvisar på samma sätt till klubbtabellen.
Eventuellt skulle man här också kunna säga andra saker om relationen – t.ex. när användaren gick med.
För att undvika risken för duplicering av relationer skulle man också kunna ta bort id-kolumnen och göra kombinationen av user_id och club_id till primärnyckel.
Last updated