Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Podstawy projektowania i implementacji baz danych informatyka +2.

Podobne prezentacje


Prezentacja na temat: "Podstawy projektowania i implementacji baz danych informatyka +2."— Zapis prezentacji:

1

2 Podstawy projektowania i implementacji baz danych informatyka +2

3 Bazy danych wprowadzenie informatyka +3

4 Dane informatyka +4 Liczby, znaki, symbole (i cokolwiek innego) zapisane w celu ich przetwarzania 15, Ala, , /…/---/…/, Warszawa, To są jakieś dane Tylko do końca nie wiemy co one znaczą Wniosek : Dane bez uporządkowania i bez umiejętności ich interpretacji to najczęściej ŚMIETNIK

5 Informacja informatyka +5 Trudno przytoczyć jedną definicję pojęcia informacja Informacja to taki czynnik, któremu człowiek może przypisać określony sens (znaczenie), aby móc ją wykorzystywać do różnych celów Informacje możemy zdobywać dzięki przetwarzaniu i interpretacji danych.

6 Wiedza informatyka +6 Podobnie jak w przypadku informacji – trudno jest jednoznacznie zdefiniować pojęcie wiedza Tak definiował to pojecie Platon : ogół wiarygodnych informacji o rzeczywistości wraz z umiejętnością ich wykorzystywania Proszę zwrócić uwagę na fakt, że wiedza to, miedzy innymi, umiejętność wykorzystania informacji.

7 Społeczeństwo informacyjne 1 informatyka +7 I znów będziemy mieli problem z jednoznacznym zdefiniowaniem pojęcia społeczeństwo informacyjne Społeczeństwo charakteryzujące się przygotowaniem i zdolnością do użytkowania systemów informatycznych, skomputeryzowane i wykorzystujące usługi telekomunikacji do przesyłania i zdalnego przetwarzania informacji (I Kongres Informatyki Polskiej, 1994) Wszystko wskazuje na to, że przyszłość należeć będzie do społeczeństw informacyjnych

8 Społeczeństwo informacyjne 2 informatyka +8 Umiejętność korzystania ze zgromadzonych danych jest jedną z podstawowych cech społeczeństwa informacyjnego.

9 Podsumowanie części 1 informatyka +9 DaneDane InformacjaInformacja Wiedza Dane - powstają na różnych etapach działalności gromadzimy dane w celu ich późniejszego wykorzystania przechowując dane należy zapewnić określony porządek Informacje - często powstaje w wyniku przetwarzania i interpretacji danych Wiedza - to miedzy innymi umiejętność wykorzystania informacji Społeczeństwo informacyjne - to także my

10 Porozmawiajmy o danych 1 informatyka +10 Tomek Kowal Zosia Nowak Monika Łagodna Fizyka Matematyka Informatyka Zenon Poważny Maria Ciekawa Romek Atomek Jak widać - dane bez określonego porządku to chaos … i nie ma z takich danych korzyści Powoli zbiór danych staje się bardziej przejrzysty Jeszcze trochę pracy i powinno być dobrze UczeńPrzedmiotNauczycielDataOcena informatyka + 10

11 Porozmawiajmy o danych 2 informatyka +11 Gromadzenie danych musi zapewnić porządek bo w przeciwnym razie nie damy sobie rady w sytuacji gdy danych będzie bardzo dużo. Jak sprawnie gromadzić dane zachowując możliwość ich wykorzystania ?

12 Bazy danych 1 informatyka +12 Baza danych Nazwisko : Kotek Imię : Jasio Data ur. : Pesel : Kod poczt: Miasto : Sopot Ulica : Klonowa 12/8 Nazwisko : Kotek Imię : Jasio Data ur. : Pesel : Kod poczt: Miasto : Sopot Ulica : Klonowa 12/8 Nazwisko : Sarenka Imię : Zosia Data ur. : Pesel : Kod poczt: Miasto : Poznań Ulica : Osinowa 22/8 Nazwisko : Sarenka Imię : Zosia Data ur. : Pesel : Kod poczt: Miasto : Poznań Ulica : Osinowa 22/8 Nazwisko : Lisek Imię : Piotr Data ur. : Pesel : Kod poczt: Miasto : Opole Ulica : Długa 62/8 Nazwisko : Lisek Imię : Piotr Data ur. : Pesel : Kod poczt: Miasto : Opole Ulica : Długa 62/8 Nauczyciel : Józef Ostry Przedmiot :Informatyka Rodzaj : Sprawdzian Data wyst. : Ocena : 2 Nauczyciel : Józef Ostry Przedmiot :Informatyka Rodzaj : Sprawdzian Data wyst. : Ocena : 2 Nauczyciel : Jan Powaga Przedmiot :Matematyka Rodzaj : Sprawdzian Data wyst. : Ocena : 5 Nauczyciel : Jan Powaga Przedmiot :Matematyka Rodzaj : Sprawdzian Data wyst. : Ocena : 5 Nauczyciel : Maria Bryła Przedmiot :Fizyka Rodzaj : Sprawdzian Data wyst. : Ocena : 3 Nauczyciel : Maria Bryła Przedmiot :Fizyka Rodzaj : Sprawdzian Data wyst. : Ocena : 3 Dane gromadzimy w bazach danych

13 Bazy danych 2 informatyka +13 Baza danych to zbiór danych zapisanych w ściśle określony sposób w strukturach odpowiadających założonemu modelowi danych. Aktualnie najczęściej wykorzystuje się bazy danych oparte na relacyjnym modelu danych

14 Podsumowanie informatyka +14 Dane opisują pewne fakty i zdarzenia Gromadzimy dane w celu ich późniejszego wykorzystania Gromadzenie danych bez określonego porządku jest bezsensowne Dane gromadzimy w bazach danych Bardzo wiele codziennych czynności związanych jest z korzystaniem z baz danych

15 Relacyjny model danych 1 informatyka +15 Sposób modelowania danych w którym podstawowym pojęciem jest tabela. Relacja jest pojęciem matematycznym (z dziedziny teorii zbiorów) i cały model relacyjny jest doskonale opisany przez matematyków. Dobra interpretacja matematyczna pozwoliła zrealizować dobre oprogramowanie obsługujące relacyjne bazy danych.

16 Wybrane cechy modelu relacyjnego 1 informatyka + 16 NazwiskoImięAdresJęzyki obceRodzeństwo KodUlicaMiasto KotJasio Nowa 33/21 Opole Angielski, francuski, hiszpański brat Staś, siostra Mariola LisHania65-987Cicha 17/2Sopot Angielski, niemiecki brak ŻukPiotrek33-093Miła 4/3GdyniaNie znabrat Jaś, brat Staś, siostra Hania Wszystkie wartości zapisywane w tabelach oparte są na prostych typach danych(brak struktur złożonych ) Powyższa tabela nie spełnia tej cechy - w dalszej części pokażemy jak można ten problem rozwiązać

17 Wybrane cechy modelu relacyjnego 2 informatyka + 17 Wszystkie dane w bazie relacyjnej przedstawione są w formie dwuwymiarowych tabel zwanych relacjami NumerNazwa albumuRok wydania Nazwa zespołu 1Kwiaty polskie1969Akwarele 2Help1967The Beatles 3Mrowisko1971Klan 4Rubikone2009Piotr Rubik 5Hellwood2009Hunter Płyty

18 Wybrane cechy modelu relacyjnego 3 informatyka +18 Ponieważ w modelu relacyjnym kolejność kolumn i wierszy nie ma żadnego znaczenia - to widoczne trzy postaci tabel są identyczne i można z nich pobrać dokładnie te same informacje Wszystkie operacje wykonywane są w oparciu o logikę bez względu na położenie wiersza w tabeli

19 Wybrane cechy modelu relacyjnego 4 informatyka +19 W tabeli musi istnieć kolumna lub zbiór kolumn o wartościach niepowtarzalnych, pozwalający odnaleźć konkretny wiersz. Taką kolumnę (lub zbiór) nazywamy kluczem podstawowym (ang. primary key) NazwiskoImięDataUr. NowakJan NowakPiotr KowalskiJan KowalskiJan PiskorskaBeata PeselNazwiskoImięDataUr NowakJan NowakPiotr KowalskiJan KowalskiJan PiskorskaBeata Zaznaczone wiersze są nierozróżnialne, Tak naprawdę nie wiadomo czy jest to pomyłka czy też opis dwóch różnych osób Dodatkowa kolumna Pesel – umożliwiła rozróżnienie dwóch osób. Pesel może być uznany za klucz podstawowy.

20 Relacyjny model danych 2 informatyka +20 Projekt bazy danych, opartej na modelu relacyjnym, polega na opisaniu pewnej dziedziny życia za pomocą wielu tabel Każda tabela opisuje jeden rodzaj obiektów (np. uczeń, klient, książka) lub zdarzeń (np. wystawiona ocena, wykonany przelew, wizyta lekarska) Projektując bazę danych zapewnia się możliwość łączenia ze sobą danych zawartych w różnych tabelach. Więcej o projektowaniu relacyjnej bazy danych w dalszej części wykładu

21 informatyka +21 Tabela relacyjna Cechy tabeli relacyjnej 1.Przeznaczenie Uczniowie 2.Kolumny – określają cechy opisywanego obiektu NazwiskoImieData_urPesel 3.Klucz podstawowy PeselIducznia Sztuczny klucz podstawowy 4.Wiersze – suma cech danego obiektu 1 Nowak Jan Rybak Zofia Kowal Stefan Kozak Jan Pływak Anna I już mamy tabelę wraz z zawartością

22 informatyka +22 Normalizacja – podstawa projektowania Idfaktury NumerData_wNettoVatFirmaNipUlicaMiasto 1234/ Wedel Nowa 3Warszawa 243/ Wedel Nowa 3Warszawa 301/ Złotex Miła 7Sopot / Koral Dobra 1Opole 534w/ Wedel Nowa 3Warszawa 6987/ Złotex Miła 7Sopot Złotex Miła 7Sopot Faktury I co tutaj nie gra Redundancja!!!!!!!!!!!!!!

23 informatyka +23 Normalizacja – podstawa projektowania IdfakturyNumerData_wNettoVat 1234/ / / / w/ / Faktury FirmaNipUlicaMiasto Wedel Nowa 3Warszawa Złotex Miła 7Sopot Koral Dobra 1Opole Firmy IdFirmy Idfirmy Wedel Nowa 3Warszawa 1Wedel Nowa 3Warszawa 1Wedel Nowa 3Warszawa 2Złotex Miła 7Sopot 3Koral DobraWarszawa 2Złotex Miła 7Sopot 2Złotex Miła 7Sopot Klucz obcy

24 Podsumowanie informatyka +24 Model relacyjny opiera się na pojęciu tabeli Każda tabela musi posiadać klucz podstawowy W modelu relacyjnym nieistotna jest kolejność kolumn i wierszy Baza danych oparta na modelu relacyjnym składa się z wielu tabel opisujących pewną dziedzinę życia. Bazy relacyjne są aktualnie najbardziej rozpowszechnione.

25 Plan prezentacji informatyka Kilka definicji na dobry początek. 2.Dane i bazy danych. 3.Podstawy relacyjnego modelu danych. 4.Rozważania o tabeli. 5.Modelowanie z wykorzystaniem tabel relacyjnych.Modelowanie z wykorzystaniem tabel relacyjnych. 6.Problemy i anomalie związane z gromadzeniem danych w tabelach. 7.Systemy Zarządzania Bazami Danych. 8.Spójność i integralność danych. 9.Od rozkładu jazdy do bankowości internetowej. 10.Podsumowanie wykładu – pytania.

26 Przykładowy projekt bazy danych informatyka +26 Schemat bazy danych do rejestrowania ocen uczniów

27 Przykładowe fragmenty baz danych informatyka +27 Rejestr wypożyczeń książek Tabela słownikowa Tabela opisująca osoby Powiązanie pomiędzy tabelami Tabela opisująca książki Tabela opisująca wypożyczenia książek Powiązanie pomiędzy tabelami

28 Analiza pewnego problemu 1 informatyka +28 Wyobraźmy sobie, że w pewnej bazie danych istnieje tabela o nazwie Klienci o strukturze pokazanej na rysunku obok Przykładowa zawartość takiej tabeli mogłaby wyglądać tak jak na rysunku poniżej Proszę zwrócić uwagę na fakt, że jak brak pewnych danych to w tabeli przechowywana jest specyficzna wartość null

29 Analiza pewnego problemu 2 informatyka +29 W trakcie eksploatacji naszej przykładowej bazy danych wyniknął problem, ponieważ użytkownicy bazy danych chcieliby dodatkowo przechowywać dane o numerze telefonu komórkowego. Rozwiązaniem problemu mogłoby być dodanie do tabeli Klienci dodatkowej kolumny TelefonKomorkowy – tak jak poniżej Tak mogłaby wyglądać zmodyfikowana tabela … a tak zawartość tej tabeli

30 Analiza pewnego problemu 3 informatyka +30 … ale czy mamy pewność, że w trakcie dalszej eksploatacji tej bazy danych nie będzie potrzeby dodawania kolejnych kolumn np. żeby zapisać więcej niż jeden numer telefonu albo adres strony www, numer faksu (… a może dwa numery), numer GG … itd. … a może chwila zastanowienia i rozwiązać ten problem raz a dobrze ???

31 Analiza pewnego problemu 4 informatyka +31 Problem rozwiążemy w trzech krokach : 1.Utworzymy tabelę słownikową o nazwie RodzajeKontaktow 2. Z tabeli Klienci usuniemy kolumny opisujące numery telefonów itp. 3.Utworzymy nową tabelę (tzw. tabelę asocjacyjną) o nazwie KontaktyKlienta

32 Analiza pewnego problemu 5 informatyka +32 Model bazy danych

33 Analiza pewnego problemu 6 informatyka +33 Przykładowa zawartość tabel (RodzajeKontaktow) Tabele podobnego typu nazywamy tabelami słownikowymi. Jeżeli będziemy dodatkowo potrzebowali przechowywać w bazie danych informacje o numerach Gadu Gadu i adresy stron WWW – to wystarczy dopisać kolejne wiersze do tabeli

34 Analiza pewnego problemu 7 informatyka +34 Przykładowa zawartość tabel (Klienci) W tabeli Klienci nie zapisujemy teraz danych o numerach telefonów, adresach itp. Dodatkowo uzyskujemy jeszcze jedna korzyść – w sytuacji gdy dany klient nie ma telefonu lub innego środka łączności, nie musimy przechowywać w tabeli wartości null.

35 Analiza pewnego problemu 8 informatyka +35 Przykładowa zawartość tabel (KontaktyKlienta) Tabele tego typu nazywamy tabelą powiązań (asocjacyjną) Dane zawarte w tabeli KontaktyKlienta wymagają interpretacji, żeby stały się czytelne

36 Analiza pewnego problemu 9 informatyka +36 Poniżej postać danych z poprzedniego slajdu, przekształcona do bardziej czytelnej postaci Dzięki kluczom obcym w tabeli KontaktyKlienta mogliśmy powiązać dane zapisane w różnych tabelach

37 informatyka +37 Za pomocą dwuwymiarowych tabel opisujemy wybrany fragment rzeczywistości (bank, szkoła, kolekcja płyt) Tabele relacyjne mogą opisywać : Obiekty rzeczywiste (uczniowie, nauczyciele, klasy) Słowniki pojęć (przedmioty, rodzaje ocen) Zdarzenia i powiązania (wystawione oceny) Powiązanie danych zapisanych w różnych tabelach osiągamy dzięki parze kluczy : klucz obcy --- klucz podstawowy Podsumowanie

38 Problemy gromadzenia danych w tabelach 1 informatyka +38 PeselNazwiskoImięDataUrodzeniaPłećWiek KotekJanina Kobieta au34LisekPiotr Kotek33 Wiktor23Lis8 maj 91ChłopakOK Problem 1 : Gromadzenie danych w tabeli nie może się odbywać bez reguł i ograniczeń – nie wystarczy samo nazwanie kolumn Jak widać na powyższym przykładzie – w tabeli bardzo łatwo może zapanować totalny bałagan, choćby z tego powodu, że to ludzie wprowadzają dane, a człowiek jest omylny. Bazy danych powinny posiadać mechanizmy ułatwiające wymuszanie poprawności zapisywanych danych

39 Problemy gromadzenia danych w tabelach 3 informatyka +39 PeselNazwiskoImięDataUrodzeniaPłećWiek KotekJanina Kobieta au34LisekPiotr Kotek33 Wiktor23Lis8 maj 91ChłopakOK Kilka słów o przedstawionych problemach 1.Nazwa kolumny nie gwarantuje zapisywania w niej właściwych danych 2.Gdy mamy zapisane błędne dane – baza danych traci sens. 3.W powyższym przykładzie – numer Pesel powinien być zależny od daty urodzenia

40 Problemy gromadzenia danych w tabelach 4 informatyka +40 Problem 2: Problemy i anomalie związane z zapisywaniem danych W powyższej, przykładowej, tabeli mamy cały szereg problemów, które mogą wyniknąć w nieprawidłowo zabezpieczonej bazie danych

41 Problemy gromadzenia danych w tabelach 5 informatyka +41 Problem 2: Problemy i anomalie związane z zapisywaniem danych 1.Czy Jan Kotek i Kotek Jan – to ta sama osoba???? 2.Czy Daria Miła mieszka na ulicy Naftowej czy Benzynowej ??? 3.Czy Sprawdzian i Sprawdz. to ten sam rodzaj oceny???? 4.Czy Historia i Chistoria (ale wtyd – ale zdarzyć się może) to ten sam przedmiot ?????

42 System Zarządzania Bazą Danych 1 informatyka +42 Systemem Zarządzania Bazami Danych nazywamy specjalistyczne oprogramowanie umożliwiające tworzenie baz danych oraz ich eksploatację SZBD powinien(miedzy innymi) umożliwiać : Definiowanie obiektów bazy danych Manipulowanie danymi Generowanie zapytań Zapewnienie spójności i integralności danych

43 System Zarządzania Bazą Danych 2 informatyka +43 MS SQL Server 2008 Przykłady SZBD : Oracle MySQL Access DB2 … i wiele, wiele innych

44 System Zarządzania Bazą Danych 2 informatyka +44 Jednym z najważniejszych zadań stojących przed SZBD jest zapewnienie spójności i integralności danych SZBD dostarczają szereg mechanizmów służących zapewnieniu poprawności przechowywanych danych

45 System Zarządzania Bazą Danych 2 informatyka +45 Rodzaje reguł i ograniczeń Deklaracja typu Definicje kluczy Reguły poprawności dla kolumny Reguły poprawności dla wiersza Reguły integralności referencyjnej Poszczególne typy reguł zostaną omówione w dalszej części wykładu

46 Spójność i integralność danych informatyka +46 Jednym z najistotniejszych elementów Systemów Zarządzania Bazami Danych są mechanizmy zapewnienia spójności i integralności danych przechowywanych w bazie Podstawowe sposoby zapewnienia integralności danych Deklaracja typu Deklaracje kluczy Reguły poprawności dla kolumny Reguły poprawności dla wiersza Reguły integralności referencyjnej

47 Deklaracja typu 1 informatyka +47 W tabelach relacyjnych przechowujemy dane różnego typu (liczby, teksty, znaki, daty …) Każda kolumna w tabeli musi mieć określony typ przechowywanych danych Deklaracja typu jest pierwszym sposobem zapewnienia poprawności danych – w ujęciu matematycznym jest to określenie dziedziny wartości dla kolumny

48 Deklaracja typu 2 informatyka +48 Przykładowe typy danych w SQL Server 2008 Dla danych znakowych char(n) - ciąg n znaków o stałej długości (np. jeżeli kolumna ma określony typ char(25) a wpiszemy słowo kot – to i tak zostanie ono zapisane za pomocą 25 znaków – uzupełnione spacjami) varchar(n) – ciąg n znaków o zmiennej długości (np. jeżeli kolumna ma określony typ varchar(25) a wpiszemy słowo kot –zostanie ono zapisane za pomocą 3 znaków) varchar(max) – ciąg znaków o zmiennej długości do 2 GB

49 Deklaracja typu 3 informatyka +49 Przykładowe typy danych w SQL Server 2008 Pytanie : Skoro typ char w porównaniu z varchar wykorzystuje więcej pamięci do zapisywania danych (uzupełnianie spacjami) – to jakie korzyści możemy osiągnąć w przypadku wykorzystania typu char

50 Deklaracja typu 4 informatyka +50 Przykładowe typy danych w SQL Server 2008 Istnieją także odmiany podanych wcześniej znakowych typów danych poprzedzone literka n nchar (n) nvarchar(n) nvarchar(max) Są to typy danych znakowych (zapisywanych łącznie z informacją o stronie kodowej) umożliwiające przechowywanie tekstów używających znaków specyficznych dla różnych języków

51 Deklaracja typu 5 informatyka +51 Przykładowe typy danych w SQL Server 2008 Dla danych liczbowych – liczby całkowite tinyint- liczba całkowita z zakresu 0 ÷ przechowywana za pomocą 1 bajtu smallint- liczba całkowita z zakresu ÷ przechowywana za pomocą 2 bajtów int- liczba całkowita z zakresu ÷ przechowywana za pomocą 4 bajtów bigint- liczba całkowita z zakresu ÷ przechowywana za pomocą 8 bajtów

52 Deklaracja typu 5 informatyka +52 Przykładowe typy danych w SQL Server 2008 Dla danych liczbowych – liczby z ułamkiem real, float - do zapisywania liczb zmiennoprzecinkowych decimal, numeric - do zapisywania liczb zmiennoprzecinkowych o określonej precyzji money - do zapisywania liczb wyrażających kwoty pieniężne

53 Deklaracja typu 6 informatyka +53 Przykładowe typy danych w SQL Server 2008 Dla danych liczbowych – data i czas date- do zapisywania dat np time- do zapisywania czasu np. 19:22: datetime - do zapisywania łącznie daty i czasu np :22:

54 Deklaracja typu 7 informatyka +54 Przykładowe typy danych w SQL Server 2008 Dla danych liczbowych – typy różne bit- do zapisywania wartości logicznych (true, false lub 0,1) varbinary(n)- do zapisywania danych binarnych o długości n bajtów varbinary(max) - do zapisywania danych binarnych o długości do 2 GB (np. obrazy, dźwięki itp. ) xml- do zapisywania dokumentów XML o długości do 2 GB Timestamp - specjalny znacznik który automatycznie zmienia swoja wartość przy modyfikacji wiersza

55 Deklaracja typu 8 informatyka +55 Krótkie podsumowanie Każda kolumna w tabeli musi mieć określony typ danych jaki będzie w tej kolumnie zapisywany Decyzja o wyborze odpowiedniego typu danych jest pierwszym etapem zapewnienia spójności danych Wybór typu jest równoznaczny z określeniem dziedziny wartości dla danych zapisywanych w danej kolumnie

56 Deklaracja kluczy informatyka +56 W każdej tabeli relacyjnej powinien być zdefiniowany klucz podstawowy – taka definicja zapewnia, ze każda wartość w kolumnie klucza podstawowego musi przyjąć inną wartość W SZBD istnieją mechanizmy nadające kolumnom klucza podstawowego automatycznie unikalne wartości (autonumeracja) Można także wymusić unikalność kolumn, które nie są kluczem podstawowym – klucze potencjalne

57 Reguły poprawności dla kolumny informatyka +57 Deklaracja typu określa dziedzinę wartości dla kolumny ale często jest to dziedzina zbyt szeroka Reguła poprawności dla kolumny jest wyrażeniem logicznym ograniczającym dziedzinę do tych wartości, które spełniają ten warunek Przykład : Numer Pesel (w tabeli Uczniowie) ma zadeklarowany typ danych char(11) - czyli ciąg znaków o maksymalnej długości 11. Powinniśmy wymusić, żeby to było dokładnie 11 znaków i mogą to być tylko cyfry. Taka definicja zapewni, że zapisywane w tabeli numery Pesel będą poprawne (w tej części wymagań)

58 Reguły poprawności dla wiersza informatyka +58 Czasami występują logiczne zależności pomiędzy danymi zapisanymi w różnych kolumnach (dla jednego wiersza) Reguła poprawności dla wiersza jest wyrażeniem logicznym ograniczającym dziedzinę do tych wartości, które spełniają ten warunek. Przykład : Numer Pesel (w tabeli Uczniowie) jest logicznie powiązany z datą urodzenia ucznia zapisaną w tej samej kolumnie. Powinniśmy wymusić, żeby pierwsze sześć cyfr numeru Pesel odpowiadało dacie urodzenia zapisanej w innej kolumnie Taka definicja zapewni, że zapisywane w tabeli numery Pesel i daty urodzenia będą logicznie poprawne

59 Reguły integralności referencyjnej informatyka +59 Integralność referencyjna określa poprawność logiczna danych zapisanych w różnych tabelach Klasycznym przykładem takich zależności jest para klucz obcy – klucz podstawowy. Przykład : Kolumna iducznia w tabeli Uczniowie (jako klucz podstawowy) i kolumna iducznia w tabeli Oceny (jako klucz obcy) Powinniśmy wymusić, żeby wartości klucza obcego przyjmowały tylko takie wartości, które występują w tabeli gdzie ta kolumna jest kluczem podstawowym – zapewnia to odpowiednie powiązanie danych zapisanych w różnych tabelach.

60 Podsumowanie informatyka +60 Zapewnienie spójności i integralności danych jest jednym z najważniejszych wyzwań stojących przed twórcami baz danych Systemy Zarządzania Bazami Danych dostarczają mechanizmy ułatwiajace realizacje tych zadań W trakcie zajęć warsztatowych przyjrzymy się jak te mechanizmy działają w praktyce

61 Podstawy języka SQL informatyka +61

62 informatyka +62 Krótka historia języka SQL – kroki milowe publikacją E.F.Codda pt. A Relational Model of Data for Large Shared Data Banks. ( pol. Relacyjny model danych dla dużych współdzielonych banków danych) w IBM powstał język SEQUEL (ang. Structured English Query Language – Stukturalny Angielski Język Zapytań) firma ORACLE wypuściła na rynek pierwszy komercyjny system zarządzania bazami danych oparty o SQL. … do dnia dzisiejszego trwa burzliwy rozwój tego języka

63 informatyka +63 Standardy języka SQL Krótka historia standardów języka SQL : 1986: pierwszy standard SQL (SQL-86), 1989: następny standard SQL (SQL-89), 1992: wzbogacona wersja standardu (SQL-92 lub SQL 2), 1999: standardu rozszerzonego o pewne cechy obiektowości (SQL 3) 2003: Kolejne rozszerzenie standardu (m.in. włączenie do standardu języka XML) - SQL : Niewielkie rozszerzenie standardu 2008 : Kolejne niewielkie rozszerzenie standardu

64 informatyka +64 Standardy języka SQL Opracowywaniem i publikowanie standardów SQL zajmują się organizacje : ISO (ang. International Organization for Standarization) ANSI (ang. American National Standards Institute). Standard języka to wytyczne dla producentów Systemów Zarządzania Bazami Danych Pomimo istnienia standardów jezyka SQL – rózne implementacje różnia się od siebie (nieznacznie)

65 informatyka +65 Cechy języka SQL SQL jest językiem IV generacji … i co z tego że IV generacji SQL jest językiem deklaratywnym … ????????? W języku SQL deklarujemy co chcemy osiągnąć – bez określania jak to należy wykonać

66 informatyka +66 Cechy języka SQL Język SQL dzielimy na trzy podstawowe części: Język Definiowania Danych – DDL (ang. Data Definition Language Język Manipulacji Danymi – DML (ang. Data Manipulation Language Język Kontroli Danych – DCL (ang. Data Control Language)

67 informatyka +67 Cechy języka SQL Język Definiowania Danych – DDL (ang. Data Definition Language Polecenia : CREATE – definiowanie obiektów w bazie danych ALTER - modyfikowanie obiektów w bazie danych DROP - usuwanie obiektów z bazy danych

68 informatyka +68 Cechy języka SQL Przykład polecenia DDL : CREATE TABLE Uczniowie ( IdUcznia int IDENTITY(1,1) NOT NULL, Nazwisko varchar(50) NOT NULL, Imie varchar(50) NOT NULL, DataUrodzenia date NOT NULL, CzyChlopak bit NOT NULL, Pesel varchar(11) NULL, CONSTRAINT PK_uczniowie PRIMARY KEY CLUSTERED (IdUcznia ASC) )

69 informatyka +69 Cechy języka SQL Język Manipulacji Danymi – DML (ang. Data Manipulation Language Polecenia : INSERT– wstawianie do tabeli nowych wierszy UPDATE - modyfikowanie wierszy w tabeli DELETE - usuwanie wierszy z tabeli MERGE - warunkowa modyfikacja danych w tabeli SELECT – pobieranie danych z tabel (zapytania)

70 informatyka +70 Cechy języka SQL Przykład polecenia DML : INSERT INTO Uczniowie (Nazwisko, Imie, DataUrodzenia, CzyChlopak, Pesel) VALUES(Kot, Jan, ,true, ) SELECT Nazwisko, Imie, Pesel FROM Uczniowie WHERE CzyChlopak=true ORDER BY nazwisko

71 informatyka +71 Cechy języka SQL Język Kontroli Danych – DCL (ang. Data Control Language) Polecenia : GRANT– przydzielenie prawa do danych REVOKE – pozbawienie prawa do danych DENY - bezwarunkowe pozbawienie prawa do danych

72 informatyka +72 Cechy języka SQL Praca z wykorzystaniem SQL może być realizowana na kilka sposobów : poprzez interaktywne zadawanie pytań do bazy (monitor), budowanie skryptów (zbioru wsadowo wykonywanych zapytań w SQL), osadzanie kodu (pojedynczych zapytań i całych procedur) SQL w innych językach programowania (na poziomie aplikacji), procedur składowanych (na poziome bazy danych).

73 Przykładowa baza danych informatyka +73

74 Przykładowa baza danych Pisanie zapytań w języku SQL wymaga dobrej znajomości bazy danych do której te zapytania się odnoszą informatyka +74

75 Podstawowe operacje realizowane na modelu relacyjnym informatyka +75 Realizacja zapytań opiera się na trzech podstawowych operacjach wykonywanych na modelu relacyjnym: Operacja projekcji (zwana także rzutowaniem) Operacja selekcji Operacja łączenia

76 Podstawowe operacje realizowane na modelu relacyjnym informatyka +76 Operacja projekcji Tabela wyjściowa Wykonanie operacji projekcji Tabela wynikowa po operacji projekcji

77 Podstawowe operacje realizowane na modelu relacyjnym informatyka +77 Operacja selekcji Tabela wyjściowa Wykonanie operacji selekcji Tabela wynikowa Warunek selekcji Idklasy=2

78 Podstawowe operacje realizowane na modelu relacyjnym informatyka +78 Operacja łączenia Wykonanie operacji łączenia Tabela wyjściowa Tabela dołączania Tabela wynikowa

79 Podstawowe operacje realizowane na modelu relacyjnym informatyka +79 Przedstawione operacje wykonywane na modelu relacyjnym są podstawa realizacji zapytań

80 Polecenie SELECT- zapytania proste informatyka +80 SELECT * FROM Uczniowie Określona została, w opcji FROM, tabela z której pobieramy dane a znaczek * powoduje dostarczenie do wyniku zapytania wszystkich dostępnych w tabeli kolumn Przykładowy wynik zapytania

81 Realizacja operacji projekcji informatyka +81 SELECT Nazwisko, Imie, Pesel, CzyChlopak FROM Uczniowie Określona została, w opcji FROM, tabela z której pobieramy dane i wymieniono liste kolumn, które maja się pojawić w wyniku Przykładowy wynik zapytania

82 Realizacja operacji projekcji i selekcji informatyka +82 SELECT Nazwisko, Imie, Pesel, CzyChlopak FROM Uczniowie WHERE CzyChlopak=1 W klauzuli WHERE dodano warunek selekcji Przykładowy wynik zapytania

83 Porządkowanie wyniku zapytania informatyka +83 SELECT Nazwisko, Imie, Pesel, Idklasy FROM Uczniowie WHERE Idklasy=1 OR Idklasy=2 ORDER BY Idklasy ASC, Nazwisko DESC Dodano klauzule ORDER BY – realizującą porządkowanie wyniku zapytania (opcja ASC – rosnąco, DESC – malejąco) Przykładowy wynik zapytania

84 Przekształcanie danych informatyka +84 SELECT Nazwisko, Imie, Pesel, CASE CzyChlopak WHEN 1 THEN Mężczyzna ELSE Kobieta END as Płeć FROM Uczniowie WHERE Idklasy=2 Kolumna o nazwie Płeć powstała w wyniku przekształcenia wartości zapisanych w tabeli Przykładowy wynik zapytania

85 Operacja łączenia informatyka +85 SELECT Uczniowie.*, Klasy.* FROM Uczniowie JOIN Klasy ON Uczniowie.Idklasy=Klasy.Idklasy Do wiersza opisującego ucznia został dołaczony odpowiedni wiersz z tabeli klasy Przykładowy wynik zapytania

86 Operacja łączenia informatyka +86 SELECT Uczniowie.Nazwisko, Uczniowie.Imie, CASE CzyChlopak WHEN 1 THEN Mężczyzna ELSE Kobieta END as Płeć, Klasy.Nazwa, Klasy.RokSzkolny FROM Uczniowie JOIN Klasy ON Uczniowie.Idklasy=Klasy.Idklasy WHERE YEAR(Uczniowie.DataUrodzenia)=1992 ORDER BY Płeć, Nazwisko DESC Zapytanie wykonujące operacje projekcji, selekcji, łączenia, przekształca dane i porządkuje wynik zapytania Przykładowy wynik zapytania

87 Rozwiązanie problemu Chcemy napisać zapytanie, które przygotuje wykaz uczniów (nazwisko i imię) oraz dane nauczyciela (nazwisko i imię oraz stopień zawodowy), który wystawił ocenę i datę wystawienia oceny tym uczniom, którzy w roku 2009 otrzymali z fizyki ocenę 5, wynik uporządkować malejąco według daty wystawienia oceny. informatyka +87

88 Rozwiązanie problemu SELECT Uczniowie.Nazwisko+ +Uczniowie.Imie AS Uczen, Nauczyciele.Nazwisko+ Nauczyciele.Imie AS Nauczyciel, Oceny.DataWystawienia, Oceny.Ocena FROM Uczniowie JOIN Oceny ON Uczniowie.Iducznia=Oceny.IdUcznia JOIN Nauczyciele ON Nauczyciele.IdNauczyciela=Oceny.IdNauczyciela JOIN Przedmioty ON Oceny.Idprzedmiotu=Przedmioty.Idprzedmiotu WHERE YEAR(DataWystawienia) =2009 AND Ocena=5 AND Przedmioty.Nazwa=Fizyka ORDER BY DataWystawienia DESC informatyka +88

89 Rozwiązanie problemu informatyka +89 Przykładowy wynik zapytania

90 Złączenie zewnętrzne informatyka +90 Do tej pory, domyślnie, realizowaliśmy tzw. złączenie wewnętrzne – czyli w wyniku zapytania pojawiały się tylko te wiersze dla których spełniony był warunek złączenia SQL umożliwia wykonanie złączenia zewnętrznego – czyli umożliwia dołączenie do wyniku zapytania także te wiersze dla których warunek złączenia nie jest spełniony Złączenie zewnętrzne omówimy na przykładzie

91 Złączenie zewnętrzne informatyka +91 SELECT Uczniowie.Nazwisko, Uczniowie.Imie, Oceny.DataWystawienia, Ocena FROM Uczniowie LEFT OUTER JOIN Oceny ON Uczniowie.iducznia=Oceny.Iducznia AND Oceny.Ocena=2 AND YEAR(DataWystawienia)=2009 AND MONTH(DataWystawienia)=2 Przygotujemy zapytanie w którym będą wszyscy uczniowie wraz z informacja kiedy otrzymali w lutym roku 2009 ocenę mierną

92 Złączenie zewnętrzne informatyka +92 Przykładowy wynik zapytania

93 Funkcje agregujące informatyka +93 Zapytania SQL mogą być także wykorzystane do wykonywania obliczeń na podstawie danych zawartych w tabelach. Do tego celu służą funkcje agregujące. Język SQL udostępnia pięć podstawowych funkcji agregujących; COUNT – oblicza ilość wierszy otrzymanych w wyniku zapytania, SUM – sumuje zawartość kolumny (lub wyrażenia obliczonego na podstawie danych) dla wszystkich wierszy w wyniku zapytania, AVG – oblicza średnią arytmetyczną zawartości kolumny (lub wyrażenia obliczonego na podstawie danych) dla wszystkich wierszy w wyniku zapytania, MIN – określa wartość minimalną dla kolumny w wyniku zapytania, MAX – określa wartość maksymalną dla kolumny w wyniku zapytania.

94 Funkcje agregujące informatyka +94 SELECT COUNT(*) AS IluUczniow FROM Uczniowie SELECT COUNT(*) AS IluUczniow FROM Uczniowie JOIN Klasy ON Uczniowie.idklasy=Klasy.idklasy WHERE Klasy.Nazwa='IIa' Funkcja agregująca użyta w zapytaniu powoduje, ze w wyniku otrzymujemy jeden wiersz z wynikiem działania funkcji agregującej

95 Funkcje agregujące i grupowanie danych informatyka +95 SELECT Klasy.Nazwa, COUNT(*) AS IluUczniow FROM Uczniowie JOIN Klasy ON Uczniowie.idklasy=Klasy.idklasy GROUP BY Klasy.Nazwa Wykorzystaliśmy klauzulę GROUP BY w celu rozbicia działania funkcji agregującej dla wierszy zawierających tę sama wartość dla kolumny Klasy.Nazwa

96 Funkcje agregujące i grupowanie danych informatyka +96 SELECT Uczniowie.Nazwisko, Uczniowie.Imie, AVG(Oceny.Ocen) as Średnia FROM Uczniowie JOIN Oceny ON Uczniowie.Iducznia=Oceny.IdUcznia JOIN Uczniowie.Idklasy=Klasy.Idklasy WHERE YEAR(Oceny.DataWystawienia)=2009 AND Klasy.Nazwa=IIa GROUP BY Uczniowie.Nazwisko, Uczniowie.Imie ORDER BY Średnia DESC Lista uczniów z klasy IIa oraz ich średnią ocen otrzymanych w roku 2009

97 Funkcje agregujące i grupowanie danych informatyka +97 SELECT Uczniowie.Nazwisko, Uczniowie.Imie, AVG(Oceny.Ocen) as Średnia FROM Uczniowie JOIN Oceny ON Uczniowie.Iducznia=Oceny.IdUcznia JOIN Uczniowie.Idklasy=Klasy.Idklasy WHERE YEAR(Oceny.DataWystawienia)=2009 AND Klasy.Nazwa=IIa GROUP BY Uczniowie.Nazwisko, Uczniowie.Imie HAVING AVG(Oceny.Ocena) > 3.00 ORDER BY Średnia Lista uczniów z klasy IIa oraz ich średnią ocen otrzymanych w roku tylko ci uczniowie których srednia przekracza 3.00 Klauzulę HAVING nazywamy opóźnionym warunkiem selekcji

98 Zapytania złożone informatyka +98 Polecenie SELECT języka SQL umożliwia zagnieżdżanie zapytań, czyli wykorzystanie zapytania w wewnątrz innego zapytania. Dzięki tej właściwości można za pomocą jednego polecenia wykonywać bardzo złożone operacje na danych. Omówimy to, chcąc przygotować listę uczniów (zawierającą nazwisko i imię ucznia oraz nazwę klasy), którzy w roku 2009 nie otrzymali oceny niedostatecznej z fizyki. Należy zwrócić uwagę na fakt, że chcemy pobrać z bazy dane, które nie są bezpośrednio w niej zapisane, bo jeżeli uczeń nie otrzymał oceny to w bazie danych nie ma żadnego zapisu tego faktu. Rozwiązując ten problem korzystamy z pewnych zależności logicznych.

99 Zapytania złożone informatyka +99 Pomyślmy o tym problemie jako o działaniu na następujących zbiorach: A – zbiór wszystkich uczniów, B – zbiór uczniów, którzy otrzymali w roku 2009 ocenę niedostateczną z fizyki, C – poszukiwany zbiór uczniów, którzy w roku 2009 nie otrzymali oceny niedostatecznej z fizyki. Wyrażenie: C = A – B opisuje rozwiązanie naszego problemu, czyli poszukiwany zbiór możemy otrzymać jako różnicę dwóch innych zbiorów.

100 Zapytania złożone informatyka +100 SELECT Uczniowie.Nazwisko, Uczniowie.Imie, Klasy.Nazwa, FROM Uczniowie JOIN Klasy ON Uczniowie.idklasy=Klasy.idklasy Zapytanie tworzące zbiór A (SELECT DISTINCT Iducznia FROM Oceny JOIN Przedmioty ON Oceny.Idprzedmiotu=Przedmioty.Idprzedmiotu WHERE Przedmioty.Nazwa=Fizyka AND YEAR(Oceny.DataWystawienia)=2009 AND Oceny.Ocena=2) Zapytanie tworzące zbiór B WHERE Iducznia NOT IN Warunek różnicy zbiorów

101 informatyka +101 Pokazaliśmy jeden przykład zapytania złożonego, pokazujący dodatkowe możliwości, jakimi dysponujemy przy pisaniu zapytań do baz danych z wykorzystaniem języka SQL. Trudno wymienić wszystkie sytuacje, w których można wykorzystywać podzapytania ale jest jedna zasada ogólna: Podzapytanie może być wykorzystane wszędzie tam, gdzie ma sens wynik tego podzapytania Zapytania złożone

102 Co jeszcze potrafię?? informatyka +102 SELECT Klasy.Nazwa, Klasy.RokSzkolny FROM Klasy FOR XML AUTO,ROOT('ListaKlas'),ELEMENTS Tworzenie wyniku zapytania w języku XML Ia 2008/2009 IIa 2008/2009 Ib 2008/2009 IIb 2008/2009

103 Co jeszcze potrafię?? informatyka +103 Operacje na zbiorach danych z wykorzystaniem operatorów UNION, EXCEPT i INTERSECT SELECT Nazwisko, Imie, Pesel FROM Uczniowie WHERE idklasy=1 UNION SELECT Nazwisko, Imie, Pesel FROM Uczniowie WHERE idklasy=2

104 Co jeszcze potrafię?? informatyka +104 Zapytanie, które przygotuje listę uczniów z klasy o id klasy=1 za wyjątkiem tych, którzy urodzili się w marcu SELECT Nazwisko, Imie, Pesel FROM Uczniowie WHERE idklasy=1 EXCEPT SELECT Nazwisko, Imie, Pesel FROM Uczniowie WHERE MONTH(DataUrodzenia)=3

105 Co jeszcze potrafię?? informatyka +105 Zapytanie, które przygotuje listę uczniów urodzonych w marcu, których nazwisko zaczyna się na literę K SELECT Nazwisko, Imie, Pesel FROM Uczniowie WHERE MONTH(DataUrodzenia)=3 INTERSECT SELECT Nazwisko, Imie, Pesel FROM Uczniowie WHERE nazwisko LIKE K%

106 Co jeszcze potrafię?? informatyka +106 Tabele przestawne SELECT * FROM ( SELECT Przedmioty.Nazwa as Przedmiot, Klasy.Nazwa as Klasa, Oceny.Ocena FROM Klasy Join Uczniowie ON Klasy.idklasy=Uczniowie.idklasy Join Oceny ON Oceny.iducznia=Uczniowie.iducznia Join Przedmioty ON Przedmioty.idprzedmiotu=Oceny.idprzedmiotu ) as A PIVOT (AVG(Ocena) FOR Klasa in ([Ia],[IIa],[IIc])) as B

107 Co jeszcze potrafię?? informatyka +107 Tabele przestawne

108 Podsumowanie Przedstawiliśmy podstawowe możliwości języka SQL a w szczególności polecenia SELECT Standard języka SQL ciągle jest rozwijany i wzbogacany o nowe możliwości informatyka +108

109 Tabele tymczasowe i widoki informatyka +109

110 mgr inż. Andrzej Ptasznik Tabele inline Zapytanie SELECT tworzy tabelę wynikową, która może być wykorzystana w innym zapytaniu. select lp,numer,rok from ( select row_number() over (order by year(data_wyst) desc ) as lp, numer, year(data_wyst) as rok from faktury ) tmp where lp between 3 and 7

111 mgr inż. Andrzej Ptasznik Wyrażenia tabelaryczne (CTE) (widoki tymczasowe) with wystawili as ( select idwystawcy from faktury where year(data_wyst)=2006 ) select nazwa,nip from klienci where idklienta not in (select idwystawcy from wystawili)

112 mgr inż. Andrzej Ptasznik Widoki. Zapytanie SELECT zapisane w bazie danych tworzy tabelę wirtualną, której zawartość jest wynikiem zapisanego polecenia.

113 mgr inż. Andrzej Ptasznik Widoki … kilka przykładów create view v_klienci as select idklienta,nazwa,nip,idmiasta,kod,ulica,test from dbo.klienci create view v_klienci with schemabinding, encryption as select idklienta,nazwa,nip,idmiasta,kod,ulica from dbo.klienci create view v_klienci as select idklienta,nazwa,nip,idmiasta,kod,ulica from klienci where idmiasta=1 with check option Definicja bez opcji Opcje powiązania ze schematem bazy danych i opcja szyfrująca Opcja powiązania operacji wstawiania danych z warunkiem WHERE

114 mgr inż. Andrzej Ptasznik Widoki – zastosowanie. 1.Uproszczenie schematu bazy danych. 2.Sterowanie uprawnieniami do danych. 3.Rozwiązywanie problemów wydajnościowych

115 mgr inż. Andrzej Ptasznik Funkcje tabelaryczne. Widoki sparametryzowane – definiowane w bazie danych funkcje zwracające tabelę. Funkcja może posiadać parametry by wynik zapytania uzależnić od wartości parametrów wejściowych.

116 mgr inż. Andrzej Ptasznik Funkcje tabelaryczne -przykład create function int) returns table with schemabinding, ENCRYPTION as return (select idklienta,nazwa,nip,idmiasta,kod,ulica from dbo.klienci where select nazwa,nip,idmiasta from dbo.f_klienci(1) order by nazwa Definicja funkcji Wywołanie funkcji Wynik funkcji

117 Transact - SQL informatyka +117

118 Nie jest to pełny język programowania - nie można w nim napisać od podstaw poważnej aplikacji. Można przy pomocy T-SQL zaprogramować realizację zadań po stronie serwera. W T-SQL osadzony jest standardowy język SQL tzn. wszystkie polecenia języka SQL są integralną częścią języka T-SQL

119 Język T-SQL jest wykorzystywany do programowania: Procedur składowanych Funkcji składowanych Wyzwalaczy Skryptów

120 Zmienne Wymaga jawnej deklaracjiWymaga jawnej deklaracji Nazwa zmiennej lokalnej musi rozpoczynać się od zmiennej lokalnej musi rozpoczynać się od Typy zmiennych mogą być takie – jak wbudowane typy SQL ServeraTypy zmiennych mogą być takie – jak wbudowane typy SQL Servera

121 Typy zmiennych Typami zmiennych w języku T-SQL mogą być wszystkie typy udostępniane przez SQL Server do deklaracji typu kolumn.Np. int, Char Varchar Money Datetime Smallint Itd..

122 Konwersje typów Polecenie CAST: CAST ( wyrażenie AS typ_danych ) Polecenie CONVERT: CONVERT ( typ_danych [ ( rozmiar ) ], wyrażenie [, styl ] )

123 Konwersje typów-przykłady PRINT CAST(12.45 as int) PRINT CONVERT(int,12.45) print CONVERT(char(24), GETDATE(), 9)

124 int varchar(100) Declare bit, bit Uwaga : SQL Server 2005 nie umożliwia inicjacji wartości zmiennej w trakcie deklaracji (jest to być możliwe w SQL Server 2008 : np. int=8) Zmienne - przykłady

125 Tabele tymczasowe Nazwa lokalnej tabeli tymczasowej musi rozpoczynać się od znaku #Nazwa lokalnej tabeli tymczasowej musi rozpoczynać się od znaku # Nazwa globalnej tabeli tymczasowej musi rozpoczynać się od znaków ##Nazwa globalnej tabeli tymczasowej musi rozpoczynać się od znaków ## Tabele tymczasowe tworzone są w bazie danych tempdbTabele tymczasowe tworzone są w bazie danych tempdb

126 Tabele tymczasowe-przykłady Select nazwa, symbol into #listaslownika From kategorie Create table ##tmp (idklienta int not null, nazwa varchar(200)) nazwa varchar(200))

127 Instrukcje sterujące – instrukcja warunkowa Język T-SQL udostępnia klasyczną istrukcję warunkową:Język T-SQL udostępnia klasyczną istrukcję warunkową: IF Wyrażenie _logiczne { polecenie_SQL | blok_poleceń} [ ELSE { polecenie_SQL | blok_poleceń} ]

128 Instrukcje sterujące – iteracje Język T-SQL udostępnia klasyczną instrukcję iteracyjną:Język T-SQL udostępnia klasyczną instrukcję iteracyjną: WHILE Wyrażenie_logiczne { polecenie_SQL | Blok_poleceń } [ BREAK ] { polecenie_SQL | Blok_poleceń } [ CONTINUE ] BREAK – BEZWARUNKOWO PRZERYWA DZIAŁANIE PĘTLI CONTINUE- PRZERYWA PĘTLĘ I PRZECHODZI DO SPRAWDZENIA WARUNKU KONTYNUACJI

129 Instrukcja podstawiania Dwa rodzaje instrukcji podstawiania : SET np.( Set np.( Set (Select nip=nip (Select nip=nip from klienci from klienci where idklienta=321) where idklienta=321)SELECT np.( Select np.( Select from klienci from klienci where idklienta=321) where idklienta=321)

130 Funkcja CASE SELECT nazwisko,imie, CASE plec WHEN 0 THEN KOBIETA' WHEN 1' THEN Mężczyzna' ELSE Płeć nieokreślona END FROM Osoby

131 Obsługa błędów SQL Server 2005 wprowadził do języka T-SQL elementy strukturalnej obsługi wyjątków – zapewnia to konstrukcja : BEGIN TRY Instrukcje Instrukcje END TRY BEGIN CATCH Instrukcje obsługi błędów Instrukcje obsługi błędów END CATCH

132 Funkcje Funkcje konfiguracyjne Funkcje kursora Funkcje daty i czasu Funkcje matematyczne Funkcje metadanych Funkcje bezpieczeństwa Funkcje operujące na łańcuchach znaków Funkcje systemowe Funkcje statystyki systemowej Funkcje tekstu i obrazu

133 I to prawie wszystko o języku T-SQL … reszta wynika z : ProblemuProblemu KontekstuKontekstu Fantazji programistyFantazji programisty

134 Procedury, funkcje, wyzwalacze informatyka +134

135 Procedury składowane – to kod w języku T-SQL (lub CLR) wykonywany po stronie serwera. Procedura składowana jest obiektem bazy danych !!!

136 SQLServer Interfejs Form Środowisko śieciowe Wykonaj przelew z konta A na konto B 1.Zapytanie o stan konta A 2.Odpowiedź – stan Konta A 3.Rozpoczęcie transakcji 4.Odpowiedź na polecenie 5.Zmiejszenie stanu konta A 6.Odpowiedź na polecenie 7.Zwiekszenie stanu konta B 8.Odpowiedź na polecenie 9. Zakończenie transakcji 10.Odpowiedź na polecenie Wykonane

137 A teraz inne podejście ????????????

138 SQL Server Iterfejs Form Środowisko śieciowe Wykonaj przelew z konta A na konto B Metoda WykonajPrzelew 1.Wykonaj metodę …Przelew 2.Odpowiedź z metody Wykonane

139 Zastosowanie procedur składowanych : 1.Hermetyzacja logiki bazy danych 2.Realizacja zadań administracyjnych 3.Warstwa zabezpieczeń.

140 Definiowanie procedury CREATE PROCEDURE ListaDostaw; 1 Nagłówek varchar(500) output Lista parametrów WITH ENCRYPTION,RECOMPILE Opcje AS BEGIN TRY SELECT Tytuly.nazwa, ilosc, cena FROM Tytuly join DostawyPrasy on Tytuly.idtytulu=DostawyPrasy.idtytulu WHERE Procedura wykonana poprawnie RETURN 0 END TRY Blok procedury BEGIN CATCH Błąd zapytania RETURN 1 END CATCH Blok obsługi wyjątków

141 Rodzaje procedur składowanych : 1.Procedury składowane użytkownika – definiowane przez użytkowników bazy danych. 2.Procedury specjalne – procedury oznaczone prefixem sp_ i utworzone w bazie systemowej master. (można ją uruchamiać w kontekście dowolnej bazy danych) 3.Procedury systemowe – procedury oznaczone prefixem sp_ dostarczone przez producenta systemu (na serwerze są przechowywane w ukrytej systemowej bazie danych Resource) 4.Tymczasowe procedury składowane (nazwa poprzedzona symbolem # lub ##). 5.Rozszerzone procedury składowane – (kod w innych językach – prefix xp_) – uznane za przestarzałe. Zostały zastąpione możliwością pisania procedur w językach.Net

142 Rodzaje funkcji składowanych ; 1.Funkcje systemowe 2.Funkcje tabelaryczne a)Funkcje typu inline b)Złożone funkcje tabelaryczne 3.Funkcje skalarne 4.Agregujące funkcje użytkownika

143 Przykład funkcji tabelaryczne typu inline CREATE FUNCTION datetime) RETURNS Table AS return ( SELECT iddostawy, ilosc, cena, idtytulu FROM DostawyPrasy WHERE ) Wykorzystanie SELECT Tytuly.nazwa, ilosc, cena FROM Tytuly join dbo.ListaDostaw( ) as ld on ld.idtytulu=Tytuly.idtytulu ORDER BY nazwa

144 Akademia Baz Danych Przykład złożonej funkcji tabelarycznej CREATE FUNCTION datetime) Table(iddostawy int, ilosc int, cena money, idtytulu int) AS BEGIN INSERT SELECT iddostawy, ilosc, cena, idtytulu FROM DostawyPrasy WHERE RETURN END

145 Akademia Baz Danych Przykład funkcji skalarnej CREATE FUNCTION int) RETURNS datetime AS BEGIN datetime FROM DostawyPrasy WHERE END Wykorzystanie: SELECT Tytuly.nazwa, dbo.DataOstatniejDostawy(idtytulu) FROM tytuly WHERE idcyklu=2

146 informatyka +146 Wyzwalacze (triggers)

147 Wyzwalacze Wyzwalacz, to specjalny typ procedury składowanej, która jest wykonywana automatycznie, jako reakcja na zdarzenie.

148 Wyzwalacze Wyzwalacze można wykorzystać między innymi do : złożonych warunków poprawności dla kolumny lub wiersza implementacji złożonych zachowań dla integralności referencyjnej Obliczania wartości kolumn Inspekcji działania użytkowników

149 Wyzwalacze Wyzwalacze mogą wykonywać następujące czynności: porównywać wersje danych z przed i po modyfikacji anulować nieprawidłowe modyfikacje odczytywać dane z innych tabel modyfikować inne tabele wykonywać procedury składowane

150 Rodzaje wyzwalaczy Wyzwalacze DML (Data Manipulation Language) Reagują na zdarzenia Insert, Update, Delete Wyzwalacze DDL (Data Definition Language ) Reagują na zdarzenia CREATE,ALTER,DROP

151 Wyzwalacze DML Rodzaje wyzwalaczy DML –Typ AFTER (po operacji DML) –Typ INSTEAD OF (zamiast operacji DML) Wyzwalacz jest tworzony dla tabeli i jest związany z jedną (bądź więcej) instrukcji modyfikujących dane(INSERT, UPDATE lub DELETE)

152 Cechy wyzwalaczy Wyzwalacz jest wykonywany tylko raz dla danego polecenia niezależnie od tego ile wierszy modyfikuje te polecenie. Wyzwalacz jest integralna częścią transakcji związanej z realizacją polecenia Jawne polecenie ROLLBACK usuwa skutki działania wyzwalacza oraz polecenia które go wywołało.

153 Schemat działania wyzwalaczy AFTER Polecenia DML (Insert |Update | Delete) Rozpoczęcie transakcji niejawnej (BEGIN TRANSACTION) Kod wyzwalacza Realizacja polecenia DML (sprawdzanie reguł integralności) Zatwierdzenie transakcji niejawnej (COMMIT TRANSACTION)

154 Schemat działania wyzwalaczy INSTEAD OF Polecenia DML (Insert |Update | Delete) Rozpoczęcie transakcji niejawnej (BEGIN TRANSACTION) Kod wyzwalacza Zatwierdzenie transakcji niejawnej (COMMIT TRANSACTION)

155 W trakcie działania wyzwalacza jest dostęp do dwóch pseudotabel o nazwach Inserted i Deleted, które udostępniają te wiersze które zostały zmodyfikowane przez operacje, która jest związana z uruchomionym wyzwalaczem. Wyzwalacze DML

156 Pseudo tabele Inserted i Deleted

157 IdOsobyNazwiskoImiePesel 1KotJan LisPiotr RybkaAnna Sekwencja działania wyzwalacza DML 1. Dana jest tabela Osoby Osoby 2. Do tabeli zdefiniowano wyzwalacz, którywyzwalacz sprawdza czy po zmianie numeru Pesel jego nowa wartość nie istnieje już w bazie danych 3. Wykonujemy polecenie UPDATE Osoby SET Pesel= WHERE idosoby= Zostaje uruchomiony kod wyzwalacza IdOsobyNazwiskoImiePesel 2LisPiotr Deleted IdOsobyNazwiskoImiePesel 2LisPiotr Inserted 5.Wyzwalacz, wobec stwierdzenia powielenia Numeru pesel odwołuje transakcję

158 mgr inż.Andrzej Ptasznik Kod wyzwalacza CREATE TRIGGER TR_sprawdzanie_pesel ON Osoby AFTER Update AS If Update(pesel) Begin If EXISTS (SELECT * FROM Inserted WHERE pesel IN (SELECT pesel FROM Osoby WHERE idosoby<>Inserted.Idosoby) ROLLBACK End

159 Wyzwalacze DDL Wyzwalacze działające w kontekście bazy danych Wyzwalacze działające w kontekście serwera

160 Wyzwalacze typu DDL Nowy typ wyzwalaczy dla języka definiowania danych Duże możliwości przy zabezpieczaniu bazy danych przed przypadkowymi lub niedopuszczalnymi modyfikacjami Możliwość ingerowania w proces logowania

161


Pobierz ppt "Podstawy projektowania i implementacji baz danych informatyka +2."

Podobne prezentacje


Reklamy Google