Modul 19. Databaser og SQL

Forberedelse

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
3 lags arkitektur
  • 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

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 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)
  • Skriv en SQL sætning, der trækker alle fornavne, efternavn og adresse fra din leverandørtabel
    • Brug:
      SELECT (feltnavn, feltnavn)
      FROM (tabel)
  • 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)
  • 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;

Du kan få hjælp til SQL kodningen på hjemmesiden for W3Schools:

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.