Od pytań do tabel
Projekt: baza szkolnego koła - Bazy danych: tabele, relacje i kwerendy (SQL (SQLite))
Szkolne koło zainteresowań chce wiedzieć, **kto chodzi na jakie zajęcia** i **kto je prowadzi**. Stąd trzy tabele: `uczniowie`, `zajecia` (z prowadzącym) i `zapisy`, która łączy ucznia z zajęciami. Jeden uczeń może chodzić na wiele zajęć, a na zajęcia chodzi wielu uczniów: to relacja **wiele do wielu**, zapisana tabelą pośrednią z dwoma kluczami obcymi.
CREATE TABLE uczniowie (
id INTEGER PRIMARY KEY,
imie TEXT NOT NULL,
klasa TEXT NOT NULL
);
CREATE TABLE zajecia (
id INTEGER PRIMARY KEY,
nazwa TEXT NOT NULL,
prowadzacy TEXT NOT NULL
);
CREATE TABLE zapisy (
uczen_id INTEGER NOT NULL REFERENCES uczniowie(id),
zajecia_id INTEGER NOT NULL REFERENCES zajecia(id),
PRIMARY KEY (uczen_id, zajecia_id)
);
INSERT INTO uczniowie (imie, klasa) VALUES ('Ola', '1a'), ('Kuba', '1b'), ('Zuzia', '1a');
INSERT INTO zajecia (nazwa, prowadzacy) VALUES ('robotyka', 'p. Nowak'), ('szachy', 'p. Lis');
INSERT INTO zapisy VALUES (1, 1), (1, 2), (2, 1), (3, 2);
SELECT zajecia.nazwa, COUNT(zapisy.uczen_id) AS uczestnikow
FROM zajecia
JOIN zapisy ON zapisy.zajecia_id = zajecia.id
GROUP BY zajecia.nazwa;Ładowanie interaktywnego edytora... Jeśli się nie pojawi, włącz JavaScript.
Wszystkie lekcje kursu Bazy danych: tabele, relacje i kwerendy·Zaloguj się, aby zapisać postęp na koncie.