Relationer och främmande nycklar
Koppla samman tabeller med främmande nycklar för att modellera en-till-många- och många-till-många-relationer i Er Supabase Postgres-databas.
Relationer och främmande nycklar är en gratis lektion i Supabase som Backend as a Service på CoddyKit. Detta är lektion 4 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Supabase som Backend as a Service, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Supabase som Backend as a Service innehåller totalt 4 lektioner.
Varför relationer är viktiga
Verkliga data hänger ihop: en användare har många inlägg och en order har många artiklar. Relationer kopplar samman rader i olika tabeller så att du slipper duplicera data.
Vad är en främmande nyckel?
En främmande nyckel är en kolumn som pekar på primärnyckeln i en annan tabell. Den säkerställer att den refererade raden faktiskt finns.
Exempel på en-till-många
En författare skriver många böcker. Tabell books lagrar författarens 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)
);Referensintegritet
Postgres avvisar infogning av en bok med ett author_id som inte finns. Det håller dina data konsekventa.
Beteende för ON DELETE
Bestäm vad som händer när en överordnad rad tas bort:
CASCADEtar även bort de underordnade radernaSET NULLrensar referensenRESTRICTblockerar borttagningen
ALTER TABLE books
ADD CONSTRAINT fk_author
FOREIGN KEY (author_id)
REFERENCES authors(id)
ON DELETE CASCADE;Fråga över flera tabeller
Med Supabase-klienten kan du hämta relaterade rader i ett enda anrop med hjälp av nästlade select-frågor.
const { data } = await supabase
.from('authors')
.select('name, books(title)');Många-till-många-relationer
När båda sidor kan ha många av den andra typen (studenter och kurser) använder du en kopplingstabell som innehåller båda främmande nycklarna.
CREATE TABLE enrollments (
student_id bigint REFERENCES students(id),
course_id bigint REFERENCES courses(id),
PRIMARY KEY (student_id, course_id)
);Sammansatta primärnycklar
I en kopplingstabell bildar paret av främmande nycklar ofta primärnyckeln, vilket förhindrar dubbla kopplingar mellan samma två rader.
Namngivningskonventioner
En vanlig konvention är att namnge främmande nycklar som singular_id (t.ex. author_id). Konsekvent namngivning gör nästlade frågor förutsägbara.
function fkName(table) {
return table.replace(/s$/, '') + '_id';
}
console.log(fkName('authors'));Visualisera i dashboarden
Supabase Table Editor visar relationskopplingar, och Schema Visualizer ritar upp hur dina tabeller hänger ihop. Det hjälper dig att verifiera din design.
Sätt ihop delarna
Modellera kopplingar med främmande nycklar, välj rimliga ON DELETE-regler och använd kopplingstabeller för många-till-många-relationer. Det här är grunden i ett välstrukturerat schema.
Snabb kontroll
Testa vad du har förstått om relationer.
Sammanfattning
Du lärde dig om främmande nycklar, en-till-många- respektive många-till-många-relationer, beteenden för ON DELETE, kopplingstabeller med sammansatta nycklar och hur du frågar efter relaterade data med nästlade select-frågor.
Lär dig Supabase som Backend as a Service med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 11
- Lektioner
- 40
Vanliga frågor
Är lektionen ”Relationer och främmande nycklar” gratis?
Ja – hela texten till ”Relationer och främmande nycklar” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Supabase som Backend as a Service, kan Ni uppgradera till CoddyKit PRO. Kursen i Supabase som Backend as a Service innehåller totalt 4 lektioner.
Vad lär jag mig i ”Relationer och främmande nycklar”?
Koppla samman tabeller med främmande nycklar för att modellera en-till-många- och många-till-många-relationer i Er Supabase Postgres-databas. Ni övar på Supabase som Backend as a Service med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Supabase som Backend as a Service?
Du behöver inga förkunskaper. Utbildningen i Supabase som Backend as a Service på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 4 av 4.
Hur lång tid tar lektionen ”Relationer och främmande nycklar”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Supabase som Backend as a Service-lektionen?
Ja. Varje Supabase som Backend as a Service-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Utforma databasscheman
- Skapa tabeller och kolumner
- Grundläggande datainsättning och frågekörning
- Relationer och främmande nycklar