Lektion 15 — Forberedelse
I lektion 13 bor patientlisten i serverens hukommelse. Det, I POST'er,
forsvinder, når programmet stopper. En tabel bor i databasen — et andet
program, på en anden maskine — som gemmer den. Forberedelsen er, hvad en
tabel er, at du selv har skrevet SELECT, WHERE og INSERT, og at du har
en database klar i Neon. I timen samler vi op og skriver i jeres egen
PostgreSQL. Routen kalder databasen i lektion 17.
Forberedelsen er ca. 75 minutter.
1. Tabel, SQL og nøgler (~40 min)
En relationel database gemmer rækker i tabeller. SQL er de sætninger, der opretter tabellen og lægger rækker i den.
Kapitel Relational Databases, modulet SQL and PostgreSQL. Lav disse lectures:
- What Are Relational Databases, and How Do They Differ from Non-Relational Databases?
- What Is SQL, and How Can You Create a Database with Tables?
- What Are the Basic Data Types in SQL?
- How Do You Insert and View Data in a Table?
- What Are Primary and Foreign Keys in SQL, and How Do They Work?
Fokusér på, at en tabel har kolonner og rækker, og at en række er én
patient, ét produkt eller én film. CREATE TABLE navngiver kolonnerne og
deres type. INSERT INTO med kolonnenavne lægger en række i. SELECT henter
rækker, og WHERE vælger hvilke. En primærnøgle udpeger én række. En
fremmednøgle peger på primærnøglen i en anden tabel.
VARCHAR og INTEGER er typer, du skal kunne genkende. SERIAL er
PostgreSQL's måde at nummerere primærnøglen på. Den taster du i timen.
Spring lecturen om at installere Postgres over. Spring relationstyper og joins over. Modulet SQL and Bash (normalisering, SQL injection, N+1) og værkstedet Build a Database of Video Game Characters er ikke forberedelse.
2. Skriv SELECT, WHERE og INSERT (~25 min)
Lav disse lektioner. De kører i browseren. Tabellen hedder movies: én række
pr. film, kolonner for titel, år og instruktør. Det er samme form som
patientlisten, bare med andre kolonner.
Lektion 3 til 12 er filtre, joins og aggregater. Spring dem over via menuen, og gå til lektion 13. Løsningen ligger bag et link, hvis du sidder fast. Brug den først, når du har prøvet selv.
3. Din database i Neon (~10 min)
Neon kører PostgreSQL på en server for dig. Du skriver SQL i en editor i browseren. Databasen kører hos Neon, ikke på din bærbare.
- Åbn https://neon.com og vælg Sign up.

- Vælg GitHub under Create your free account.

- Godkend at Neon må læse din e-mail fra GitHub: Authorize neondatabase.

- Du lander på Projects i din egen organisation. Den er tom. Tryk
Create project.

- På Create project:
- Project name:
lektion15. Billedet viser et andet navn. - Region: skift fra AWS US East 2 (Ohio) til AWS Europe Central 1 (Frankfurt). Regionen kan ikke ændres bagefter.
- Services: lad kun Postgres database være slået til. Resten bruger vi ikke.
- Tryk Create project nederst til højre.

- Project name:
- Projektet er oprettet. Spring Agent prompt over — I skriver selv
forbindelsen til databasen i lektion 17. Tryk Go to project.

- Du lander på Branch overview. Øverst til venstre står projektet og
branchen production. Det er jeres database — branches bruger vi ikke.
Tryk Postgres database i menuen til venstre.

- Menuen folder ud med Tables, SQL Editor, Backup & Restore og
Computes. Tryk SQL Editor.

- SQL-editoren åbner med Neons eksempel, der opretter tabellen
playing_with_neon. Kør det ikke. Markér alt (Ctrl+A, på Mac Cmd+A), og slet det. Tjek øverst til højre, at databasen er neondb.
- Skriv
SELECT 1;og tryk Run. Under knappen står Connected, og svaret er en tabel med én række og værdien1. Sætningen kommer også i History til venstre.
Det er din egen database til øvelserne. Gruppens fælles database opretter I i timen.
Hvis du sidder fast: Er New project gråt, og står der To create a new project, use the Neon Postgres integration in Vercel, så er du i en organisation, Vercel styrer. Det sker, hvis din Neon-konto er oprettet via Vercel. Klik på organisationsnavnet øverst til højre, vælg Create organization → Free, og opret projektet dér.
Når du er færdig
Du skal kunne forklare:
- at en tabel er kolonner og rækker, og at én række er én ting (en patient, en film)
- at
SELECThenter rækker,WHEREfiltrerer dem, ogINSERT INTOlægger en ny række i - at en primærnøgle udpeger én række, og at en fremmednøgle peger på en primærnøgle i en anden tabel
- at listen i
server.jsstadig bor i serverens hukommelse. Den er endnu ikke en tabel
Og du skal have løst de tre SQLBolt-lektioner og kørt SELECT 1; i Neon.
CREATE TABLE på en patienttabel, UPDATE og DELETE tager vi i timen. At
en Express-route kalder databasen, er lektion 17.
Praktisk
- freeCodeCamp kræver login (gratis), hvis du vil gemme din fremgang.
- SQLBolt kræver ingen konto.
- Neon kræver en konto (gratis). Log ind med GitHub. Der skal ikke installeres noget.
server.jsskal blive stående, som den er fra lektion 13.- SQLBolt kører SQLite.
SELECT,WHEREogINSERTer de samme sætninger, som du skriver i PostgreSQL.