Grundbegreber og skrivemåden vi bruger til at beskrive et databaseschema
En entitet er en type af ting, systemet skal gemme oplysninger om, fx en kunde eller en ordre. I databasen bliver hver entitet til en tabel, og hver forekomst (fx Anna) bliver til en række.
En attribut er en egenskab ved entiteten, fx navn eller email. I databasen bliver hver attribut til en kolonne i tabellen.
Primærnøglen identificerer entydigt én række i en tabel. Værdien må
aldrig gentages og må aldrig være NULL. Marker den med
PK() om attributten.
En fremmednøgle er en attribut, der peger på en primærnøgle i en
anden (eller samme) tabel. Værdien må gerne gentages - det er sådan
en 1-til-mange-relation vises. Marker den med FK() om
attributten.
En unik kolonne må ikke have samme værdi to gange,
men er ikke nødvendigvis primærnøgle, fx en emailadresse. I SQL
bruges ofte UNIQUE-constraint til dette.
NULL betyder "ingen værdi" - det er ikke det samme som 0 eller
en tom tekststreng, det betyder at cellen ikke har fået en værdi. Brug NOT NULL, når en attribut altid
skal have en værdi.
Fordi NULL er en ukendt værdi, giver sammenligninger med
NULL hverken sandt eller falsk, men
unknown.
Hvis Alder er NULL, bliver Alder > 18 til
NULL > 18, hvilket er unknown - ikke falsk.
WHERE
dropper rækker med unknown, ligesom med falsk. Brug
IS NULL/IS NOT NULL til at spørge direkte
til, om værdien mangler.Et schema skrives som Tabelnavn(attribut1, attribut2, ...).
Marker primærnøgler med PK() og fremmednøgler med
FK() om attributten:
Customer(PK(customer_id), name, email) Order(PK(order_id), FK(customer_id), order_date)
Hvis primærnøglen består af flere attributter tilsammen, angives det i stedet på en ny, indrykket linje under tabellen:
OrderLine(order_id, product_id, quantity) PK(order_id, product_id)