Dr Michał Tanaś (http://www.amu.edu.pl/~mtanas) Bazy danych – podstawowe pojęcia Baza danych jest to zbiór danych zorganizowany zgodnie ze ściśle określonym modelem danych. danych. Model danych to zbiór ścisłych zasad określających strukturę organizacji danych. Przykładem modelu danych jest dowolna tabelka z nagłówkami kolumn. Silnik bazy danych – oprogramowanie umożliwiające przechowywanie i udostępnianie danych, zgodnie z danym modelem danych. Bazy danych – podstawowe pojęcia Baza danych może, ale nie musi, być zrealizowana przy pomocy systemu informatycznego. Przykłady baz danych: Książka telefoniczna Dziennik szkolny Rozkład jazdy autobusów Terminarz spotkań Album ze zdjęciami Stojak z płytami CD Bazy danych – podstawowe pojęcia Bazą danych nie jest: jest: Notatnik (brak dobrze określonej struktury) Pusty arkusz egzaminacyjny (brak danych) Pusty zeszyt (nie ma ani danych ani struktury) Podsumowując: Baza danych = dane + struktura Relacyjny model danych Dane zorganizowane są w formie prostokątnych tabel Każda tabela posiada unikalną nazwę Kolumny tabeli określają rodzaje przechowywanych danych Wiersze tabeli (krotki (krotki)) są kolejnymi rekordami (,,paczkami’’) danych przechowywanymi w bazie. Relacyjny model danych Przykładem relacyjnej bazy danych jest indeks Kolumnami są: Data Nazwa przedmiotu Ocena Podpis wykładowcy Wierszami (krotkami) są oceny z kolejnych przedmiotów. Relacyjny model danych Definicja kolumny w bazie danych zawiera: Nazwę kolumny – zazwyczaj określającą interpretację danych przechowywanych w kolumnie (np. ,,data’’, ,,ocena’’, itp.) Typ danych – określa wewnętrzny sposób przechowywania danych przez komputer. Relacyjny model danych Typy danych Liczby całkowite (integer (integer,, int) int) Ze znakiem (signed (signed)) – mogą przechowywać liczby dodatnie i ujemne Bardzo krótkie (1 bajt) – zakres od -127 do 128 Krótkie (2 bajty) – zakres od -32 tys do 32 tys Długie (4 bajty) – zakres od -2 mld do 2 mld Bardzo długie (8 bajtów) – zakres praktycznie nieograniczony (od -263 do 263) Relacyjny model danych Typy danych Liczby całkowite (integer (integer,, int) int) Bez znaku (unsigned (unsigned)) – mogą przechowywać wyłącznie liczby dodatnie … ale za to dwukrotnie większe niż typy signed Bardzo krótkie (1 bajt) – zakres od 0 do 256 Krótkie (2 bajty) – zakres od 0 do 64 tys Długie (4 bajty) – zakres od 0 do 4 mld Bardzo długie (8 bajtów) – zakres praktycznie nieograniczony (od 0 do 264) Relacyjny model danych Typy danych Liczby zmiennoprzecinkowe (float (float,, double, real real)) Zawsze mogą przechowywać zarówno liczby dodatnie jak i ujemne Większość liczb przechowują w sposób przybliżony, z dokładnością do określonej liczby miejsc po przecinku Pojedynczej precyzji – zakres od -1038 do -10-38 i od 10-38 do 1038, dokładność 7 cyfr po przecinku Podwójnej precyzji – zakres od -10308 do -10-308 i od 10-308 do 10308, dokładność 15 cyfr po przecinku Relacyjny model danych Typy danych Liczby stałoprzecinkowe (decimal (decimal)) Każda liczba zawsze zawiera tą samą ilość miejsc po przecinku … nawet jeżeli nie jest to potrzebne … np. notacja księgowa 123,00 zł Brak standardów – dokładność i zakres zależą od konkretnego programu. Relacyjny model danych Typy danych Liczby stałoprzecinkowe (decimal (decimal)) Każda liczba zawsze zawiera tą samą ilość miejsc po przecinku … nawet jeżeli nie jest to potrzebne … np. notacja księgowa 123,00 zł Brak standardów – dokładność i zakres zależą od konkretnego programu. Relacyjny model danych Typy danych Typy związane z czasem Czas – zazwyczaj z dokładnością do 1s Data – zazwyczaj w zakresie od 1.01.1000 do 31.12.9999 Typ łączony data + czas ,,Znacznik czasu’’ (timestamp (timestamp)) – liczba sekund, które upłynęły od północy 1.01.1970 (początek tzw. ery Unixa Unixa)) Co oznacza że tzw. ,,problem roku 2000’’ (pluskwa milenijna) tak naprawdę wystąpi dopiero w roku 2038. Relacyjny model danych Typy danych Teksty (różne długości) – uwaga na sposób kodowania polskich liter! Typ boolowski – może mieć dwie wartości: prawda fałsz Dane binarne (tzw. BLOB – Binary Large OBject OBject)) – dowolne dane (zazwyczaj zdjęcia). Najczęściej rozmiar pojedynczego BLOBa jest ograniczony do 4GB. Relacyjny model danych Typy danych Typ wyliczeniowy (ENUM) – może przyjmować jedną wartość z podanego zbioru Typowy przykład: płeć (mężczyzna, kobieta) Typ zbiorowy (SET) – może przyjmować jednocześnie wiele wartości z podanego zbioru Typowy przykład: stopień naukowy (można być jednocześnie „dr”, „hab.” i „prof.”) Relacyjny model danych Lp Nazwa Szerokość geograficzna Długość geograficzna Liczba mieszkańców 1 Poznań 52N 17E 550 tys. 2 Warszawa 52N 21E 1,7 mln. 3 Kraków 50N 20E 750 tys. Relacyjny model danych Każdemu wierszowi tabeli program nadaje unikalny numer … dzięki któremu program odróżnia wiersze od siebie … ale najczęściej numer ten albo w ogóle nie jest dostępny dla użytkownika albo jest bardzo niewygodny w użyciu. Relacyjny model danych Dlatego w tabeli powinno się zawsze określać podzbiór kolumn, którego wartość jest unikalna dla każdego wiersza. Taki podzbiór nazywa się kluczem (key key)) Klucz może składać się z jednej kolumny (np. PESEL) … lub wielu kolumn łącznie (np. Imię, Nazwisko, DataUrodzenia)) DataUrodzenia … zauważmy że w takim wypadku tylko pełny klucz musi być unikalny (np. może być wielu Janów Kowalskich) Relacyjny model danych Do komunikacji z relacyjną bazą danych służy język SQL (Structured (Structured Query Language) Language) Podstawowe operacje języka SQL: Wyszukiwanie danych (SELECT) Dodawanie nowych danych (INSERT) Modyfikacja istniejących danych (UPDATE) Usuwanie danych (DELETE) Relacyjny model danych Zaawansowane operacje języka SQL: Warunki logiczne (WHERE) Sortowanie danych (ORDER BY) Klasyfikacja danych (GROUP BY) Przykład zapytania SQL: SELECT imie,nazwisko FROM pracownicy WHERE pensja>3000 ORDER BY pensja;