Relacyjne Systemy Baz Danych Dr inż. Zbigniew Rudnicki Bazy danych jedna z głównych dziedzin zastosowań komputerów od początku ich istnienia, np.: - katalogi książek, - wykazy produktów, - rejestry sprzedaży, - inwentarze magazynowanych materiałów i części, - kartoteki personalne pracowników, - wykazy klientów itp. 1
System Bazy Danych (Bank Danych) to: 1. Baza Danych oraz 2. SZBD (System Zarządzania Bazą Danych) ang.rdbms - Relation Data Base Management System 1. Baza Danych = DANE związane z konkretnym tematem, gromadzone i przetwarzane według określonych reguł 2. SZBD = System Zarządzania Bazą Danych = oprogramowanie do obsługi bazy danych (gromadzenia, aktualizacji, wyszukiwania,...) (c) Z. Rudnicki 3 Relacyjna baza danych jest zbiorem dwuwymiarowych tabel powiązanych wzajemnymi relacjami (c) Z. Rudnicki 4 2
Struktura Bazy Danych Dane - przechowywane są w TABELACH (relacjach, plikach) Każda tabela dotyczy obiektów (lub zdarzeń) jednego rodzaju i składa się z: rekordów (wierszy, krotek) dotyczących poszczególnych obiektów pól (kolumn, atrybutów) - czyli pozycji w wierszu odpowiadających własnościom obiektu (c) Z. Rudnicki 5 Struktura tabeli danych Rekord (wiersz tabeli) gromadzi informacje o pojedynczym obiekcie (na przykład: książce) lub zdarzeniu (np.wypożyczeniu) Pola rekordu zawierają informacje o poszczególnych atrybutach obiektu (np.: Autor, Tytuł, Rok_Wydania) każde pole posiada takie parametry (właściwości) jak: NAZWA TYP: liczbowy tekstowy i inne DŁUGOŚĆ a dla typu liczbowego także format (liczbę miejsc przed i po przecinku lub kropce dziesiętnej... może też mieć inne (c) Z. Rudnicki 6 3
Narzędzia do baz danych Pojedyncze tabele mogą być obsługiwane bezpośrednio w arkuszu kalkulacyjnym Bazy danych złożone z wielu tabel powiązanych relacjami wymagają wyspecjalizowanych aplikacji Lokalne aplikacje bazo-danowe mogą być tworzone przy pomocy programu Access z pakietu Ms Office a także (w ograniczonym zakresie) w Excel a Sieciowe bazy danych tworzone są najczęściej przy pomocy kilku języków np.: HTML+ PHP +SQL (c) Z. Rudnicki 7 Proste środki do baz danych w Excel u: Pojedyncze tabele można nawet tworzyć w arkuszu kalkulacyjnym. Excel dostarcza m.in.: Podpowiedzi przy wpisywaniu tych samych słów Sortowanie Autofiltr Formularz Wyszukiwanie Funkcje Excela dla baz danych Zaawansowane możliwości przy zastosowaniu języka VBA - Visual Basic for Applications (c) Z. Rudnicki 8 4
Excel - Autofiltr (c) Z. Rudnicki 9 Excel - Dane-Formularz (c) Z. Rudnicki 10 5
Projektowanie aplikacji bazodanowej - projektowanie tabel i ich normalizacja (rozkład na prostsze tabele), - tworzenie tabel z uwzględnieniem: - określania nazw, typów i długości pól, - wymagań i ograniczeń co do zakresu wartości - określenia wartości domyślnej, - wyboru klucza podstawowego, - wyboru sposobów uporządkowania; - określenie i utworzenie odpowiednich typów relacji między tabelami; - opracowanie zapytań czyli tzw. kwerend (do selekcji, projekcji,...) ; - opracowanie transakcji (kwerend funkcjonalnych); - opracowanie formularzy jako interfejsów do operowania na danych, - opracowanie postaci różnorodnych wydruków zwanych raportami. (c) Z. Rudnicki 11 Ms Access - Widok Projekt - pozwala tworzyć i modyfikować strukturę obiektów - Widok Arkusz danych pozwala korzystać z utworzonych obiektów wprowadzać, wybierać i modyfikować dane. (c) Z. Rudnicki 12 6
Normalizacja tabel W praktyce chodzi m.in o to aby: - w żadnej z tabel informacje nie powtarzały się, - każda tabela dotyczyła tylko jednego tematu a więc gromadziła informacje o określonej grupie: obiektów, zdarzeń, cech, stanów, ról i t.d., - elementy tabeli były niepodzielne (atomowe). (c) Z. Rudnicki 13 Jednoznaczna identyfikacja oraz spójność (integralność) danych Dla każdej tabeli konieczne jest istnienie klucza głównego (podstawowego) czyli pola lub zestawu pól stanowiącego jednoznaczny identyfikator obiektów (n.p.: PESEL, nr książki w bibliotece) W Accesie kluczem głównym często może być pole typu AUTONUMER (takie są pola identyfikatorów w pokazanych tabelach) Identyfikator nie może odsyłać do nie istniejących danych. Gdyby tak było to byłaby to: utrata spójności (integralności) danych (c) Z. Rudnicki 14 7
Unikalność i zgodność danych: Tabela nie może zawierać dwu (lub więcej) identycznych rekordów. Każda informacja powinna być zapisana TYLKO W JEDNYM MIEJSCU Dublowanie informacji jest nie tylko nieoszczędne ale wprowadza ryzyko niezgodności danych. Tabela taka jak niżej jest więc zastępowana kilkoma prostymi tabelami powiązanymi RELACJAMI (c) Z. Rudnicki 15 Tabele powiązane relacjami poprzednia wirtualna (sztuczna) tabela w rzeczywistości wykorzystuje dane z trzech tabel (c) Z. Rudnicki 16 8
Relacje Możliwe są trzy typy relacji: Relacja jeden do wielu - najczęściej stosowana Jeden rekord tabeli podrzędnej może być wykorzystywany w wielu rekordach tabeli nadrzędnej Na przykład: ten sam kolor może posiadać wiele samochodów w tabeli Auta; Relacja jeden do jednego polega na powiązaniu kluczy podstawowych dwu tabel dotyczących tych samych podmiotów na przykład tabeli Osoby z tabelą Pracownicy. Relacja wiele do wielu w rzeczywistości składa się z dwu relacji jeden do wielu i wymaga istnienia tabeli pośredniczącej zwanej tabelą łącza, w której klucz podstawowy składa się z dwóch pól - kluczy obcych z dwu tabel wiązanych tą relacją. (c) Z. Rudnicki 17 Tworzenie relacji jeden do wielu - przy pomocy kreatora odnośników Najpierw tworzymy tabele podrzędne np. Kolory Następnie tworzymy tabelę nadrzędną np. Auta Tworząc pole kolor w tabeli Auta wybieramy jako jego typ (z listy typów danych) kreator odnośników wybieramy domyślną opcję:... kolumna odnośnika ma pobierać wartości z tabeli lub kwerendy oraz wybieramy tabelę Kolory a w niej dwa pola: Id_koloru oraz Kolor w następnych oknach pozostawiamy zaznaczoną opcję "ukryj kolumnę klucz" oraz nazwę Kolor jako etykietę i kończymy przyciskiem"utwórz" (c) Z. Rudnicki 18 9
Przykład relacji jeden do wielu a) w OpenOffice.org Base, b) w Ms Access (c) Z. Rudnicki 19 Tworzenie relacji w oknie Relacje (c) Z. Rudnicki 20 10
Relacje przykładowej bazy po włączeniu opcji Wymuszaj więzy integralności (c) Z. Rudnicki 21 Ważniejsze operacje Indeksowanie - umożliwia przeglądanie danych według określonych porządków Sortowanie - porządkuje fizycznie rekordy w/g zadanych kryteriów Selekcja wybieranie wierszy tabel według zadanych warunków zwanych zapytaniami lub kwerendami (ang. query) Projekcja - wybieranie kolumn (pól) tabeli (też wg kwerend) Transakcje (kwerendy funkcjonalne) - dołączanie, usuwanie, aktualizacja, Definiowanie formularzy do wprowadzania danych Definiowanie raportów - wydruki (wykazy, podsumowania, nalepki) (c) Z. Rudnicki 22 11
Kwerenda - widok projekt (c) Z. Rudnicki 23 Kwerenda - widok arkusz danych (c) Z. Rudnicki 24 12
Kwerenda - widok SQL Access automatycznie generuje polecenia w języku SQL: SELECT DISTINCTROW Pracownicy.Id_dz, Osoby.Nazwisko, Osoby.Imie, Osoby.Data_ur FROM Osoby INNER JOIN Pracownicy ON Osoby.Id_os = Pracownicy.Id_os WHERE (((Pracownicy.Id_dz)=1)); (c) Z. Rudnicki 25 Kwerendy obliczające (c) Z. Rudnicki 26 13
Kwerendy funkcjonalne - usuwająca - usuwa grupę rekordów z jednej lub kilku tabel; - aktualizująca pozwala zmienić wartości grupy rekordów tabeli lub kilku tabel, na przykład dokonać zmian cen produktów czy podwyżek płac; - dołączająca pozwala dopisać nowe rekordy, kopiując je z innych tabel, lub dołączyć dane z pól wybranych na podstawie określonych kryteriów. - tworząca nową tabelę z całości lub części danych znajdujących się w innych tabelach, przykładowo może to być kopia zapasowa. (c) Z. Rudnicki 27 Tworzenie formularza na podstawie kwerendy (c) Z. Rudnicki 28 14
Sposoby prezentowania informacji przy wprowadzaniu, poprawianiu i korzystaniu z danych Tabela na ekranie - rzeczywista tabela lub wybór rekordów (selekcje) i pól (projekcje) z jednej lub wielu tabel bazy danych Formularz - przedstawia w jeden rekord (wiersz) w postaci pojedynczej karty Raport - wydruk dowolnego wykazu (listy) według podanych kryteriów wyboru pól i rekordów (c) Z. Rudnicki 29 Niektóre narzędzia i systemy baz danych dbase (proceduralny język programowania + dialogowe centrum) - już raczej historyczny lecz jego pliki akceptowane przez nowsze systemy. - Clipper, Fox Pro, dbase for Windows i in. - oparte na dbase SQL - Structured Query Language (nieproceduralny język zapytań) używany m.in w: - Ms Access, MySQL, Oracle, Progress, Informix i in. Uniwersalne języki programowania: C++, Pascal, Delphi, Visual Basic i innne (c) Z. Rudnicki 30 15
SQL (ang. Structured Query Language) czyli strukturalny język zapytań (c) Z. Rudnicki 31 SQL - charakterystyka ogólna SQL (ang. Structured Query Language) to strukturalny język zapytań używany do tworzenia, modyfikowania i wykorzystywania baz danych. SQL jest językiem deklaratywnym, nieproceduralnym to znaczy, że podajemy co chcemy uzyskać a nie w jaki sposób i przy pomocy jakich operacji Opracowany w IBM w latach siedemdziesiątych XX w. Jest standardem w komunikacji systemów klienckich z serwerami relacyjnych baz danych. Pierwszą firmą, która włączyła SQL do swojego produktu komercyjnego, był Oracle. (c) Z. Rudnicki 32 16
Systemy bazodanowe używające SQL # Caché # DATAllegro # DB2 # Firebird # First SQL # HSQL # Ingres # Informix # InterBase SQL # MaxDB znana jako SAP DB # Microsoft Access # Microsoft Jet # Microsoft SQL Server # Mimer SQL # MySQL # msql # Neteeza # OpenLink Virtuoso # Oracle # Oracle Rdb # PostgreSQL # SQL/DS # SQLite # Sybase # Teradata (c) Z. Rudnicki 33 Standardy SQL W 1986 roku SQL stał się oficjalnym standardem, wspieranym przez Międzynarodową Organizację Normalizacyjną (ISO) i jej członka, Amerykański Narodowy Instytut Normalizacji (ANSI). Potrzeba określenia standardu dla aplikacji współpracujących z wieloma różnymi bazami danych - doprowadziła do opracowania SQL92, obowiązującego w produktach komercyjnych do dziś. W roku 2003 przedstawiono SQL:2003 nowy standard języka SQL opublikowany w Sigmod Record Vol.33 Nr.1 Marzec 2004. Jest to głównie poprawione SQL:1999 z wyjątkiem części SQL/XML oraz kilku dodatkowych właściwości. (c) Z. Rudnicki 34 17
Funkcje silnika (back-end) i interfejsy (front-end) Serwer określa się często takimi nazwami jak "back-end", "engine", czy też "motor/silnik bazy danych". Przechowuje on dane oraz zapewnia ich pobieranie i aktualizacje w odpowiedzi na pobierane instrukcje w SQL-u. Uzupełnieniem serwera jest "front end - interfejs upraszczający komunikację z serwerem i pozwalający wykorzystać pobrane dane Może on mieć: mechanizmy generowania i obsługi formularzy, raportów, języki czwartej generacji (4GL), graficzne języki zapytań, narzędzia konstrukcyjne dla użytkownika, oprogramowanie do prezentacji multimedialnych, systemy tworzenia hipertekstu, CAD/CAM, arkusze kalkulacyjne,... Wykorzystują one język SQL. (c) Z. Rudnicki 35 Składnia SQL Zapytania można zaliczać do trzech głównych podzbiorów: SQL DDL (ang. Data Definition Language, czyli Język Definicji Danych). SQL DML (ang. Data Manipulation Language, czyli Język Manipulacji Danymi), SQL DCL (ang. Data Control Language, czyli Język Kontroli nad Danymi). Instrukcje SQL tradycyjnie zapisywane są wielkimi literami, (jednak nie jest to wymóg). Każde zapytanie w SQL-u musi kończyć się znakiem średnikiem [;]. (c) Z. Rudnicki 36 18
DDL - Data Definition Language Komendy grupy DDL operują na strukturach danych - można np. dodawać, zmieniać i kasować tabele lub bazy. Najważniejsze polecenia tej grupy to: CREATE (np. CREATE TABLE, CREATE DATABASE,...) - utworzenie struktury (bazy, tabeli, indeksu, itp.), DROP (np. DROP TABLE, DROP DATABASE,...) - całkowite usunięcie struktury, ALTER (np. ALTER TABLE ADD COLUMN...) - zmiana struktury (dodanie kolumny do tabeli, zmiana typu danych w kolumnie tabeli). (c) Z. Rudnicki 37 DCL - Data Control Language DCL ma zastosowanie do nadawania uprawnień do obiektów bazodanowych. Najważeniejsze polecenie w tej grupie to: GRANT np.: GRANT ALL PRIVILEGES ON EMPLOYEE TO PIOTR WITH GRANT OPTION - przyznanie wszystkich praw do tabeli EMP użytkownikowi PIOTR z opcją pozwalającą PIOTR'owi nadawać prawa do tego obiektu (tabela EMP). (c) Z. Rudnicki 38 19
DML - Data Manipulation Language Podzbiór DML służy do operacji na danych - do ich umieszczania w bazie, kasowania, przeglądania, zmiany. Najważniejsze polecenia z tego zbioru to: SELECT - pobranie z bazy danych, INSERT - umieszczenie danych w bazie, UPDATE - zmiana danych, DELETE - usunięcie danych z bazy. (c) Z. Rudnicki 39 Tworzenie i usuwanie tabeli: CREATE i DELETE CREATE TABLE pracownicy (imie varchar(255), nazwisko varchar(255), pensja float, staz int); Tworzy tabelę "pracownicy" zawierającą tekstowe (varchar - zmiennej długości pole tekstowe) pola "imię" i "nazwisko", o maksymalnej długości 255 znaków, zapisaną za pomocą liczby rzeczywistej (float od ang. floating point) pensję oraz zapisany za pomocą liczby całkowitej (int od ang. integer) staż. DROP TABLE pracownicy; Usuwa z bazy całkowicie tabelę "pracownicy". (c) Z. Rudnicki 40 20
Instrukcja SELECT (wybierz) Przykładowe zapytanie: SELECT * FROM pracownicy WHERE pensja > 2000 ORDER BY staz DESC; Wyświetla z tabeli pracownicy (FROM pracownicy) wszystkie kolumny (*) dotyczące tych pracowników, których pensja jest większa niż 2000 (WHERE pensja > 2000) i sortuje wynik malejąco według stażu pracy (ORDER BY staz DESC). (c) Z. Rudnicki 41 Instrukcja INSERT (wstaw) INSERT INTO pracownicy (imie, nazwisko, pensja, staz) VALUES ('Jan', 'Kowalski', 5500, 1); Dodaje do tabeli pracownicy (INTO pracownicy) wiersz (rekord) zawierający dane pojedynczego pracownika. (c) Z. Rudnicki 42 21
Aktualizacja i usuwanie danych: UPDATE i DELETE UPDATE pracownicy SET pensja = pensja * 1.1 WHERE staz > 2; Podnosi o 10% (SET pensja = pensja * 1.1) pensję pracownikom, których staż jest większy niż 2 (np. lata). DELETE FROM pracownicy WHERE imie = 'Jan' AND nazwisko = 'Kowalski'; Usuwa z tabeli "pracownicy" wiersz (rekord) dotyczący pracownika o imieniu "Jan" i nazwisku "Kowalski". (c) Z. Rudnicki 43 Modyfikacja struktury tabeli ALTER TABLE pracownicy ADD COLUMN dzial varchar(255); Dodaje do struktury tabeli "pracownicy" kolumnę "dzial" (dział), jako pole tekstowe o długości max. 255 znaków. (c) Z. Rudnicki 44 22