Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski 1 informatyka +
2 TYTUŁ: Bazy danych i SQL a ptaki polskie (Kto pyta nie błądzi) AUTOR: Andrzej Ptasznik
Bazy danych są wszędzie Gromadzimy różne dane Zapotrzebowanie na gromadzenie danych stale rośnie W jakim celu gromadzimy dane?? 3 Wspieranie codziennej działalności Sprawozdawczość i archiwizacja Analiza, analiza, analiza!!!!!!! ?????
Zacznij od … bazy Dziedzina problemu Technologia Projekt bazy danych Rejestracja danych Wykorzystanie bazy danych - analiza 4
Bazy danych opisują różne dziedziny Każda baza danych jest obrazem pewnej rzeczywistości(dziedziny problemu) Najczęściej wykorzystywane są bazy danych oparte na modelu relacyjnym Podstawą modelu relacyjnego jest pojęcie tabeli Wniosek : W relacyjnych bazach danych odwzorowujemy dziedzinę problemu za pomocą dwuwymiarowych tabel 5
Dziedzina problemu Formułujemy problem : Chcemy rejestrować obserwacje ptaków na obszarze Polski Zadanie : Zaprojektować odpowiednia bazę danych Krok pierwszy : Rozpoznanie dziedziny problemu 6
Technologia Do tworzenia bazy danych o nazwie „PtakiPolskie” wykorzystamy technologię MS SQL Server 2012 Express Edition Technologia dostępna darmowo nawet do zastosowań komercyjnych MS SQL Server 2012 jest najczęściej wykorzystywaną technologią przy realizacji nowych projektów 7
Projektujemy bazę danych Fakt 1 – Z rozpoznania dziedziny problemu wynika, że gatunki ptaków są łączone w rodziny a rodziny w rzędy 8 Struktura tabeli Przykładowa zawartość Klucz podstawowy Typy danych IdRzeduNazwaPLNazwaLac 1blaszkodziobeAnseriformes 2brodzaceCiconiiformes 3nuryGaviiformes 4pełnopłetwePelecaniformes 5perkozyPodicipediformes 6wróblowePasseriformes
Projektujemy bazę danych cd. Wymaganie : Rodziny ptaków są gromadzone w rzędy 9 IdRodzinyNazwaPLNazwaLacIdRzedu 1bocianowateCiconiidae2 2czaplowateArdeidae4 3drozdowateTurdidae6 4ibisowateThreskiornithidae4 5jaskółkowateHirundinidae6 6jemiołuszkowateBombycillidae6 7kaczkowateAnatidae1 8krukowateCorvidae6 9łuszczakiFringillidae6 10nuryGaviidae3 11perkozyPodicipedidae5 12pliszkowateMotacillidae6 13sikoryParidae6 14skowronkiAlaudidae6 15wróblowatePasseridae6 Klucz obcy Wiersz z tabeli Rzedy
Projektujemy bazę danych cd. 10
Projektujemy bazę danych cd. 11 Fragment bazy danych opisujący podział administracyjny w Polsce
Projektujemy bazę danych cd. 12 Baza danych do rejestracji obserwacji ptaków w Polsce
Język SQL - zapytania Na etapie projektu opisaliśmy problem przy pomocy tabel Korzystając z bazy danych realizujemy zapytania (przetwarzanie danych, łączenie tabel, obliczenia) W języku SQL do realizacji zapytań służy polecenie SELECT Polecenie SELECT umożliwia trzy typy realizacji zapytań: 13 Zapytania proste Zapytania agregujące Zapytania wykorzystujące przetwarzanie w oknie
Zapytania proste SELECT (Konstruktor wiersza wynikowego) FROM (Skąd pobieramy dane – łączenie tabel) WHERE (Filtrowanie – warunki selekcji) ORDER BY (Porządkowanie wyniku zapytania) 14
Zapytanie proste - przykład Podstawową klauzulą polecenia Select jest FROM From Gatunki JOIN Rodziny ON Gatunki.IdRodziny=Rodziny.IdRodziny 15 Opisujemy połączenie niezbędnych tabel Wynik połączenia
Zapytanie proste - przykład Dodajemy warunek selekcji : 16 From Gatunki JOIN Rodziny ON Gatunki.IdRodziny=Rodziny.IdRodziny Where IdRzedu=5 Wynik po filtrowaniu
Zapytanie proste - przykład Formułujemy wyrażenia konstruktora wiersza – budujemy postać tabeli wynikowej Uwaga: dla każdego wiersza otrzymanego z przetwarzania FROM … WHERE budujemy jeden wiersz wyniku 17 Select Gatunki.NazwaPL+N'( łac.' +Gatunki.NazwaLac+')' as Gatunek, Rodziny.NazwaPL as Rodzina From Gatunki JOIN Rodziny ON Gatunki.IdRodziny=Rodziny.IdRodziny Where IdRzedu=5 Wynik po przetworzeniu
Zapytanie proste - przykład Dodatkowo, wynik można uporządkować według określonego kryterium 18 Select Gatunki.NazwaPL+N'( łac.' +Gatunki.NazwaLac+')' as Gatunek, Rodziny.NazwaPL as Rodzina From Gatunki JOIN Rodziny ON Gatunki.IdRodziny=Rodziny.IdRodziny Where IdRzedu=5 Order By Gatunek Wynik po uporządkowaniu
Zapytania agregujące - przykład Funkcje agregujące (wykonują obliczenia dla tabeli wynikowej) : 19 COUNT - zlicza ilość wierszy SUM - sumuje wartości wyrażenia dla tabeli AVG - oblicza wartość średniej arytmetycznej dla tabeli MIN - określa wartość minimalna wyrażenia MAX - określa wartość maksymalna dla wyrażenia Zastosowana, w konstruktorze wiersza, funkcja agregująca zwraca jeden wiersz wynikowy niezależnie od ilości wierszy przekazanych do przetworzenia Select COUNT(*) as IleGatunkow From Gatunki
Zapytania agregujące - przykład Select Rodziny.NazwaPL as Rodzina, COUNT(*) As IleGatunkow From Gatunki JOIN Rodziny ON Gatunki.IdRodziny=Rodziny.IdRodziny Group By Rodziny.NazwaPL Having COUNT(*) BETWEEN 4 AND 10 Order By IleGatunkow DESC 20 Wynik zapytania
Grupowanie danych Select Rodziny.NazwaPL as Rodzina, Gatunki.NazwaPL From Gatunki JOIN Rodziny ON Gatunki.IdRodziny=Rodziny.IdRodziny 21 RodzinaGatunek bocianowatebocian biały bocianowatebocian czarny sikorybogatka sikoryczarnogłówka sikoryczubatka sikorymodraszka sikorysikora lazurowa sikorysikora uboga sikorysosnówka ibisowateibis kasztanowaty ibisowatewarzęcha nurynur białodzioby nurynur czarnoszyi nurynur lodowiec nurynur rdzawoszyi jaskółkowatejaskółka brzegówka jaskółkowatejaskółka dymówka jaskółkowatejaskółka oknówka jaskółkowatejaskółka rudawa Select Rodziny.NazwaPL as Rodzina, COUNT(*) As IleGatunkow From Gatunki JOIN Rodziny ON Gatunki.IdRodziny=Rodziny.IdRodziny Group By Rodziny.NazwaPL RodzinaIleGatunkow Bocianowate2 Sikory7 Ibisowate2 Nury4 Jaskółkowate4
Zapytania wykorzystujące przetwarzanie w oknie - analiza Przygotowanie do analizy danych: Zdefiniowano dwa widoki w bazie danych 22 Widok „Lokalizacje” Widok „GatunkiPtakow”
Zapytania – przetwarzanie w oknie 23 WITH DaneDoAnalizy AS ( Select Nazwisko+' '+Imie as Obserwator, Pesel, Gmina, Powiat, Gatunek, Rodzina, Rzad, Ilosc, Month(DataObserwacji) as Miesiac, Year(DataObserwacji) as Rok From Obserwatorzy INNER JOIN Obserwacje ON Obserwatorzy.idobserwatora = Obserwacje.Idobserwatora JOIN GatunkiPtakow On Obserwacje.IdGatunku=GatunkiPtakow.IdGatunku JOIN Lokalizacje ON Lokalizacje.IdGminy=Obserwacje.IdGminy Where Wojewodztwo='Podlaskie' ) Select * From DaneDoAnalizy
Zapytania – przetwarzanie w oknie 24 Przykładowa zawartość zbioru DaneDoAnalizy
Przetwarzanie w oknie 25 Funkcje : -Agregujące (AUM, AVG, MIN, MAX, AVG …..) -Funkcje szeregujące(rankingu) (ROW_NUMBER(), RANK, DENSE_RANK(),NTILE() ) -Funkcje pozycji (FIRST_VALUE(), LAST_VALUE(), LEAD(), LAG (), NEXT_VALUE()) -Funkcje analityczne (PERCENT_RANK(), PERCENTILE_CONT(), PERCENTILE_DISC()) Przetwarzanie w oknie – klauzula OVER Dla każdego wiersza wyniku zapytania można stosować zbiór funkcji działających na zdefiniowanym zbiorze danych
Przetwarzanie w oknie 26 Elementy definiowania okna Porządkowanie : OVER (ORDER BY Kolumna) Partycjonowanie OVER (PARTITION BY Kolumna) Definicja ramy okna (element ruchomy) OVER (ORDER BY Kolumna ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW )
Przykład przetwarzania w oknie 27 Select Obserwator, Pesel, Gmina, Powiat, Gatunek, Rodzina, Rzad, Ilosc, Miesiac, Rok, Sum(Ilosc) OVER (Partition By Gmina) as IlewGminie, Count(*) OVER (Partition BY Gatunek,Powiat) as IleObsGatunkuWPowiecie, sum(Ilosc) OVER (Partition BY Powiat,Rok,Miesiac Order BY Miesiac Rows Between unbounded Preceding and current row) as Narastająco From DaneDoAnalizy
Przykładowy wynik zapytania 28 Przejdziemy do analizy przykładu w środowisku bazy danych
Podsumowanie Projekt bazy danych może opisywać dowolną dziedzinę problemu Zapytania w języku SQL mogą działać według trzech podstawowych schematów 29 Zapytania proste – jeden wiersz wynikowy dla jednego wiersza uzyskane z frazy FROM … WHERE Zapytania agregujące – jeden wiersz dla grupy wierszy (tracimy precyzje zapytania) Przetwarzanie w oknie – jeden wiersz wynikowy dla jednego wiersza uzyskane z frazy FROM … WHERE ale można wykorzystywać agregacje w oknie