För det här ER-diagrammet har det även använts en del bakgrundsinformation som inte står i scenariot, till exempel att det inte finns lösa kommuner som inte tillhör något län.
Man kan också tänka sig en lösning där Tätort inte är en svag entitetstyp, utan en vanlig stark entitetstyp. Då måste man skapa en nyckel för Tätort, till exempel en särskild tätortskod.
Här visas först en lösning där vi använder en extra, numerisk nyckel i varje tabell, kallad Kod.
Tabeller, med primärnyckeln understruken:
Län(Kod, Namn, Folkmängd, Residensstad)
Kommuner(Kod, Namn, Folkmängd, Län)
Tätorter(Kod, Namn, Kommun, Folkmängd);
Namn är en alternativnyckel i Län
Namn är en alternativnyckel i Kommun
Namn och Kommun bildar en sammansatt alternativnyckel i Tätorter
Län.Residensstad refererar till Tätorter.Kod
Kommuner.Län refererar till Län.Kod
Tätorter.Kommun refererar till Kommun.Kod
Alternativ 2
Här har vi en alternativ lösning, utan den extra numeriska nyckeln, utan där vi bara använt namnen på länen, kommunerna och tätorterna.
Tabeller, med primärnyckeln understruken:
Län(Namn, Folkmängd, Residensstadsnamn, Residensstadskommun)
Kommuner(Namn, Folkmängd, Län)
Tätorter(Namn, Kommun, Folkmängd);
Kommuner.Län refererar till Län.Namn
Tätorter.Kommun refererar till Kommun.Namn
I tabellen Län bildar Residensstadsnamn och Residensstadskommun
en sammansatt främmande nyckel som refererar till
den sammansatta nyckeln Namn och Kommun i Tätorter
a) Hur många människor bor det i Åre kommun?
select Folkmangd from Kommuner where Namn = 'Åre kommun';
b) Vad heter residensstaden i Kalmar län, och hur många personer bor det i den?
select Tatorter.Namn, Tatorter.Folkmangd from Lan, Tatorter where Lan.Residensstadsnamn = Tatorter.Namn and Lan.Residensstadskommun = Tatorter.Kommun and Lan.Namn = 'Kalmar län';
c) Vad heter tätorterna som finns i Kumla kommun?
select Namn from Tatorter where Kommun = 'Kumla kommun';
d) Vad är den sammanlagda folkmängden för alla kommuner som ligger i Örebro län?
select sum(Folkmangd) from Kommuner where Lan = 'Örebro län';
e) Vad heter den största tätorten i Stockholms län?
create view Stockholmsorter as select Tatorter.Namn, Tatorter.Folkmangd from Tatorter, Kommuner where Tatorter.Kommun = Kommuner.Namn and Kommuner.Lan = 'Stockholms län'; select Namn from Stockholmsorter where Folkmangd in (select max(Folkmangd) from Stockholmsorter);
b)
Det blir en enda tabell (med primärnyckeln understruken):
Region(Nr, Namn, Folkmängd, Tillhör)
Region.Tillhör refererar till Region.Nr
c)
select Folkmangd from Region where Namn = 'Norrland';
d)
select norrlands_delar.Namn from Region as norrland, Region as norrlands_delar where norrland.Namn = 'Norrland' and norrlands_delar.Tillhör = norrland.Nr;