# Relationer

\[ [Installera verktyg](https://db.progdocs.se/sqlite/installera-sqlite-verktyg) | [Kommandon](https://db.progdocs.se/sqlite/kommandon) | [**Relationer**](https://db.progdocs.se/sqlite/relationer) | [Joins](https://db.progdocs.se/sqlite/joins) ]

Nedanstående tabeller är ett exempel på en 1:N-relation.

**students**

<table><thead><tr><th width="85.33333333333331">id🔑</th><th width="132">name</th><th width="134">surname</th><th>pnumber</th><th>classid</th></tr></thead><tbody><tr><td>1</td><td>Mikael</td><td>Bergström</td><td>XXXXXX-XXXX</td><td>1</td></tr><tr><td>2</td><td>Mohammad</td><td>Mohammadi</td><td>XXXXXX-XXXX</td><td>2</td></tr><tr><td>3</td><td>Anna-Karin</td><td>Karlsson</td><td>XXXXXX-XXXX</td><td>1</td></tr></tbody></table>

**classes**

<table><thead><tr><th width="88.33333333333331">id🔑</th><th width="141">name</th><th>mentor</th></tr></thead><tbody><tr><td>1</td><td>TE00A</td><td>Mira Belle</td></tr><tr><td>2</td><td>TE00B</td><td>Kevin McAllister</td></tr></tbody></table>

Här är relationen att kolumnen **classid** i tabellen **students** innehåller siffror som hör ihop med kolumnen **id** i tabellen **classes**. Observera att det är classes-tabellens **primärnyckel** som används.

För att hindra användare från att lägga in icke-giltiga värden classid-kolumnen så kan relationen skrivas in i tabellens definition när den skapas (det kan också göras i efterhand via [ALTER TABLE](https://db.progdocs.se/kommandon#alter-table)):

```sql
CREATE TABLE classes (
	id INTEGER PRIMARY KEY AUTOINCREMENT,
	name TEXT NOT NULL,
	mentor TEXT NOT NULL
);

CREATE TABLE students (
	id INTEGER PRIMARY KEY AUTOINCREMENT,
	name TEXT NOT NULL,
	surname TEXT NOT NULL,
	pnumber TEXT NOT NULL,
	class_id INTEGER NOT NULL,
	FOREIGN KEY(classid) REFERENCES classes(id)
);
```

Med andra ord lägger man helt enkelt till `FOREIGN KEY(x) REFERENCES table(y)` för att koppla kolumnen x till kolumnen y i tabellen "table"
