Bazy danych
Transkrypt
Bazy danych
Wprowadzenie do baz danych O czym będziemy mówić • • • • • • Bazy danych - zastosowania Typy bazy danych Terminologia Programy do zarządzania bazami danych SQL Bazy danych Open Source Dlaczego mówimy o bazach danych • Bazy danych - podstawa współczesnych systemów informatycznych. • Inteligentny użytkownik – partnerem w rozmowie z projektantem, programistom, deweloperem, lepiej może wyrazić swoje potrzeby i zrozumie języka używanego przez kadry IT, jest w stanie opisać model i procesy biznesowe stosowane w przedsiębiorstwie w sposób ułatwiający tworzenie i rozwój aplikacji. Kiedy używać bazy danych? • • • Do czego są używane komputery? – Gromadzenia informacji – Przetwarzania informacji – Wyszukiwania informacji Digital Library Initiative - dostęp do informacji multimedialnej przez WWW: teksty, mapy, obrazy, muzyka, filmy. – http://sunsite.berkeley.edu/Collections/ Biblioteka Kongresu Narodowego USA (Congress Library) Ok. 20 Terabajtów tekstu + ponad 10 TB zdjęć + 200 TB map + 500 TB filmów + 2000 TB płyt CD = ok. 3 Petabajtów. Dyski komputerów są w stanie przechowywać wszystko, co ... wprowadzimy! Czym jest Baza Danych System bazy danych zawiera: – zbiór danych zapisanych w pamięciach masowych (dysk twardy, CD-ROM, DVD); – system zarządzania bazą danych (program) – użytkownicy bazy danych • administrator (ang. DataBase administrator DBA) 1 administrator jest w stanie administrować do 40 baz danych i więcej • projektant • użytkownik (business user, business analyst) – sprzęt (serwery, SAN, NAS....) Czym jest baza danych • • Dane powinny służyć możliwie wielu zastosowaniom Baza danych – zbiór nie powtarzających się danych elementarnych – Baza danych jest zbiorem informacji (danych) dotyczących określonego tematu • • • Baza danych (ang. Data Base) - zbiór wystąpień różnych typów rekordów oraz opisów powiązań między rekordami i danymi elementarnymi Redundacja - nadmiarowość - powtórzenie tej samej informacji Cele redundacji informacji w bazach danych – zabezpieczenie informacji – wyszukiwanie informacji Czym jest baza danych • Baza danych – zbiór wzajemne powiązanych danych pamiętanych bez zbędnej redundacji, – służących jednemu lub wielu zastosowaniom w sposób optymalny, – dane są niezależne od programów, które z nich korzystają – przy dołączaniu (dodawaniu) i modyfikacji oraz wyszukiwaniu danych stosuje się wspólną metodę umożliwiającą sprawdzanie poprawności wykonywanych operacji. (James Martin, Computer Data Base Organization Prentice Hall, 1977, James Martin, Organizacja baz danych, PWN, 1983, s. 30) Operacje na danych • Wyszukiwanie • Aktualizacja • Wprowadzanie • Przechowywanie – Przechowywanie informacji zgodnie z wymaganiami ustawowymi. • Usuwanie Personalne bazy danych Co przechowują • Lista - adresy, telefony • Lista książek, monet, .... Co używają • Edytor tekstu • Arkusz kalkulacyjny • Program w telefonie komórkowym, Osobisty Organizator (ang. Personal Information Manager) - programy do zarządzania podręczną informacją Przykłady zastosowań bazy danych • • • • • • • • Dane o wyrobach Dane o kontrahentach Dane o studentach Dane o surowcach Dane o książkach Dane o projektach Dane o częściach Poczta elektroniczna • • • • Dane o pacjentach Dane o dostawcach Dane o pracownikach Dane o jednostkach biznesowych • Dane dotyczące – Planowania – Wykonania Planu Przykłady zastosowań bazy danych • GIS, Systemy Informacji Geograficznej - bazy danych połączone z cyfrowymi mapami. • Systemy udostępniające pliki multimedialne • Dun & Bradstreet (D&B) - największa na świecie firma (oddziały w 60 krajach, 2 miliony klientów rocznie) zajmująca się dostarczaniem informacji gospodarczych. Wyszukiwarki internetowe – www.google.com – www.yahoo.com – www.onet.pl – www.wp.pl – www.szukaj.pl • Przykłady zastosowań bazy danych • • • • • Social Security, USA: 40.000 terminali, 20 milionów transakcji dziennie. NASA - przyrost 100 MB/dzień Biblioteka Kongresu USA CERN Genewa Polska – PESEL , Powszechny Elektroniczny System Ewidencji Ludności – System rejestracji pojazdów – ZUS – GUS - Główny Urząd Statystyczny, dane statystyczne, rejestr REGON – LEX - krajowy system informacji prawnej Typy bazy danych • • bazy tekstowe, – Textract, http://www.textract.com - bazy tekstowe, np. archiwum gazety, dla setek gigabajtów, szybkie wyszukiwanie i indeksacja informacji bazy danych bez struktury (free form) - informacja niestrukturyzowana Typy bazy danych - bazy oparte na płaskich plikach tekstowych (ang. flat file) • • • Stosowane w latach 60-70 stosowane w komputerach mainframe. Informacje są umieszczane w polach, które albo mają stała szerokość, albo są rozdzielane znakiem specjalnym, na przykład “;”. Znak rozdzielający nie może występować w samych danych. Występują pola – Numer Identyfikacyjny - 4 kolumny, – Profesja - 5 do 15 kolumn, – Imię i Nazwisko - 16 do 40 kolumn. Przykład danych opartych na płaskich plikach oddzielonymi “;”. 1234;księgowy;Adam Rutkowski; 3241;tokarz;Rafal Baniewicz; Typy bazy danych - bazy oparte na płaskich plikach tekstowych (ang. flat file) • Przykład danych opartych na płaskich plikach o stałej szerokości. 1234 księgowy Adam Rutkowski 3241 tokarz Rafal Baniewicz Typy bazy danych - bazy oparte na płaskich plikach tekstowych (ang. flat file) • • • Płaskie pliki są często wykorzystywane do przenoszenia danych pomiędzy różnymi implementacjami baz danych. Na przykład – plik Exportu z jednej wersji Oracle jest Importowany do wyższej wersji bazy danych Oracle; – dane są przenoszone z jednej bazy do drugiej. System zarządzania bazy danych Oracle potrafi widzieć płaskie pliki w systemie operacyjnym jako tabelę bazy danych, jeżeli – opiszemy strukturę plików; – podamy miejsce pliku - dysk, katalog. Typy bazy danych - bazy hierarchiczne • • • • Architektura modelu hierarchicznej bazy danych opiera się na relacji nadrzędny / podrzędny. Na wierzchu hierarchicznej struktury jest główna tabela, która wskazuje tabele podrzędne, związane z nią. Model hierarchicznej bazy danych ma postać typu odwróconego drzewa. Przykłady hierarchicznej bazy danych – baza domen w Internecie – Wydawca • Wykonawca Sklepy – Album Album Stan magazynu Sprzedaż » Piosenka Typy bazy danych - bazy hierarchiczne • • • • • • W bazie danych powinno się przechowywać możliwie najmniej nadmiarowych informacji. Przy aktualizacji danych jest konieczna aktualizacja tych danych jednocześnie w wielu miejscach, w celu uniknięcia powstawania niespójności danych. Tabela nadrzędna może posiadać wiele tabel podrzędnych. Tabela podrzędna może mieć tylko jedną tabelę nadrzędną. W celu odczytania danych z tabeli podrzędnej trzeba najpierw odczytać tabelę nadrzędną. System zarządzania bazy danych Oracle ma możliwość implementacji w relacyjnej bazie danych modelu hierarchicznego - drzewa (ang. tree) i wyszukiwania informacji w nim poprzez zapytania, które przeszukują drzewa. Typy bazy danych - model sieciowy • • • • • • • Rozwój modelu hierarchicznego. Tabele podrzędne mogą mieć wiele tabel nadrzędnych. Nie ma konieczności odczytywania głównej tabeli w celu uzyskania dostępu do danych z tabel podrzędnych. Relacje pomiędzy tabelami w modelu sieciowym noszą nazwę struktury grupowej, w której jedna tabela jest właścicielem a inne tabele są członkami struktury. Struktury grupowe umożliwiają realizację relacji jeden-do-wielu pomiędzy tabelami. Jeśli zostanie zmieniona struktura bazy danych, zmiany wymaga również aplikacja. Trudna zmiana, modyfikacja struktury raz utworzonych baz danych. Typy bazy danych - model sieciowy – Wydawca • Wykonawca Album Sklepy Zamówienia » Piosenka Stan Magazynu Sprzedaż Typy bazy danych - relacyjny model • • • • Najczęściej używanym obecnie modelem baz danych jest model relacyjny. Ojciec koncepcji relacyjnego modelu bazy danych jest badacz firmy IBM dr E.F. Codd. Jako podstawę formalną relacyjnego modelu baz danych uznaje się opracowany przez niego dokument ang. “A Relational Model of Data for Large Shared Data Banks” - 1970 (“Relacyjny model danych dla dużych współużytkowanych banków danych”) W tym modelu jest najłatwiej zaimplementować kontrolę integralności danych poprzez stosowanie ograniczenia (ang. constraints). Łatwo można zmieniać strukturę bazy danych. Koncepcje relacyjnego modelu według E.F. Codda • • • • Użytkownicy widzą logiczny sposób przechowywania danych i nie muszą poznawać ani rozumieć fizycznego sposobu ich przechowywania. Łatwiejszy proces odczytywania danych. Wszystkie informacje w relacyjnej bazie danych (łącznie z nazwami tabel i kolumn) są reprezentowane bezpośrednio, jako wartości przechowywane w tabelach. Każda wartość w relacyjnej bazie danych musi być dostępna poprzez określenie nazwy tabeli, wartości klucza podstawowego i nazwy kolumny. Oznacza to, że nie trzeba znać fizycznej lokalizacji danych i że można w sposób niezależny bezpośrednio odczytywać dowolne rekordy znajdujące się w tabelach bazy danych. Koncepcje relacyjnego modelu według E.F. Codda • • • DBMS powinien obsługiwać puste wartości (dane nieznane lub nieadekwatne), odróżniając je od wartości domyślnych i (w sposób niezależny) od ich dziedziny. Opis bazy danych i jej zawartości jest reprezentowany na poziomie logicznym, w postaci tabel, i może być odczytywany za pomocą zapytań wyrażonych w języku bazy danych. Oznacza to, że meta dane, czyli dane opisujące dane, są przechowywane również w tabelach bazy danych. Co najmniej jeden język rozumiany przez bazę danych musi mieć dokładnie zdefiniowaną składnię i musi być zrozumiały dla użytkowników. Musi on umożliwiać definiowanie danych, modyfikację danych, definiowanie reguł integralności, autoryzację i obsługę transakcji. Koncepcje relacyjnego modelu według E.F. Codda • • • • System musi umożliwiać aktualizację danych poprzez wszystkie perspektywy, które teoretycznie pozwalają modyfikować dane. DBMS musi pozwalać na odczytywanie, wstawianie, aktualizację i usuwanie danych na poziomie zbiorów. Zmiana metod dostępu lub struktur przechowujących dane na poziomie fizycznym nie może wpływać logicznie na napisane aplikacje i zapytania. Zmiany w strukturze tabel mają mieć jak najmniejszy wpływ na napisane aplikacje i zapytania. W przypadku rozdzielenia jednej tabeli na dwie, aplikacja będzie musiała ulec zmianie ñ tak aby odpowiednie kolumny były odczytywane z obu tabel. Koncepcje relacyjnego modelu według E.F. Codda • • • Język bazy danych musi umożliwiać definiowanie reguł integralności chroniących dane. Reguły te muszą być przechowywane w dostępnym na bieżąco katalogu i nie może istnieć możliwość ich pominięcia podczas modyfikacji danych. Fizyczne rozmieszczanie i przemieszczanie danych nie może mieć wpływu na napisane aplikacje i zapytania. Musi istnieć możliwość pominięcia reguł integralności danych poprzez użycie języków niskiego poziomu. Typy baz danych - relacyjny model - wymagania wobec użytkownika • • • Użytkownicy muszą się nauczyć języka SQL. Użytkownicy muszą wiedzieć, jakie są relacje pomiędzy tabelami i kto jest ich właścicielem. W celu odczytania danych zawartych w pojedynczej tabeli należy: – znać jej właściciela, – struktury tabeli i – mieć uprawnienia do jej odczytania. Typy baz danych - obiektowe bazy danych • • Obiektowa baza danych (ang. object-oriented database) to taka baza, w której dane można przechowywać, definiować i korzystać z nich za pośrednictwem języków programowania obiektowego. – Języki programowania obiektowego - C++, Visual Basic, Java. W obiektowych bazach wyróżniamy dwie podstawowe struktury: – obiekty (ang. objects) ze strukturami posiadającymi identyfikatory umożliwiające tworzenie powiązań z innymi obiektami – literały (ang. literals) to wartości związane z obiektami, które nie posiadają identyfikatorów. Typy baz danych - obiektowe bazy danych • • • • Obiekty mogą dziedziczyć właściwości od innych obiektów. Poprzez nadawanie wartości właściwościom obiektów określa się między innymi sposób ich zachowania. W przypadku bazy obiektowej język programowania obiektowego służy zarówno do definiowania struktury bazy danych, jak i do tworzenia aplikacji będącej interfejsem tej bazy. Obiektowy model danych określa – zbiór obiektów; – ich stan; – uch zachowanie; – relacje między nimi Typy baz danych - obiektowe bazy danych • • • Odpowiednikiem tabeli w bazie relacyjnej jest klasa w bazie obiektowej. – Obiekty klasy; – dziedziczenie... Do odczytywania wartości z innych klas oraz do dodawania i usuwania wartości służą operacje. Typ w relacyjnej bazie danych można zdefiniować jako grupę obiektów i literałów posiadających ten sam zestaw właściwości, które można modyfikować dla konkretnych obiektów. Typy baz danych - obiektowe bazy danych • • • • • Do operowania na danych w obiektowej bazie danych służy obiektowy język zapytań (ang. object query language - OQL). Jest on oparty na standardowym języku baz relacyjnych - SQL, ale posiada dodatkowe możliwości, dzięki którym można wykonywać operacje na danych przechowywanych w postaci obiektów posiadających właściwości. Jeżyk zapytań Object Query Language (OQL) grupowanie obiektów zamki - metoda zamykania przez transakcje dostępu do obiektów zasady zachowania integralności bazy danych – poprawność dziedziczenia – hierarchia dziedziczenia Typy baz danych - obiektowe relacyjne bazy danych (ang. object-relational) • • • • • Obiektowo-relacyjne bazy danych łączą w sobie koncepcje relacyjnego modelu bazy danych z obiektowym stylem programowania. Model ten ma stanowić połączenie najlepszych właściwości modelu obiektowego i relacyjnego. Międzynarodowa Organizacja Normalizacyjna (ang. International Standards Organization ñ ISO) ujęła koncepcje obiektowo-relacyjne w nowym standardzie języka SQL o nazwie SQL3, nazywanym również SQL99. Architektura relacyjnej bazy danych staje się bardziej trójwymiarowa. Można tworzyć własne typy danych. Typy baz danych - obiektowe relacyjne bazy danych (ang. object-relational) • • Użytkownik musi rozumieć zarówno koncepcje obiektowe, jak i relacyjne. W niektórych implementacjach modelu obiektowo-relacyjnego nie jest możliwe dziedziczenie właściwości obiektów. Typy baz danych • • • • OLTP (On Line Transaction Processing) - systemy transakcyjne. Transakcja - pełny obieg danych i aktualizacja bazy. – system sprzedaży, – system rezerwacji biletów – system finansowo - księgowy – system obsługi transakcji bankowych DSS (Decision Support Systems) - Systemy wspomagające podejmowania decyzji. – system obsługi wniosków o udzielania kredytów Rozproszone bazy danych - na wielu systemach komputerowych Sieciowe bazy danych, udostępnianie baz danych przez WWW. Terminologia • • • Banki danych - bazy danych w których przechowuje się informację historyczne. Hurtownie danych (data warehouse): zweryfikowane dane z różnych baz, przydatne do analiz i podejmowania strategicznych decyzji. ODBS (Open Data Base Systems), otwarty standard baz danych. ODBC (Open DataBase Connectivity), otwarta komunikacja pomiędzy bazami danych, standard wymiany danych pomiędzy bazami danych różnych producentów - na przykład między bazą danych Oracle i Ms Access. IDAPI (Integrated Database Application Programming Interface), zintegrowany interfejs programowy dla aplikacji, które korzystają z baz danych. Terminologia • • Replikacja - proces powielania informacji, całej bazy, jej fragmentów lub elementów (np. indeksów). Baza - produkcyjna -> baza zapasowa (ang. stendbay) Baza - produkcyjna -> hurtownia danych (ang. data warehouse) Replikacja scalana - łączenie zmian z kilku baz danych, wymaga rozstrzygania konfliktów. System informujący o wolnych miejscach w samolotach różnych przewoźników. Replikacja migawkowa - pobiera chwilowy obraz bazy danych. Robi zdjęcie bazy danych w danym momencie czasowym. Replikcja transakcyjna - wykorzystuje model wydawcysubskrybenta wraz z dziennikiem przeprowadzonych transakcji. Terminologia • OLAP - On-Line Analytical Processing, czyli proces podsumowania dużych ilości informacji na bieżąco. Sygate Analyst • Data Mining, albo Knowledge Discovery in Databases (KDD) narzędzia do odkrywania wiedzy w bazach danych. Oracle Discover Terminologia • Projektowanie - proces odzwierciedlenia modelu biznesowego w bazę danych. – Jak funkcjonuje firma – Znajomość modelu stosowanego w bazach danych relacyjny, obiektowy • UML Opisy danych - definicje • Opis logiczny danych - opis danych oraz powiązań między danymi przedstawiane programiście lub użytkownikowi • Opis fizyczny - jak dane są przechowywane na dysku Obiekty relacyjnych baz danych • Obiekty w relacyjnej bazie danych są logiczną reprezentację fizycznej lokalizacji danych. W relacyjnych bazach danych występują różne typy obiektów. Związane z Definicją danych • Tabela (ang. table) • Perspektywa – widok (ang. view) - tabela wirtualna, wygląda i zachowuje się jak tabela. Struktura i dane perspektywie pochodzą z tabeli, na której dana perspektywa jest oparta. Za pomocą perspektywy można odczytywać dane, a czasem również je aktualizować. Z powodu bezpieczeństwa, zamiast do tabeli użytkownicy zwykłe mają dostęp do perspektywy. Obiekty relacyjnych baz danych • • Ograniczenie (ang. constraint) - obiekt służący do określania reguł dotyczących danych. Ograniczenia kontrolują poprawność danych umieszczanych w kolumnach. Są one również wykorzystywane do utrzymywania integralności powiązań w relacjach nadrzędny-podrzędny. Indeks (ang. index) - obiekt służącym do przyśpieszenia procesu odczytywania danych z tabeli. Obiekty relacyjnych baz danych Związany z Metodę dostępu do obiektów baz danych • Wyzwalacz (ang. trigger) - fragment składowanego w bazie danych kodu, który jest uruchamiany w wyniku zachodzenia określonych zdarzeń. Uruchomienie wyzwalacza może spowodować zmodyfikowanie danych w wyniku wykonania operacji na innych danych. Wyzwalacze dobrze nadają się do utrzymywania w bazie, powtarzających się w wielu miejscach, danych. • Procedura (ang. procedure) - program składowany w bazie danych. Procedury wykonywane są na poziomie bazy danych i służą przede wszystkim do wsadowego przetwarzania danych. Elementy bazy danych • • • • Podstawowym elementem relacyjnych baz danych jest tabela. Wszystkie dane wprowadzane przez użytkownika są przechowywane w tabeli. Tabela jest zbudowana z kolumn. Tabela zawiera rekordy - wiersze. Wydawnictwo Helion Autor Tytuł Scott Urman Oracle 8. Programowanie w języku PL/SQL. PWE Collete Bazy danych. Od koncepcji Rolland do realizacaji Pole, - definicje • • • Pole - dana elementarna - najmniejsza jednostka danych mająca nazwę – Adres – Ulica – Nazwa informuje jakie dane są przechowywane. Kolumna zawiera wartości danego pola dla wszystkich rekordów. Na przykład kolumna Wydawnictwo zawiera wartości: – Helion – PWE – ..... Rekord - definicje • • Rekordy - wiersze składają się z określonej liczby pól - kolumn. Rekordem (ang. record) nazywamy zestaw danych elementarnych. – Rekord - może zawierać informacje dotyczące • jednej faktury • jednego kontrahenta .... Identyfikator obiektu • • Identyfikator obiektu - jeden z atrybutów obiektu, pełni rolę identyfikatora obiektu. Identyfikator obiektu musi być jednoznaczny - żaden inny obiekt nie może mieć tej samej wartości danego wyróżnionego atrybutu. • • Identyfikator obiektu PRACOWNIK - jest Numerem Pracownika Identyfikator obiektu Dostawca - jest Numerem Dostawcy Identyfikator rekordu • Identyfikator rekordu - może składać się z kilku identyfikatorów (identyfikatorów kilku obiektów) Relacje między tabelami i modelowanie związków encji • • • • • • Encje - elementy, jednostki systemu. Encja - logiczne obiekty w bazie danych odpowiadające rzeczywistym obiektom (rzeczom, osobom). Encje reprezentują dane przedsiębiorstwa. Każda encja musi posiadać nazwę. Encja może posiadać także synonim - inną nazwę, pod której jest znana. Encje posiadają atrybuty dla każdego interesującego nas funkcjonalnego elementu obiektu rzeczywistego. Encje są przekształcane w tabele, a atrybuty w kolumny. W złożonych systemach 1 encja może być modelowana w kilku tabelach. Możliwe jest też modelowanie kilku encji w jednej tabeli. Hans Ladanyi, SQL- ksiega experta, Helion, Gliwice 2000, s. 658, 659 Encje - klucze • • • • „Encje są powiązane pomiędzy sobą związkami (relacjami). Związek posiada dwa końce po jednym dla każdej encji które łączy. Relacje mogą być stałe /musi/ (wymagane) lub opcjonalne /może/. – W bazie danych mogą się znajdować tabele, których rekordy można tworzyć tylko pod warunkiem istnienia odpowiedniego rekordu w innej tabeli. Na przykład możemy mieć w tabeli zakupy asortyment, tylko jeżeli on naj pierw jest wprowadzony w tabeli Kartoteka Asortymentu (Towaru). Hans Ladanyi, SQL- ksiega experta, Helion, Gliwice 2000, s. 658 Encje - klucze • W innych tabelach mogą opcjonalnie występować rekordy odpowiadające rekordom innej tabeli. Na przykład w tabeli Zakupy nie muszą występować wszystkie elementy zbioru (Tabeli) Kartoteki Asortymentu (Towarowej). W Kartotece Asortymentowej mogą występować numery identyfikacyjne asortymentu zakupionego w poprzednich latach. Encje - klucze • • • • Tabele mogą być powiązane wzajemnie za pośrednictwem wspólnych wartości kolumn noszących nazwę kluczy. Związki pomiędzy encjami są mapowane jako więzy kluczy obcych(#). Można tworzyć następujące typy relacji pomiędzy (encjami) tabelami: – jeden - do - jednego – jeden - do - wielu – wiele - do - jednego – wiele - do - wielu”. Hans Ladanyi, SQL- ksiega experta, Helion, Gliwice 2000, s. 658 Encje - klucze • • • • • Między tabelami może istnieć związek tabela nadrzędna / tabela podrzędna. Tabela nadrzędna może posiadać wiele tabel podrzędnych. Tabela podrzędna może być zależna od wiele tabel nadrzędnych. Mechanizm sprawdzania integralności odwołań zarządza relacjami pomiędzy tabelami nadrzędnymi i podrzędnymi, kontrolując dane wprowadzane do tabel. Można też definiować inne ograniczenia, określające dopuszczalne wartości danych dla poszczególnych kolumn i będące podstawą relacji pomiędzy tabelami. Na przykład w kolumnie (pole) płeć można wprowadzić ograniczenia wprowadzania tylko 2 wartości “M” lub “K”. Związki encji - przykład dziecko dziecko dziecko • rodzic • Koniec rodzica jest zazwyczaj opcjonalny, co oznacza, że mogą istnieć rekordy rodziców bez przepisanych im rekordów dzieci. • Koniec dziecka zazwyczaj jest wymagany - rekordy dzieci nie mogą istnieć bez związanych z nimi rekordów rodziców. Związki encji - przykład • • • • • Łączy pojedynczy wiersz z tabeli A z pojedynczym wierszem z tabeli B. Każdemu rekordowi w encji (tabeli) A może odpowiadać tylko jeden rekord w encji (tabeli) B, a każdemu rekordowi w encji B może odpowiadać tylko jeden rekord w encji (tabeli) A. Jedna osoba może mieć tylko jeden PESEL Jedna osoba może mieć tylko jednego małżonka w danym momencie. Kolumna, która identyfikuje wiersz musi być zdefiniowana jako kolumna klucza podstawowego albo jako klucza unikalnego. To oznacza że wartości tego klucza nie mogą być dublowane. Nie mogą istnieć dwie osoby z tym samym numerem PESEL. Związki encji - przykład Relacja jeden – do – jednego Numer Kontrahenta – do Numeru Kontrahenta Miesięczna tabela sprzedaży zawiera zagregowane, sumaryczne dane dotyczące sprzedaży do poszczególnych kontrahentów. KONTRAHENCI SPRZEDAŻ Numer Nazw Miast Kontra a o -henta MIESIĘCZNA Nume Data r Kontr ahenta 00001 ADAX Kalisz 00001 04-11-03 00002 AMS Łódź 00002 04-11-03 Wartość brutto 150 210 Związki encji -jeden do wielu w tej samej tabeli - złączenie rekurencyjne • • • Kolumna w tabeli wskazuje na inną kolumnę w tej samej tabeli. Modelowanie hierarchicznej struktury (bazy danych) w relacyjnym modelu. W diagramie ER ten związek jest wyrażany tak zwanym „świnskim uchem” Każdy pracownik ma szefa Pracownicy • Każdy pracownik może nadzorować jednego lub więcej pracowników Hans Ladanyi, SQL- ksiega experta, Helion, Gliwice 2000, s. 662 Związki encji -jeden do wielu w tej samej tabeli - złączenie rekurencyjne Przykład struktury firmy Pracownik_ID Stanowisko Kierownik 0001 włascicieł 0 0002 Kierownik ds. Sprzedaży 0001 0003 Kierownik ds. zakupów 0001 0004 Osoba zamawiająca 0003 0005 Przedstawicieł handłowy 0002 0006 Przedstawicieł handłowy 0002 Związki encji - wielu do wielu • • • • • • • Bezpośredni związek wielu - do - wielu pomiędzy dwoma tabelami. Na poziomie bazy danych taki związek nie istnieje. Ten związek w bazie danych jest prezentowany poprzez tabele intersekcji (przecięcia). Relacja wielu do wielu nie można zaimplementować w SQL. Zgodnie z zasadami dobrego projektowania powinno się unikać bezpośrednich relacji wiele-do-wielu. Jest to rozwiązanie niedobre pod wzglÍdem projektowym z powodu przechowywania nadmiarowych danych. Klient Umowa Prawnik Lekarze Wizyty Pacjenci Definiowanie relacji i połączeń tabel • Połączenie zewnętrzne (ang. outer join) - powoduje dołączenie do wyniku brakujących wartości jednego z pól. Brane są wszystkie rekordy z encji (tabeli) A i tylko te wartości z encji (tabeli) B, które odpowiadają (są równe kluczom z tabeli A). – W Oracle takie połączenie się zapisuje następująco: tabela_A.klucz_A = tabela_B.klucz_B(+) Pracownik_Id Placa stała Pracownik_Id Premia 0001 900 0001 150 0002 1200 0003 140 0003 1900 0006 200 0004 2100 0005 1700 0006 1500 Definiowanie relacji i połączeń tabel • • • • • Iloczyn kartezjański (ang. Cartesian Product) - pokazuje wszystkie kombinacje danych z dwóch lub więcej tabel. Czasami chcemy posiadać tabelę, która zawiera wszystkie elementy z dwóch tabel, które nie mają wspólnego klucza. Gdy połączy się dane z dwóch tabel bez warunku łączącego, wszystkie rekordy tabeli A są łączone z wszystkimi rekordami tabeli B. W większości przypadków powinno siÍ unikać łączenia kartezyjańskiego. Na przykład możemy zrobić łączenie kartezyjańskie pacjentów i lekarzy danej przychodni, wykładowców i sal, Dostawców i Producentów. Jak projektować encje? • • • • • • • Wywiady z użytkownikami Analiza wymagań Reingenering istniejącego systemu? Jakich raportów potrzebują użytkownicy? Jak powiązane są ze sobą encje? Należy unikać przechowywania danych nadmiarowych. Wprowadzenie encji łączącej mającej na celu wyeliminowanie relacji wiele-do-wielu powoduje powstanie dwóch relacji jedendo-wielu. Dwie oryginalne encje przestają być powiązane bezpośrednio. Narzędzia modelowania diagramów związków encji (ang. Entity Relationship ER) • • • • • • • Diagramy związków encji (ang. Entity Relationship ER) są standardowym sposobem prezentacji encji i ich związków. Używane do – modelowania – reingeneringu - remodelowanie - budowa modelu na podstawie istniejącej bazy danych Er-Win (Computer Associated ?) Oracle Designer (Oracle) Power Designer (Sybase) S-Designer (Quest) Data Modeler (Rational Rose) Normalizacja danych • • • • • Procedura normalizacji danych – wymusza standardy dla modelu danych – zapobiega nadmiarowi zbytecznych danych – podstawa do integralności bazy danych Normalizacja teoretycznie oznacza poprawę wydajności. Denormalizacja danych w celu wydajności i szybkości wyszukiwania informacji przy mniejszych tabelach. Pięć postaci normalnych – Większość projektów spełnia przynajmniej trzecią postać normalną. Hans Ladanyi, SQL- ksiega experta, Helion, Gliwice 2000, s. 689 Relacje między tabelami • Mamy trzy tabele, r, q, s, które mają (pola, kolumny odpowiednio r - A, B q - C, D s - E, F Chcemy uzyskać zbiór A, F, pod warunkiem, że r.B = q.C and q.D=s.E Pierwsza forma normalna • • • • • • 1NF, czyli pierwsza forma normalna bazy danych, przydatna w projektowaniu dużych baz danych. Relacja jest w pierwszej postaci normalnej, jeśli wartości atrybutów są elementarne, tzn. są to pojedyncze wartości określonego typu, a nie zbiory wartości. Dane opisowe z kolumny tabeli, w której są przechowywane w formie swobodnej są wydzielane w osobnej nowej tablicy słownikowej. Przykład studenci i zajęcia w formie swobodnej. Pole zajęcia jest podstawą do tworzenia tabeli DYSCYPLINY. Collete Rolland, Bazy danych. Od koncepcji do realizacji, PWE, Warszawa 1988, (Les bases de donnees - d’une conception a une realisation extensible) Artur Górnik, Integralność i spójność danych, Oracle Druga forma normalna • • • • • Wszystkie atrybuty są zależne od jednoznacznego identyfikatora. „Atrybut (A) jest zależny funkcjonalne od innego atrybutu (B), jeśli dla każdej wartości atrybutu B istnieje tylko jedna wartość atrybutu A. Klucz jest określany jako decydujący o wszystkich wartościach wierszy, ponieważ mogą one być określone poprzez wyszukiwanie ich w wierszu pobranym przez klucz. Dlatego wszystkie inne wartości wierszy zależą od klucza.” Druga postać normalna jest stosowana tylko do tabel z unikalnym kluczem złożonym. Hans Ladanyi, SQL- ksiega experta, Helion, Gliwice 2000, s. 691-692 Trzecia postać normalna • • • • • Dana relacja jest w drugiej postaci normalnej i żaden atrybut nie będący częścią klucza nie zależy od innego atrybutu nie będącego częścią klucza. – zbyt duża ilość informacji – informacja umieszczona w złym miejscu (niewłaściwej tablicy) Pola rekordu, które nie są częścią jego klucza, nie zależą do tabeli. Jeśli zawartość grupy pól odnosi się do więcej niż jednego rekordu tabeli, należy rozważyć umieszczenie tych pól w oddzielnej tabeli. Hans Ladanyi, SQL- ksiega experta, Helion, Gliwice 2000, s. 692 - 695 Artur Górnik, Integralność i spójność danych, Oracle Trzecia postać normalna • Stosowanie trzeciej postaci normalnej tylko do często zmieniających się danych. • Przykład tablica STUDENTS – Numer_ID – Numer Ubezpieczenia Społecznego – Nazwisko – Poziom – Kurs – Kredyt Czwarta postać normalna • Dana relacja jest w czwartej postaci normalnej (zwaną również postacią normalną Boyce’a-Codda (BCNF)) wtedy i tylko wtedy, gdy jest w trzeciej postaci normalnej i wielowartościowa zależność zbioru Y od X pociąga za sobą funkcjonalną zależność wszystkich atrybutów tej relacji od X. Piąta postać normalna • Dana relacja r o schemacie R jest w piątej postaci normalnej wtedy i tylko wtedy, gdy jest w czwartej postaci normalnej i w przypadku występowania w niej połączeniowej zależności funkcjonalnej R[R1,....,Rm] zależność ta wynika z zależności atrybutów od klucza. Integralność i Spójność Danych • • Czy wynik raportu odzwierciedla dane w bazie Jak aktualizować dane i mieć jednocześnie raporty - multiversion concurrency model – zapytania widzą tylko stan zatwierdzonych zmian – blokada na poziomie wiersza Wielodostęp i dokładnie wyniki • Personalne bazy danych – dokładny wynik ponieważ dane nie są modyfikowane przez użytkownika podczas wykonywania raportów • Korporacyjne bazy danych – modyfikacja danych przez wielu użytkowników jednocześnie - wprowadzanie, usuwanie, zmiana • Jak zapewnić spójność i powtarzalność wyników raportów? Wielodostęp i dokładnie wyniki • Oracle - wielowersyjny dostęp równoległy (ang. multi-version concurrency model) – zmiany nie blokują raportowania, ani raportowanie nie blokuje zmian – użytkownik widzi tylko zatwierdzone, pewne, dane do których może mieć zaufanie – blokada na poziomie wiersza nigdy nie przechodzi do blokady na poziomie tabeli Deklaratywne więzy spójności • • • • • Więzi spójności gwarantują, że dane są integralne, wiernie odzwierciedlają w bazie danych modelowany obiekt rzeczywisty. Wbudowanie więzi spójności w definicji tabel Utrzymywanie spójności poprzez wyzwalacze (ang. trigers) Dwa typy więzi spójności – więzy spójności encji – więzy spójności referencyjnej System zarządzania bazy danych dba o więzi spójności podczas – importu, – eksportu, – modyfikacji danych. Typy blokowania tabeli w bazie danych (na przykładzie bazy danych Oracle) • Share – blokada przeciw zmianom dokonywanym przez kogokolwiek. – Wielu użytkowników może ustawić taką blokadę w tym samym czasie. • Exclusive – blokada przez jednego użytkownika nie pozwalająca innym użytkownikom zmieniać czegokolwiek w bazie danych. – Tylko jeden użytkownik może w danym momencie czasowym utworzyć taką blokadę. Deklaratywne spójności encji • • Więzi spójności encji ograniczają możliwe wartości, jakie mogą pojawić się w wierszu tabeli Więzy klucza głównego (primary key) – wartości w określonych kolumnach jednoznacznie identyfikują wiersz – nie jest dopuszczalna wartość null w kolumnach klucza głównego – automatyczne założenie indeksu na kolumnach tworzących klucz główny – jedna tabela może posiadać tylko jeden klucz główny. Więzi not null • Wartość null w polu (kolumnie) nie jest dozwolona Więzy check • Warunek, który musi być prawdziwy dla wszystkich wierszy danej tabeli • nie może zawierać podzapytania – zapytanie w zapytaniu • nie może zawierać funkcji zmiennych w czasie (np.. Sysdate data systemowa) • może zawierać nazwy jednej lub więcej kolumn. Programy zarządzania bazami danych • • System Zarządzania baz danych - oprogramowanie służące do zarządzania i przechowywania danych (ang. Data Base Management Systems DBMS) Wymagania wobec programów zarządzającymi bazami danych: – Szybkość wyszukiwania informacji, – Zdalny dostęp, – Kompresja danych - tabela, przestrzeń (ang. tablespace) (Oracle9i, Oracle 10g) – Przechowywanie informacji multimedialnej - obrazy, dźwięk, filmy – Przechowywanie informacji geograficznej - GIS Programy zarządzania bazami danych – Równoczesny dostęp do danych przez wielu użytkowników współbieżność (ang. concurrency) – XML – Prezentacja danych w Web (Intranet / Internet) - Oracle 9i, Oracle 10g – System pozwala na odtwarzanie danych po awarii. – Łatwa administracja Rozwój bazy danych w systemie operacyjnym MS-DOS, Windows • FoxPro (Microsoft) pod DOS, Windows, Mac, Unix, wersja polska. • Paradox (Borland) - Query by Example, pytania poprzez analogie. • Interbase (Borland) • dBase (Borland), od 1981 roku (dBase II pod CP/M), wersja polska. Bazy danych - producenci komercyjnych bazach danych • Oracle Corporation około 50% rynku, • IBM - DB2 (Informix) • Microsofcie - SQL Server - na Windows 2000/XP. • Sybase • NCR - Terabyte Bazy danych • Która z baz danych jest darmową alternatywą dla Ms Access (Ms SQL Server) w systemie operacyjnym Windows? Bazy danych Open Source • • • Ingres - Computer Associates mySQL PostgresSQL • • Również w systemie operacyjnym Linux Sybase - do 5 GB - darmowa Systemy do zarządzania bazach danych • Wprowadzać informacje • Wybierać informacje • Prezentować informację w raportach • • Formularz Konektor - ODBC • Zapytania - Kwerendy • Raporty Formularz • Używany jest do wprowadzenia danych w bazie danych • Przykład formularza jest okno na ekranie, które zawiera pola, w które można wprowadzić właściwe dane. Zapytania - kwerendy • Zapytania są używane do wyszukiwania, analizowania, przetwarzania danych. • Przykłady zapytań - kwerend – Którzy kontrahenci są z określonego miasta? – Jakie obroty zrobili poszczególni (określeni) kontrahenci? – Ile kupiliśmy u dostawcy X? Raport • • • • • • • Raportu używamy do generacji, przygotowywanie raportu (wydruku) z bazy danych. Formaty w których mogą być generowane raporty – Ms Excel - XLS – Ms Word - RTF – Adobe - PDF Programy do raportowania Ms Access ma wbudowany program do tworzenia raportów Oracle - Oracle Reports Agata Report http://www.agata.org.br/us/index.php Przykład raportów – kontrahenci z określonego miasta Język zapytań SQL- język relacyjnych baz danych • • • • • SQL (Structured Query Language),czyli Strukturalny Język Zapytań. SQL jest standardowym językiem do kierowania poleceń do relacyjnej bazy danych i komunikacji z bazą. Za pomocą języka SQL można – wprowadzać dane do bazy, – odczytywać – modyfikować – usuwać. Ponieważ SQL jest standardowym językiem wykorzystywanym we wszystkich relacyjnych bazach danych, użytkownik znający ten język może pracować z dowolną relacyjną bazą danych. Wariacje SQL w zależności od producenta bazy danych Oracle, IBM, Sybase, Microsoft, mySQL PDQ (Parallel Data Query), czyli SQL na wiele procesorów Relacyjne bazy danych standardy SQL • • • • • • Stworzono standardowy język zapytań (SQL), służący do operowania na danych w bazach relacyjnych. Standardy dotyczące relacyjnych baz danych są dobrze zdefiniowane przez takie organizacje, jak Międzynarodowa Organizacja Normalizacyjna (ISO) i Narodowy Amerykański Instytut Standaryzacyjny (ang. American National Standards Institute - ANSI). SQL SQL SQL SQL - 89 - 92 - SQL 2 - 92 - rozszerzony o ODBC w 1995 roku - 99 - SQL 3 wzbogacony o rozszerzenia obiektowe Język definicji i manipulacji danymi • • • • Język SQL składa się z trzech języków podrzędnych, pozwalających wykonywać praktycznie dowolne operacje w relacyjnej bazie danych Do projektowania, definiowania logicznej struktury danych używany jest język definicji danych (ang. DDL - Data Definition Language). – do tworzenia tabel, usuwania ich, – definiowania perspektyw, – indeksów, – ograniczeń itd Do modyfikowania danych w systemu służy język manipulacji danymi (ang. DML - Data Manipulation Language). Język zapytań o dane (odczytywania danych) (ang. DQL - Data Query Language) Rozwój technologii baz danych • Pierwsze systemy - płaskie pliki • Obecnie – użytkownika nie interesuje jak fizyczne jest zorganizowane przechowywanie informacji - na jednym dysku, czy rozproszone na grupach dysków, na jednym serwerze czy w klastrze, wymagana jest tylko - dostępność do danych 24x7x365 Wybór systemu zarządzania bazą danych • • • • • • • • • Jakie są wymagania aplikacji w stosunku do systemu do zarządzania bazą danych? Jaki zostanie wybrany model bazy danych? TCO - total cost of ownership - całkowite koszty posiadania W jakim systemie operacyjnym chcemy stosować bazy danych? / Microsoft Access / SQL Server nie działa na Linux, Unix, a tylko na Windows/ Jak długo będzie funkcjonowała tworzona baza danych? Jakie są wymagania wobec dostępności, odporności na awarie? Jaka jest skala danych? Jakiego wsparcie technicznego potrzebujemy? Jaki jest koszt 1 licencji dla użytkownika? Zasoby - literatura • • • • • • C.J.Date, Wprowadzenie do baz danych, WNT, Warszawa 1981, An Introduction to Database Systems, Addison-Wesley, 1977 Artur Górnik, Integralność i spójność danych, Oracle Ken Henderson, Bazy danych w architekturze klient / serwer, Robomatic, Wrocław 1998, Delphi 3 Client / Server Developer’s Guide, SAMS 1997 Hans Ladanyi, SQL- ksiega experta, Helion, Gliwice 2000 James Martin, Computer Data Base Organization Prentice Hall, 1977, James Martin, Organizacja baz danych, PWN, 1983 Collete Rolland, Bazy danych. Od koncepcji do realizacji, PWE, Warszawa 1988, (Les bases de donnees - d’une conception a une realisation extensible) Zasoby - Internet Bazy Danych – Oracle www.oracle.com www.oracle.com.pl www.otn.oracle.com – IBM www.ibm.com – Sybase www.sybase.com www.sybase.pl – MySQL www.mysql.com – Ingres www.ca.com/ingres – PostgresSQL Narzedzia do Raportowania • Agata Report www.agata.org.br/us/index.php • Oracle Report www.oracle.com • Crystal Reports www. crystaldecisions.com Zasoby - Internet Narzedzia do Modelowania • Oracle Designer www.oracle.com • Power Designer www.sybase.com www.sybase.pl • S-Designer www.quest.com www. ??? • Toad www.quest.com http://www.teta.com.pl/quest.asp • Rational Rose www.rational.com