BAZY DANYCH Dr hab. Sławomir Zadrożny, prof. PR
Co to jest baza danych? Wiele możliwych definicji Zbiór danych, który istnieje przez dłuższy okres czasu Współdzielony zestaw logicznie powiązanych danych wraz z ich opisem, zaprojektowany w celu spełnienia potrzeb danej instytucji Definicja funkcjonalna jakie funkcje musi spełniać system zarządzania bazą danych (ang. database management system, DBMS) Bazy danych wykład 1 2
Jakie funkcje realizuje DBMS? Efektywne przechowywanie i wyszukiwanie danych Zapewnienie integralności danych Zapewnienie dostępu wielu użytkowników w tym samym czasie Zapewnienie bezpieczeństwa danych Bazy danych wykład 1 3
Dlaczego bazy danych są ważne? Tradycyjne, ważne zastosowania: zakupy w supermarkecie, obsługa karty kredytowej, rezerwacja biletów, systemy ERP Nowoczesne zastosowania: w środowisku Internetu eksploracja danych (ang. data mining) naukowe i medyczne bazy danych bazy wiedzy, Bazy danych wykład 1 4
Co to jest model danych? 1. Formalna reprezentacja danych Przykłady: w modelu relacyjnym tabele (relacje); w modelu hierachicznym / sieciowym - drzewa / grafy 2. Operacje na danych 3. Więzy integralności (ograniczenia) jakie można narzucić na dane; spójność danych (ang. integrity) Bazy danych wykład 1 5
Relacja matematyczna Przykłady: samochody(nr_rejestracyjny) ma(pesel,zawód) pracownicy(imię, nazwisko, telefon) Formalnie: dowolny podzbiór iloczynu kartezjańskiego zbiorów Relacja ma atrybuty, które przyjmują w jej poszczególnych krotkach określone wartości pochodzące z dziedzin tych atrybutów Bazy danych wykład 1 6
Terminologia modelu relacyjnego Schemat relacji = nazwa relacji i lista jej atrybutów Opcjonalnie: typy danych (dziedziny) atrybutów Przykład: Beers(name, manf) czy Beers(name: string, manf: string) Baza danych = zbiór relacji Schemat bazy danych = zbiór schematów wszystkich relacji występujących w bazie danych Bazy danych wykład 1 7
Przykład Schemat relacji: Beers(name, manf) Konkretna instancja relacji Beers: (Tyskie, ProducentA) krotka (Lech, ProducentB) krotka Bazy danych wykład 1 8
Relacja i tabela atrybuty (nagłówki kolumn) krotki (wiersze) nazwa Winterbrew Bud Lite producent Pete s Anheuser-Busch Nazwa relacji (tabeli) Piwa Bazy danych wykład 1 9
Zalety relacyjnego model danych Prostota uzyskanego modelu Często w zgodzie ze sposobem postrzegania danych przez człowieka Praktyczny powód dla zainteresowania się relacjami: stanowią podstawę teoretyczną języka SQL najpopularniejszego od wielu lat języka do obsługi baz danych Bazy danych wykład 1 10
Przykład Beers(name, manf) Bars(name, addr, license) Drinkers(name, addr, phone) Likes(drinker, beer) Sells(bar, beer, price) Frequents(drinker, bar) Podkreślone są klucze (ang. keys) - takie grupy atrybutów, dla których dwie krotki nie mogą mieć identycznych wartości wszystkich spośród nich Świetny przykład więzów integralności Bazy danych wykład 1 11
Schemat bazy danych w języku SQL SQL jest najbardziej znany i popularny jako język zapytań (instrukcja SELECT), służący wydobywaniu informacji z baz danych SQL uwzględnia również konstrukcje i instrukcje służące tworzeniu i modyfikacji schematu bazy danych (ang. data definition language, DDL) Bazy danych wykład 1 12
SQL: tworzenie i usuwanie tabeli Najprostsza postać instrukcji tworzącej tabelę: CREATE TABLE <nazwa> ( ); Usuwanie tabeli: <lista elementów> DROP TABLE <nazwa>; Bazy danych wykład 1 13
Elementy definicji tabeli Zasadniczy element: określenie kolumny (atrybutu) i jego typu Podstawowe typy danych: INT (INTEGER) REAL (FLOAT) CHAR(n ) = łańcuchy znaków o stałej długości równej n VARCHAR(n ) = łańcuchy znaków o zmiennej długości, równej maksymalnie n Bazy danych wykład 1 14
Przykład: CREATE TABLE CREATE TABLE Sells ( bar CHAR(20), ); beer price VARCHAR(20), REAL Bazy danych wykład 1 15
SQL: stałe poszczególnych typów Liczby całkowite (INT) i rzeczywiste (REAL) zapisuje się jak zwykle Łańcuchy znaków obejmuje się w pojedyncze apostrofy np. Tyskie Pseudowartość NULL Bazy danych wykład 1 16
Deklarowanie kolumn kluczowych Atrybut lub grupa atrybutów mogą być oznaczone jako PRIMARY KEY lub UNIQUE W obydwu przypadkach nakładane są na tabelę następujące więzy integralności: żadne dwie krotki w tabeli nie mogą mieć identycznych wartości wszystkich atrybutów z oznaczonej grupy W przypadku PRIMARY KEY dodatkowo niedopuszczalne jest wystąpienie pseudowartości NULL jako wartości któregoś atrybutu z grupy Bazy danych wykład 1 17
Deklaracja klucza jednokolumnowego Należy umieścić napis PRIMARY KEY lub UNIQUE po określeniu typu danych kolumny Przykład: CREATE TABLE Beers ( name CHAR(20) UNIQUE, manf CHAR(20) ); Bazy danych wykład 1 18
Deklaracja klucza wielokolumnowego Deklaracja klucza może wystąpić jako niezależny element definicji tabeli z użyciem instrukcji CREATE TABLE Ta forma jest szczególnie przydatna, gdy na klucz składa się więcej niż jedna kolumna Ta forma może być również użyta w przypadku klucza jednokolumnowego Bazy danych wykład 1 19
Przykład: klucz wielokolumnowy Nazwa baru (bar) i nazwa piwa (beer) łącznie stanowią klucz w tabeli Sells: CREATE TABLE Sells ( bar CHAR(20), ); beer price VARCHAR(20), REAL, PRIMARY KEY (bar, beer) Bazy danych wykład 1 20
PRIMARY KEY i UNIQUE: różnice 1. W tabeli może być tylko jeden klucz podstawowy, oznaczony jako PRIMARY KEY, natomiast może być wiele kluczy oznaczonych jako UNIQUE. 2. Żadna ze składowych kolumn klucza podstawowego (PRIMARY KEY) nie może przyjmować pseudowartości NULL. Klucze zadeklarowane z użyciem UNIQUE mogą przyjmować pseudowartość NULL, i to dla wielu wierszy w tabeli. Bazy danych wykład 1 21
Dane częściowo ustrukturalizowane Inny model danych, oparty na grafach (drzewach) Zalety: bardziej elastyczna reprezentacja danych wsparcie współdzielenia dokumentów pomiędzy systemami i bazami danych Bazy danych wykład 1 22
Dane częściowo ustrukturalizowane Węzły grafu reprezentują obiekty Etykiety na krawędziach odpowiadają nazwom atrybutów Wartości skalarne (atomowe) znajdują się w liściach (węzłach bez wychodzących z nich krawędzi) Elastyczność uzyskana ze względu na brak (w ogólności) ograniczeń na: etykiety na krawędziach wychodzących z węzła liczbę potomków opatrzonych daną etykietą Bazy danych wykład 1 23
Przykładowy graf danych name Joe s bar servedat addr Maple beer name Bud manf A.B. root manf beer name M lob Węzeł reprezentujący obiekt: bar Joe go year 1995 prize award Gold Węzeł reprezentujący obiekt: piwo Bud Podgraf stanowi wartość atrybutu Bazy danych wykład 1 24
XML XML = Extensible Markup Language Podobnie do HTML, język znacznikowy. Zakłada się, że znaczniki te mają określona semantykę, np. wskazując że pewien napis podaje adres. Idea przewodnia: tworzy się zbiór znaczników dla danej dziedziny (np. danej branży przemysłowej) i tłumaczy się wszelkie dane do postaci odpowiednio oznaczonych dokumentów XML. Bazy danych wykład 1 25
Dokument XML Rozpoczyna się od deklaracji zawartej w <?xml?>. Typowo: <?xml version = 1.0 encoding = utf-8?> Zawiera znacznik-korzeń (ang. root tag), który zawiera zagnieżdżone w sobie wszystkie inne znaczniki Bazy danych wykład 1 26
Znaczniki Zazwyczaj występują w parach otwierający/zamykający: <FOO> </FOO> które łącznie z zawartością wyznaczają element dokumentu dopuszczalny jest pojedynczy znacznik postaci <FOO/>. Znaczniki mogą być dowolnie zagnieżdżane Odróżnia się wielkie i małe litery w nazwach znaczników Bazy danych wykład 1 27
Przykład dokumentu XML <?xml version = 1.0 encoding = utf-8?> <BARS> <BAR><NAME>Joe s Bar</NAME> <BEER><NAME>Bud</NAME> <PRICE>2.50</PRICE></BEER> <BEER><NAME>Miller</NAME> <PRICE>3.00</PRICE></BEER> </BAR> <BAR> </BARS> obiekt zagnieżdżony NAME obiekt zagnieżdżony BEER Bazy danych wykład 1 28
Atrybuty Podobnie jak w przypadku HTMLu, znacznik może być opatrzony parami atrybut=wartość Atrybuty pozwalają również wiązać ze sobą elementy. Bazy danych wykład 1 29
Przykład dokumentu XML z atrybutami <?xml version = 1.0 encoding = utf-8?> <BARS> <BAR name = Joe s Bar > <BEER name = Bud price = 2.50 /> <BEER name = Miller price = 3.00 /> </BAR> <BAR> </BARS> name i price są teraz atrybutami Elementy BEER mają teraz tylko otwierający znacznik i atrybuty Bazy danych wykład 1 30
DTD s (Document Type Definitions) Opis poprawnej składni dokumentu XML Definicje dopuszczalnych konstrukcji: <!DOCTYPE <root tag> [ <!ELEMENT <name>(<components>)>... więcej elementów... ]> Bazy danych wykład 1 31
Przykład DTD <!DOCTYPE BARS [ ]> <!ELEMENT BARS (BAR*)> <!ELEMENT BAR (NAME, BEER+)> <!ELEMENT NAME (#PCDATA)> <!ELEMENT BEER (NAME, PRICE)> <!ELEMENT PRICE (#PCDATA)> Elementy NAME i PRICE zawierają tekst Element BARS zawiera 0 lub więcej zagnieżdżonych elementów BAR Element BAR zawiera 1 element NAME i 1 lub więcej elementów BEER Element BEER zawiera elementy NAME i PRICE Bazy danych wykład 1 32
Atrybuty Otwierający znacznik w dokumencie XML może mieć atrybuty W DTD, <!ATTLIST E... > deklaruje atrybut dla elementu E oraz jego typ danych Bazy danych wykład 1 33
Przykład opisu atrybutów w DTD <!ELEMENT BEER EMPTY> <!ATTLIST name CDATA #REQUIRED, manf CDATA #IMPLIED> element BEER nie ma znacznika zamykającego i zagnieżdzónych elementów Typ danych: łańcuch znaków REQUIRED = musi wystąpić ; IMPLIED = opcjonalny Przykład poprawnej postaci elementu BEER: <BEER name= Bud /> Bazy danych wykład 1 34