Forberedelse
- Læs kapitel 14 igen. Læs det grundigt, det er et svært kapitel
- Se videoen Database teori. Du finder den under Informatik C > Videoer > Videoer 10. Database og SQLite https://bliv-klogere.ibc.dk/index.php/videoer-10-databaser-og-sqlite/
Formål
- Repetere databaser
- Diskutere fordele og ulemper ved databaser
- Smage på lidt kodning
Fælles gennemgang
Fra sidst
- Hvilken rolle spiller databaser i 3-lags arkitekturen

- Hvor mange programmer/apps har databaser
- Hvordan ved vi, at et program har databaser
- Hvad er det nu, en database kan, som hverken frontend eller backend kan
- Hvad er en database i bund og grund “bare”
- Hvad er der i vejen med databasen her

- Hvad er forskellen på en flad og en relationel database
- Forklar udtrykket redundans
- Forklar figuren her


Lektien til denne gang
- Gennemgang af relationer
- CRUD
- E-R diagrammer: https://bliv-klogere.ibc.dk/index.php/laerebog-til-modul-3-kapitel-13-til-18/#135_Hvad_er_en_relation
- Gennemgang af SQL. Her er nogle link til W3scools.com
- SELECT … FROM: https://www.w3schools.com/sql/sql_select.asp
- SELECT … FROM … ORDER BY: https://www.w3schools.com/sql/sql_orderby.asp
- SELECT … FROM … WHERE: https://www.w3schools.com/sql/sql_where.asp
- JOIN: https://www.w3schools.com/sql/sql_join.asp
SELECT *
FROM Orders
INNER JOIN Customers
ON Orders.CustomerID=Customers.CustomerID;
Øvelser
19.1 Fordele og ulemper ved databaser
Er du enig eller uenig i mine påstande nedenunder? Begrund dine svar.
- Databaser er besværlige
- Vi bruger næsten aldrig databaser
- Det er nemt at sortere og finde data i databaser
- Vi kan ikke undgå dobbeltregistreringer. En dobbeltregistrering er f.eks. at vi skriver “6000 Kolding” et sted og “6000 Kollin” et andet sted. Dvs. vi laver en stavefejl. Gør vi det, så er databasen “inkonsistent” eller “ubrugelig”. Vi ved nemlig ikke, om byen hedder “Kolding” eller “Kollin”.
- Vi kan dele databaser online
- Databaser findes kun på computere
- Det kan give store problemer, hvis databasen bliver stjålet eller ødelagt. Bemærk at ERP, CRM og CMS systemer er baseret på databaser
- Hvad er et ERP, CRM og CMS systemer forresten (tip: Se i kapitel 10.3 i lærebogen)
- Omkring halvdelen af alle computerprogrammer/apps er baseret på databaser
19.2 Økobutikken “Sund og grøn”
Økobutikken “Sund og Grøn”, der sælger økologiske madvarer, vil gerne have en database over deres leverandører. De overvejer at gå i konkurrence med Årstiderne, som leverer økologiske madkasser.
- Lav et forslag i form af en tabel til, hvad du synes, at de skal registrere. Lav tabellen f.eks. i Word eller Google Docs
- Find på 5 fiktive leverandører og sæt dem ind i din tabel.
- Tip 1: Du må gerne gå ind på https://www.aarstiderne.com og kikke dem i kortene.
- Tip 2: Hvis du har navn, adresse, postnummer og by, så er du godt på vej. Et par ekstra felter, så er vi ved at være der.
- Gennemfør normalisering. Du skal kunne forklare, hvad du gør i normaliseringen. Dvs. du skal have styr på fagudtryk som “primærnøgle”, “redundans” osv. Giv dine tabeller navne
- Når du er færdig med normaliseringen: Prøv at tegne et E-R diagram og fortæl, hvilken relation dine tabeller har til hinanden
Tip: Du kan måske få hjælp fra videoen her:
19.3 SQL kald
Vi ønsker nu at trække data ud af databasen for “Sund og Grøn” vha. SQL. Vi siger, at vi har 2 tabeller. Tabellen “Leverandører” og tabellen “PostnummerBy”. For nemheds skyld siger vi, at tabellen “Levarandører” har felterne Levarandørnummer, Navn, Adresse, Telefonnummer, Mailog Postnummer, undtagen by. TabellenPostnummerBy har kun felterne Postnummer og By.
Databasen kunne se sådan her ud:

- Skriv en SQL sætning, der trækker alle data ud af tabellen “Leverandører”
- Tip: Brug
SELECT (feltnavn, feltnavn eller *, hvis du vil have alle på en gang)
FROM (tabel)
- Tip: Brug
- Skriv en SQL sætning, der trækker alle fornavne, efternavn og adresse fra din leverandørtabel
- Brug:
SELECT (feltnavn, feltnavn)
FROM (tabel)
- Brug:
- Skriv en SQL sætning, der trækker alle data fra din leverandørtabel ud sorteret efter postnummer
- Brug:
SELECT (feltnavn, feltnavn)
FROM (tabel)
ORDER BY (feltnavn)
- Brug:
- Skriv en SQL sætning, der kan hente alle data data ud fra flere tabeller, hvor leverandørtabellen “nok” er den ene tabel
- Brug
SELECT (feltnavn, feltnavn eller *, hvis alt skal vælges)
FROM (ene tabel) INNER JOIN (anden tabel)
ON ene tabel.fremmednøgle = anden tabel. primærnøgle;
- Brug
Du kan få hjælp til SQL kodningen på hjemmesiden for W3Schools:
- SELECT (feltnavne) FROM (tabel) : https://www.w3schools.com/sql/sql_select.asp
- SELECT … FROM … ORDER BY: https://www.w3schools.com/sql/sql_orderby.asp
- SELECT … FROM … WHERE: https://www.w3schools.com/sql/sql_where.asp
19.4 Løbeklubben “Lynet”
Signe Sprint og Mikkel Maraton kan godt lide at løbe. De starter en løbeklub sammen med nogle ligesindede. De vil have følgende oplysninger ind: Navn, adresse. postnummer og by.
- Sæt databasen på 0’de normalform
- Normaliser databasen
- Tegn E-R diagrammet
Løbekluppen Lynet vil have et kontingent. Kr. 400,- for elitemedlemsskab, kr. 300 for almindeligt, kr. 200 for et junior medlemskab.
- Skriv igen databasen ned på 0’de normalform
- Normaliser databasen
- Tegn det nye E-R diagram
19.5 Ekstra opgave. Prøv noget mere SQL
Gå ind på W3schools og find nogle SQL kald. Prøv f.eks. at
- Start på siden https://www.w3schools.com/sql/sql_select.asp og følg kurset
- Når du finder noget spændende, så prøv det af i SQLite
- Det giver plusser at prøve så mange SQL kommandoer af som muligt.