Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Zad. 1
- BAZA TURNIEJE MA UMOŻLIWIĆ PRZECHOWYWAĆ INFORMACJE O ZAWODNIKACH TENISA ZIEMNEGO, TURNIEJACH, W KTÓRYCH UCZESTNICZĄ, A CO ZA TYM IDZIE WSZELKIE INFORMACJE O MECZACH PRZEZ NICH ROZEGRANYCH.
- DLA KAŻDEGO ZAWODNIKA PRZECHOWYWANY JEST UNIKALNY NUMER, NAZWISKO, NAZWA KLUBU, PŁEĆ ORAZ DATA URODZENIA. ZAWODNIK MOŻE UCZESTNICZYĆ W WIELU TURNIEJACH RÓŻNEGO TYPU. TURNIEJ OPISANY JEST PRZEZ UNIKALNY NUMER, NAZWĘ, DATĘ ROZPOCZĘCIA,
- DATĘ ZAKOŃCZENIA, ILOŚĆ UCZESTNIKÓW. ZAWODNICY UCZESTNICZĄ W WIELU MECZACH. KAŻDY MECZ JEST OPISANY ZA POMOCĄ UNIKALNEGO NUMERU, DATY, GODZINY, ETAPU, WYNIKU INFORMACJI DODATKOWYCH.
- a) Baza danych - TURNIEJE
- Tabele - Zawodnicy, Turnieje, Mecze.
- Atrybuty:
- - Dla tabeli Zawodnicy: Unikalny numer, nazwisko, nazwa klubu, płeć, data urodzenia
- - Dla tabeli Turnieje: Unikalny numer, nazwa, data rozpoczęcia, data zakończenia, ilość uczestników
- - Dla tabeli mecz: Unikalny numer, data, godzina, etap, wynik informacji dodatkowych
- Relacje:
- 1:n między Zawodnicy a Mecze
- b)
- To samo co wyżej, tylko:
- Tabele -> encje
- Relacje -> Związki
- Atrybuty -> atrybuty :D
- c)
- Zad. 2
- GMINA = {ID_DZIALKI, ID_OBSZARU, POWIERZCHNIA, CENA, PODATEK}
- Nie ogarniam tego zadania kompletnie xD
- Zad. 1
- Podobnie...
- Zad. 2
- a)
- SELECT nazwisko - pobierz kolumnę nazwisko
- FROM czytelnicy INNER JOIN wypozyczenia - z tabeli czytelnicy, wykonaj wewnętrzne złączenie z tabelą
- ON czytelnicy.id_czytelnika=wypozyczenia.id_czytelnika - wykonaj złączenie dla pasujących wartości kolumny id.czytelnika
- GROUP BY nazwisko - pogrupuj po kolumnie nazwisko
- HAVING COUNT(*) > 1 - filtruj grupy, minimum 1 wystąpienie w grupie
- ORDER BY nazwisko - sortuj rosnąco według kolumny nazwisko
- b)
- Wynik zapytania = pusty
- SELECT nazwisko
- FROM czytelnicy INNER JOIN wypozyczenia
- ON czytelnicy.id_czytelnika = wypozyczenia.id_czytelnika
- GROUP BY nazwisko
- HAVING COUNT(*) > 1
- ORDER BY nazwisko
- SELECT nazwisko FROM czytelnicy => wszystkie nazwiska
- SELECT nazwisko
- FROM czytelnicy INNER JOIN wypozyczenia
- ON czytelnicy.id_czytelnika = wypozyczenia.id_czytelnika => to samo, ponieważ id są takie same i wszystkie rekordy pasujących
- SELECT nazwisko
- FROM czytelnicy INNER JOIN wypozyczenia
- ON czytelnicy.id_czytelnika = wypozyczenia.id_czytelnika
- GROUP BY nazwisko => to samo, ponieważ każda grupa składa się z jednego nazwiska
- SELECT nazwisko
- FROM czytelnicy INNER JOIN wypozyczenia
- ON czytelnicy.id_czytelnika = wypozyczenia.id_czytelnika
- GROUP BY nazwisko
- HAVING COUNT(*) > 1 => pusto, ponieważ nie ma grupy zawierającej więcej niż jeden rekord
- SELECT nazwisko
- FROM czytelnicy INNER JOIN wypozyczenia
- ON czytelnicy.id_czytelnika = wypozyczenia.id_czytelnika
- GROUP BY nazwisko
- HAVING COUNT(*) > 1
- ORDER BY nazwisko => pusto, nie ma już czego sortować xD
- c) No nie wiem alternatywne rozwiązanie czego, skoro zapytanie zwraca pusty wynik. Albo tu jest błąd albo zadanie pułapka, bo sprawdzałem nawet wynik w MySQL na tych danych i jest pusto :)
- Zad. 3
- a)
- CREATE TABLE -> tworzy tabele o nazwie KSIAZKI, zawiera kolumny:
- - ID_KSIAZKI o typie całkowitym, jest identyfikatorem (automatycznie zwiększa wartość o 1) i kluczem podstawowym
- - TYTUL o typie tekstowym, z rozmiarem 40
- - CENA o typie MONEY
- - ILOSC o type INT
- ALTER TABLE - dodanie więzu integralności CHECK na kolumnę CENY sprawdzający czy jest większa bądź równa 5
- DROP TABLE - usuwa tabele książki
- b) INSERT INTO - dodaje nowe rekordy z poszczególnymi wartościami np. TYTUL1, 17, 5
- UPDATE KSIAZKI SET CENA = CENA * 2 WHERE CENA < 10 ===> ustawia cene dwa razy większą dla rekordów z ceną mniejszą niż 10
- UPDATE KSIAZKI SET CENA = CENA / 2 WHERE CENA > 10 ===> ustawia cene dwa razy większą dla rekordów z ceną większą niż 10
- Wartości po 1 UPDATE:
- 1 rekord => cena = 8.5
- 2 rekord => cena = 6
- 3 rekord => cena = 14
- 4 rekord => cena = 10 (bez zmian)
- Wartości po 2 UPDATE:
- 1 rekord => cena = 17
- 2 rekord => cena = 12
- 3 rekord => cena = 7
- 4 rekord => cena = 10 (bez zmian)
- c) Wartości wróciły do swoich początkowych wartości, więc również nie wiem o jakie alternatywne rozwiązanie chodzi. Równie dobrze można by nie wykonywać tych UPDATE :D
- Zad. 4
- a)
- UPDATE -> aktualizuje tabele KSIAZKI, ustawia kolumnę TYTUL na wartość 'brak' dla każdego rekordu, którego ID_KSIAZKI zawiera w zbiorze zwrócony przez podzapytanie SELECT -> SELECT zwraca wszystkie ID_KSIAZKI, które są aktualnie dodawane
- b)
- Typy:
- AFTER - wykonuje się po zapytaniu
- BEFORE - wykonuje się przed zapytaniem
- Zdarzenia:
- * Manipulacji danych
- UPDATE - zdarzenie aktualizacji danych
- INSERT - zdarzenie dodania danych
- DELETE - zdarzenie usunięcia danych
- * Definiowania danych
- CREATE - zdarzenie tworzenia tabeli
- ALTER - zdarzenie zmiany tabeli
- DROP - zdarzenie usunięcia tabeli
- * Logowania
- LOGON - logowanie do bazy
- c) Tabele koncepcyjne:
- DELETED - tabela zawierająca usunięte lub usuwane właśnie rekordy
- INSERTED - tabela zawierająca dodane lub dodawane właśnie rekordy
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement