Relasjoner og fremmednøkler
Koble tabeller sammen med fremmednøkler for å modellere én-til-mange- og mange-til-mange-relasjoner i Supabase Postgres-databasen.
Relasjoner og fremmednøkler er en gratis leksjon i Supabase som backend som tjeneste på CoddyKit. Dette er leksjon 4 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Supabase som backend som tjeneste, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Supabase som backend som tjeneste inneholder totalt 4 leksjoner.
Hvorfor relasjoner er viktige
Reelle data henger sammen: En bruker har mange innlegg, og en ordre har mange varer. Relasjoner kobler rader på tvers av tabeller, slik at De unngår å duplisere data.
Hva er en fremmednøkkel?
En fremmednøkkel er en kolonne som peker på primærnøkkelen i en annen tabell. Den sikrer at den refererte raden faktisk finnes.
Eksempel på én-til-mange
Én forfatter skriver mange bøker. Tabellene books lagrer forfatterens id.
CREATE TABLE authors (
id bigint PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
name text NOT NULL
);
CREATE TABLE books (
id bigint PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
title text NOT NULL,
author_id bigint REFERENCES authors(id)
);Referanseintegritet
Postgres avviser innsending av en bok med en author_id som ikke finnes. Dette holder dataene konsistente.
ON DELETE-atferd
Bestem hva som skal skje når en overordnet rad slettes:
CASCADEsletter også de underordnede radeneSET NULLfjerner referansenRESTRICTblokkerer slettingen
ALTER TABLE books
ADD CONSTRAINT fk_author
FOREIGN KEY (author_id)
REFERENCES authors(id)
ON DELETE CASCADE;Spørre på tvers av tabeller
Med Supabase-klienten kan De hente relaterte rader i ett kall ved hjelp av nestede select-operasjoner.
const { data } = await supabase
.from('authors')
.select('name, books(title)');Mange-til-mange-relasjoner
Når begge sider kan ha mange av den andre typen (studenter og kurs), bruker De en koblingstabell som inneholder begge fremmednøklene.
CREATE TABLE enrollments (
student_id bigint REFERENCES students(id),
course_id bigint REFERENCES courses(id),
PRIMARY KEY (student_id, course_id)
);Sammensatte primærnøkler
I en koblingstabell utgjør paret av fremmednøkler ofte primærnøkkelen, noe som hindrer dupliserte koblinger mellom de samme to radene.
Navnekonvensjoner
En vanlig konvensjon er å navngi fremmednøkler som singular_id (for eksempel author_id). Konsistens gjør nestede spørringer forutsigbare.
function fkName(table) {
return table.replace(/s$/, '') + '_id';
}
console.log(fkName('authors'));Visualisere i dashbordet
Supabase Table Editor viser relasjonskoblinger, og Schema Visualizer tegner hvordan tabellene er koblet sammen. Dette gjør det enklere å kontrollere utformingen.
Sette det hele sammen
Modeller koblinger med fremmednøkler, velg fornuftige ON DELETE-regler, og bruk koblingstabeller for mange-til-mange-relasjoner. Dette er grunnlaget for et ryddig skjema.
Rask kontroll
Test forståelsen Deres av relasjoner.
Oppsummering
De lærte om fremmednøkler, én-til-mange- kontra mange-til-mange-relasjoner, ON DELETE-atferd, koblingstabeller med sammensatte nøkler og hvordan De kan spørre etter relaterte data med nestede select-operasjoner.
Lær deg Supabase som backend som tjeneste med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 11
- Leksjoner
- 40
Ofte stilte spørsmål
Er leksjonen «Relasjoner og fremmednøkler» gratis?
Ja – hele teksten i «Relasjoner og fremmednøkler» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Supabase som backend som tjeneste-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Supabase som backend som tjeneste inneholder totalt 4 leksjoner.
Hva lærer jeg i «Relasjoner og fremmednøkler»?
Koble tabeller sammen med fremmednøkler for å modellere én-til-mange- og mange-til-mange-relasjoner i Supabase Postgres-databasen. Du øver på Supabase som backend som tjeneste med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med Supabase som backend som tjeneste?
Ingen tidligere erfaring er nødvendig. Supabase som backend som tjeneste på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 4 av 4.
Hvor lang tid tar leksjonen «Relasjoner og fremmednøkler»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne Supabase som backend som tjeneste-leksjonen?
Ja. Alle Supabase som backend som tjeneste-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- Utforming av databaseskjemaer
- Opprette tabeller og kolonner
- Grunnleggende datainsetting og spørringer
- Relasjoner og fremmednøkler