Download as pdf or txt
Download as pdf or txt
You are on page 1of 1

Bazy danych. Lista nr 3 „księgarnia” (laboratorium).

1. Pewna księgarnia ma bazę danych zgodną z poniższym schematem.

authors (author_id TEXT, name TEXT)

books (isbn TEXT, publisher TEXT, title TEXT, publication_year INTEGER)

copies (copy_id INTEGER, isbn TEXT)

authorship (isbn TEXT, author_id TEXT)

categories (category_id INTEGER, category_name TEXT)

in_category (isbn TEXT, category_id INTEGER)

Napisz zapytania realizujące następujące zadania.

(a) Wyznacz tytuły książek wydanych w roku 1999. Wyznacz liczbę takich tytułów.
(b) Wyznacz nazwiska autorów, którzy wydali przynajmniej jedną książkę przed rokiem 1950.
(c) Wyznacz nazwiska autorów, którzy napisali przynajmniej jedną książkę na temat baz danych. Znajdź
autora, który napisał najstarszą książkę na ten temat (wśród książek, których rok wydania jest znany;
w przypadku remisu, wybierz dowolnie jednego z autorów).
(d) Wyznacz nazwy kategorii, w których zakresie znajdują się książki, których autorzy napisali przynaj-
mniej jedną książkę z biologii.
(e) Sprawdź, czy wśród książek znajduje się taka, której żadnego egzemplarza nie ma obecnie w księgarni.
(f) Klient chce kupić „Draculę” Brama Stokera. Sprawdź, czy taka książka jest na składzie i jeśli jest,
zaktualizuj bazę o informację o sprzedaży jednego egzemplarza (oczywiście zakładamy, że klient życzy
sobie najnowsze z dostępnych wydań; zwróć uwagę, że tytuł może się nieco różnić).
(g) Wyznacz nazwiska autorów książek o najkrótszym tytule.
(h) Znajdź nazwiska autorów, którzy napisali więcej książek z psychologii niż wynosi średnia liczba
książek przypadających na jednego autora w tej dziedzinie.

2. (Zadanie domowe) Na wykładzie analizowane były więzy w przykładowej bazie sklepu internetowego.
W celach dydaktycznych wiele więzów nie było zakładanych od razu w ramach polecenia CREATE TABLE,
tylko poprzez polecenia ALTER TABLE. Stwórz tę finalną postać bazy, używając jedynie definicji więzów w
ramach poleceń CREATE TABLE. (Schemat tej bazy oraz dydaktyczny skrypt ją zakładający znajduje się
na moodle, w ramach wykładu Klucze główne oraz inne więzy integralności.)

3. (Zadanie domowe)

(a) Załóż tabelę temp o czterech kolumnach i zdefiniuj dowolny widok o nazwie widok na dwóch pierw-
szych kolumnach tej tabeli, odwołujący się jednak do kolumny trzeciej i nie odwołujący się w ogóle
do kolumny czwartej.
(b) Spróbuj usunąć teraz tabelę temp, najpierw bez użycia komendy CASCADE, a potem z nią.
(c) Raz jeszcze załóż temp oraz widok. Zmień nazwę pierwszej kolumny tabeli temp i zobacz, co się stanie
z definicją widoku (komenda psql: \d widok).
(d) Spróbuj usunąć z tabeli temp czwartą kolumnę, następnie trzecią oraz drugą (bez użycia CASCADE).
Czy można zmienić nazwę kolumny w widoku (pomoc w psql: \h ALTER, \h ALTER VIEW)?

You might also like