Uruchom bazę danych Hobby z listy 2. Utwórz indeksy dla tabel:
- dla tabeli
osoba
indeks na kolumnieimię
,- dla tabeli
osoba
indeks na kolumniedataUrodzenia
,- dla tabeli
sport
indeks na grupie kolumn (id
,nazwa
),- dla tabeli
inne
indeks na grupie kolumn (nazwa
,id
),- dla tabeli
hobby
indeks na grupie kolumn (osoba
,id
,typ
).Wskaż które indeksy istniały wcześniej. Wskaż te, do których istniał wcześniej podobny indeks. Uzasadnij wybór typu indeksu dla każdego z podpunktów.
Utwórz zapytania zgodne z poniższą specyfikacją. Sprawdź, w których przypadkach zostaną wykorzystane indeksy. Czy wybór typu indeksu miał wpływ na wykorzystanie indeksu?
- Znajdź płeć wszystkich osób o imieniu rozpoczynającym się od ‘A’.
- Wypisz posortowaną listę nazw sportów drużynowych.
- Wypisz pary (id) sportów indywidualnych, które uprawiane są w tej samej lokacji.
- Znajdź wszystkie osoby urodzone przed 2000-01-01.
- Znajdź nazwę najpopularniejszego hobby.
- Wypisz imię najstarszego posiadacza psa.
Utwórz tablę
zawody
o kolumnachid
,nazwa
,pensja min
,pensja max
oraz tabelępraca
zawierającą informację o id zawodu, id osoby oraz jej zarobkach.
Korzystając z pętli uzupełnij tabelęzawody
przynajmniej 10 różnymi zawodami (zadbaj o poprawne widełki płacowe), a następnie, z wykorzystaniem kursora na tabeliosoba
, przypisz każdej osobie zawód (wraz z odpowiednią pensją) i uzupełnij tabelępraca
.Napisz procedurę, która przyjmując dwa parametry wejściowe:
agg
orazkol
wypisuje wynik o schemacie (kol
,agg
, ), gdzie jest wynikiem zastosowania funkcji agregującejagg
na kolumniekol
w tabeliosoba
lub zwróci informację o błędzie. Możliwe wykorzystanie:
- funkcja
COUNT
na kolumnie imię lub płeć- funkcja
GROUP_CONCAT
na dowolnej kolumnie nie będącej id- funkcja
MIN
,MAX
orazAVG
na kolumniedataUrodzenia
, przy czym wynikAVG
(w związku z działaniem średniej na dacie) powinien zwracać średni wiek w dniu wywołania procedury- funkcja
STD
orazVAR_POP
na kolumniedataUrodzenia
, działająca analogicznie do funkcjiAVG
Załóż obecność użytkownika, próbującego dokonać zmian w strukturze jak i zawartości bazy danych, próbującego wywołać błąd funkcji lub poznać strukturę tabel. Zadbaj o poprawność i bezpieczeństwo działania.
Utwórz tabelę
hasła
zawierającą informacje o id osoby oraz jej haśle. W kolumnie odnoszącej się do hasła przechowuj tylko hash hasła (wykorzystaj funkcjęmd5()
lubsha1()
. Napisz procedurę przyjmujacą jako parametry imię osoby oraz jej hasło, a następnie hashuje je (wykorzystując odpowiednią funkcję) i w przypadku zgodności, zwraca datę urodzenia osoby, w przypadku braku zgodności wypisuje losową datę (losowa data powinna uwzględniać wymagania odnośnie pełnoletności oraz nie implikować osób ponad 100letnich).Pobierz WebGoat i uruchom na swoim komputerze (w celu uniknięcia podatności możesz rozłączyć się z internetem). Wykonaj tutorial odnośnie Injection Flaws:
- opcjonalnie – SQL Injection (introduction)
- SQL Injection (advanced)
- SQL Injection (mitigation)
Wybierz jedną z sekcji (advanced lub mitigation) i opisz wykonane ćwiczenia oraz wyciągnięte wnioski. Raport wyślij prowadzącemu zajęcia co najmniej 24 godziny przed terminem oddania.
Wykorzystując CTE oraz rekursję napisz zapytanie obliczające liczbę dla nieujemnych liczb całkowitych . Pamiętaj o warunkach brzegowych . Wywołaj zapytanie dla oraz .
Napisz procedurę, która jako parametr wejściowy przyjmuję nazwę zawodu, a następnie daje wszystkim wykonującym ten zawód 10% podwyżki przy zachowaniu ograniczeń wynikającymi z widełek płacowych w tabeli
zawody
. Operacja powinna wykonać się transakcyjnie, tzn. albo wszyscy pracownicy danego zawodu dostają podwyżkę albo (przy przekroczeniu widełek przez przynajmniej jedną osobę) nikt.Napisz procedurę, która przyjmuje jako parametr nazwę zawodu, a następnie zwraca, na podstawie tabeli
praca
, informacje na temat średniej pensji osób pracujących w danym zawodzie przy zachowaniu 0.03–prywatności różnicowej. Zadbaj o to, by zwracany wynik nie wykraczał poza widełki dla danego zawodu.Zrób Backup bazy danych tej listy. Usuń bazę danych, a następnie ją przywróć z backupu. Sporządź krótki raport z wykonanych czynności. Uwzględnij zarówno obsługę w swoim IDE jak i wykorzystanie wyłącznie linii komend. Wyjaśnij różnicę między backupem pełnym a różnicowym. Raport wyślij prowadzącemu zajęcia co najmniej 24 godziny przed terminem oddania.
Pliki ex-*.sql
zawierają zadane kwerendy.
Raporty do zadań 6 oraz 10 znajdują się w osobnych dokumentach MD.