Informatyka (1) Bazy danych

Podobne dokumenty
Informatyka (5) SQL. dr inż. Katarzyna Palikowska Katedra Transportu Szynowego p. 4 Hydro

Informatyka (6) Widoki. Indeksy

Bazy danych. Bazy danych. Podstawy języka SQL. Dr inż. Paweł Kasprowski.

P o d s t a w y j ę z y k a S Q L

Bazy danych. Dr inż. Paweł Kasprowski

Przykładowa baza danych BIBLIOTEKA

Literatura: SQL Ćwiczenia praktyczne Autor: Marcin Lis Wydawnictwo: Helion. Autor: Joanna Karwowska

Wykład 05 Bazy danych

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

Podstawy języka SQL. SQL Structured Query Languagestrukturalny

3 Przygotowali: mgr inż. Barbara Łukawska, mgr inż. Maciej Lasota

Przestrzenne bazy danych Podstawy języka SQL

Paweł Rajba

Ogólny plan przedmiotu. Strony WWW. Literatura BAZY DANYCH. Materiały do wykładu:

Blaski i cienie wyzwalaczy w relacyjnych bazach danych. Mgr inż. Andrzej Ptasznik

LAB 3 (część 1 Projektu)

Wstęp do relacyjnych baz danych. Jan Bartoszek

Podstawowe pojęcia dotyczące relacyjnych baz danych. mgr inż. Krzysztof Szałajko

Program wykładu. zastosowanie w aplikacjach i PL/SQL;

Bazy danych. Wykład IV SQL - wprowadzenie. Copyrights by Arkadiusz Rzucidło 1

Wykład 8. SQL praca z tabelami 5

77. Modelowanie bazy danych rodzaje połączeń relacyjnych, pojęcie klucza obcego.

Bazy danych i usługi sieciowe

Konstruowanie Baz Danych SQL UNION, INTERSECT, EXCEPT

Język SQL, zajęcia nr 1

Podstawy języka SQL. standardy SQL formułowanie zapytań operacje na strukturach danych manipulowanie danymi. Bazy danych s.5-1

Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych Bazy Danych - Projekt. Zasady przygotowania i oceny projektów

BAZY DANYCH wprowadzenie do języka SQL. Opracował: dr inż. Piotr Suchomski

Podstawowe informacje o bazach danych. Technologie Informacyjne

WPROWADZENIE DO BAZ DANYCH

Informatyka sem. III studia inżynierskie Transport 2018/19 LAB 2. Lab Backup bazy danych. Tworzenie kopii (backup) bazy danych

Integralność danych Wersje języka SQL Klauzula SELECT i JOIN

Wykład :45 BD-1 W_3

22. Podstawowe pojęcia baz danych. Baza Danych. Funkcje bazy danych. Właściwości bazy danych. Modele baz danych.

Język SQL podstawy zapytań

Systemy GIS Tworzenie zapytań w bazach danych

Model relacyjny. Wykład II

Wprowadzenie do języka SQL

Bazy Danych. C. J. Date, Wprowadzenie do systemów baz danych, WNT - W-wa, (seria: Klasyka Informatyki), 2000

Projektowanie Systemów Informacyjnych

Przykłady najlepiej wykonywać od razu na bazie i eksperymentować z nimi.

Systemy baz danych. mgr inż. Sylwia Glińska

Bazy danych. Polecenia SQL

strukturalny język zapytań używany do tworzenia i modyfikowania baz danych oraz do umieszczania i pobierania danych z baz danych

Laboratorium nr 4. Temat: SQL część II. Polecenia DML

Relacyjne bazy danych. Podstawy SQL

K1A_W11, K1A_W18. Egzamin. wykonanie ćwiczenia lab., sprawdzian po zakończeniu ćwiczeń, egzamin, K1A_W11, K1A_W18 KARTA PRZEDMIOTU

Język SQL. Rozdział 9. Język definiowania danych DDL, część 2.

Baza danych. Baza danych to:

Wykład II Encja, atrybuty, klucze Związki encji. Opracowano na podstawie: Podstawowy Wykład z Systemów Baz Danych, J.D.Ullman, J.

Bazy danych - wykład wstępny

PLAN WYKŁADU BAZY DANYCH MODEL DANYCH. Relacyjny model danych Struktury danych Operacje Integralność danych Algebra relacyjna HISTORIA

WYKŁAD 1. Wprowadzenie do problematyki baz danych

Instytut Mechaniki i Inżynierii Obliczeniowej fb.com/groups/bazydanychmt/

CREATE DATABASE ksiegarnia_internetowa DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

1 Wstęp do modelu relacyjnego

Wykład 5. SQL praca z tabelami 2

Wykład 2. Relacyjny model danych

koledzy, Jan, Nowak, ul. Niecała 8/23, , Wrocław, , ,

Bazy danych 6. Klucze obce. P. F. Góra

Wykład 6. SQL praca z tabelami 3

Aspekty aktywne baz danych

Wprowadzenie do baz danych

Bazy danych - Materiały do laboratoriów VIII

Ref. 7 - Język SQL - polecenia DDL i DML

Modelowanie hierarchicznych struktur w relacyjnych bazach danych

Informatyka I BAZY DANYCH. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2017

BAZY DANYCH. Wykład 1: Wprowadzenie do baz danych. Marcin Czajkowski. Przygotowanie wykładu: Małgorzata Krętowska

Projektowanie systemów baz danych

Tworzenie tabel. Bazy danych - laboratorium, Hanna Kleban 1

Relacyjny model baz danych, model związków encji, normalizacje

BAZY DANYCH model relacyjny. Opracował: dr inż. Piotr Suchomski

Relacyjne bazy danych. Podstawy SQL

Relacyjne Systemy Baz Danych

SIECI KOMPUTEROWE I BAZY DANYCH

Autor: Joanna Karwowska

Chemoinformatyczne bazy danych - Wprowadzenie do technologii baz danych. Andrzej Bąk

Definicja bazy danych TECHNOLOGIE BAZ DANYCH. System zarządzania bazą danych (SZBD) Oczekiwania wobec SZBD. Oczekiwania wobec SZBD c.d.

LITERATURA. C. J. Date; Wprowadzenie do systemów baz danych WNT Warszawa 2000 ( seria Klasyka Informatyki )

BAZY DANYCH wprowadzenie. Opracował: dr inż. Piotr Suchomski

Wprowadzenie do projektowania i wykorzystania baz danych Relacje

Wydział Zarządzania AGH. Katedra Informatyki Stosowanej. Bazy danych. Informatyczne systemy zarządzania

mail: strona: konsultacje: na stronie (po wcześniejszym umówieniu drogą mailową)

Przykłady normalizacji

Informatyka (10) dr inż. Katarzyna Palikowska Katedra Transportu Szynowego i Mostów p. 4 Hydro

Język SQL, zajęcia nr 2

SZKOLENIE: Administrator baz danych. Cel szkolenia

BAZY DANYCH LABORATORIUM. Studia niestacjonarne I stopnia

Bazy danych. Bazy danych. Zapytania SELECT. Dr inż. Paweł Kasprowski.

UPDATE Studenci SET Rok = Rok + 1 WHERE Rodzaj_studiow =' INŻ_ST'; UPDATE Studenci SET Rok = Rok 1 WHERE Nr_albumu IN ( '111345','100678');

Normalizacja relacyjnych baz danych. Sebastian Ernst

Język SQL Złączenia. Laboratorium. Akademia Morska w Gdyni

BAZY DANYCH NORMALIZACJA BAZ DANYCH. Microsoft Access. Adrian Horzyk. Akademia Górniczo-Hutnicza

Baza danych. Modele danych

Wykład 5 funkcje i procedury pamiętane widoki (perspektywy) wyzwalacze

Krzysztof Kadowski. PL-E3579, PL-EA0312,

Co to jest Baza Danych

Bazy danych 1. Wykład 5 Metodologia projektowania baz danych. (projektowanie logiczne)

Transkrypt:

Informatyka (1) Bazy danych dr inż. Katarzyna Palikowska Katedra Transportu Szynowego i Mostów p. 4 Hydro katpalik@pg.gda.pl katarzyna.palikowska@wilis.pg.gda.pl

Bazy danych System bazy danych = Trwała pamięć zewnętrzna + System zarządzania (DBMS) + Język zapytań lata 60-te lata 70-te lata 80-te lata 90-te ok. 2000 r. Systemy plików Hierarchiczne bazy danych Sieciowe bazy danych Relacyjne bazy danych Obiektowe bazy danych Obiektowo-Relacyjne bazy danych XML, Semistrukturalne bazy danych Projektowanie modelu logicznego i fizycznego danych przechowywanych w trwałej pamięci zewnętrznej Język zapytań SQL

Systemy plików Płaski plik (ang. flat file) dane zapisane w sposób liniowy analogicznie do taśmy magnetycznej (ang. streamer), brak relacji pomiędzy plikami Specyfikacja struktury pliku 1) Marka; Nr rejestracyjny; Opis $ Format CSV (ang. Comma Separated Values) ; - separator pola $ - separator rekordu Volvo; GA72345;opis samochodu...$fiat;wa98340;w stanie dobrym rok produkcji 2005...$ Mercedes;NR393939;po licznych naprawach... 2) Marka string(20), Nr rejestracyjny string(10), Opis string(255) 1x285 2x285 1 21 31 285 Volvo GA72345 opis samochodu... Fiat WA98340 w stanie dobrym rok produkcji 2005... Mercedes NR393939po licznych naprawach...

Systemy plików Obecne zastosowanie wymiana danych pomiędzy systemami

Przykład Rejestr systemu Windows Struktura drzewa Hierarchiczna baza danych

Struktura grafu Sieciowa baza danych Firma rekord Oddział Oddział zbiór Pracownik Pracownik Pracownik Pracownik Pracownik Maszyna Maszyna Maszyna

Rola DBMS Zapewnienie współbieżnego dostępu do danych Obsługa rozproszenia Ochrona danych kontrola uprawnień Zapewnienie integralności danych Bezpieczeństwo. Śledzenie zmian. Odtwarzanie po awarii.

Plan wykładu 1. Etapy wytwarzania oprogramowania 2. Specyfikacja wymagań 3. Diagram związków encji 4. Model relacyjny 5. Normalizacja 6. Schemat bazy danych

Inżynieria oprogramowania Analiza Metodyka AGILE ( zwinna ) Projektowanie Kodowanie Analiza Testowanie Projektowanie Kodowanie Fragment systemu Model kaskadowy (ang. waterfall) Testowanie System Analiza Testowanie Projektowanie Kodowanie Analiza Testowanie Projektowanie Kodowanie Model iteracyjny

Określenie wymagań (ang. requirements) Analiza Potrzeby Wymagania biznesowe Wymagania użytkownika Reguły biznesowe Atrybuty jakości Wymagania systemowe Wymagania funkcjonalne Zewnętrzne interfejsy Ograniczenia Specyfikacja wymagań

Przypadki użycia Załóż konto Pracownik Zaloguj Czytelnik Wyszukaj Weryfikuj tożsamość Diagramy UML Przypomnij Wypożycz System

Wymagania funkcjonalne: Specyfikacja wymagań System powinien umożliwić: 1. Założenie konta 2. Przeglądanie katalogu książek na podstawie następujących kryteriów: autor, tytuł, wydawnictwo itd. 3. Złożenie zamówienia dot. wypożyczenia książki 4. Sprawdzenie stanu konta Czytelnika 5. Automatyczne wygenerowanie przypomnień dot. zwrotu wypożyczonych książek. Reguły biznesowe, ograniczenia: 1. Czytelnik może wypożyczyć max. 5 książek 2. Przypomnienia generowane są po 2 miesiącach od wypożyczenia Poprawność Jednoznaczność Kompletność Spójność Uporządkowanie (priorytety) Weryfikowalność Modyfikowalność Powiązanie Wiek czytelnika >= 12 lat, stały adres zamieszkania na terenie województwa X,

Modelowanie ŚWIAT RZECZYWISTY Wymagania, Uproszczenia MODEL Diagram związków encji MODEL DANYCH Model relacyjny SCHEMAT BAZY DANYCH

Diagram związków encji (ERD) 1. Identyfikacja encji Książka Czytelnik Pracownik Konto Autor Tytuł ISBN Rok wydania. Imię Nazwisko Data ur Adres. PESEL 2. Identyfikacja atrybutów Imię Nazwisko Nr służbowy Stanowisko Data ur Adres. Login Hasło Data utworzenia Przypomnienie Data przygotowania Status 3. Identyfikacja kluczy Klucz główny, Klucz alternatywny PESEL Imię, Nazwisko, Data ur, Imię ojca

Diagram związków encji (ERD) cd. 3. Identyfikacja relacji i ich typów Czytelnik posiada 1:1 Czytelnik posiada 1:n Konto Konto 1:1 jeden do jeden 1:n jeden do wielu n:m wiele do wielu 1:0 1 1:0...n opcjonalność Czytelnik posiada 1:0 n Konto Książka wypożycza Czytelnik

Diagram związków encji (ERD) cd. Czytelnik posiada Konto wypożycza otrzymuje Książka dotyczy Przypomnienie Czytelnik posiada Konto Wypożyczenie dotyczy Przypomnienie Wypożyczenie Książka Data wypożyczenia Termin zwrotu

Reprezentacja relacji Czytelnik posiada Konto Wypożyczenie dotyczy Przypomnienie Tabela jest wygodną reprezentacją relacji: wiersze reprezentują rekordy (krotki) kolumny reprezentują atrybuty Książka Czytelnik PESEL Imię Nazwisko Data ur Adres 66012000991 Jan Nowak 1966-01-20 80-009 Gdańsk ul. Szeroka 2/1 55031288999 Janina Kowalska 1955-03-12 81-345 Gdynia ul. Dworcowa 3/3 Książka Model relacyjny ISBN Tytuł Rok wydania Autor 2228-29292 Baśnie 2002 Jan Chrystian Andersen Problemy do rozwiązania Więcej niż jeden adres: Adres zamieszkania, Adres korespondencyjny. Więcej niż jeden Autor Atomowość atrybutów

Model relacyjny Czytelnik PESEL Imię Nazwisko Data ur Adres 66012000991 Jan Nowak 1966-01-20 80-009 Gdańsk ul. Szeroka 2/1 55031288999 Janina Kowalska 1955-03-12 81-345 Gdynia ul. Dworcowa 3/3 Klucz główny (primary key) Klucze obce (foreign key) Klucz sztuczny (główny) ID 1 2 3 Ulica Adres Nr domu Nr lokalu Kod Miejsco wość Szeroka 2 1 80-009 Gdańsk Dworcowa 3 3 81-345 Gdynia Atomowość atrybutów Zielona 2A 10-900 Braniewo Poczta Posiada_Adres ID PESEL ID_Adres u Typ adresu 66012000991 1 Zameldowania 1 66012000991 3 Korespondencyjny 2 55031288999 2 Zameldowania 1 ID_typu_adresu Typ_adresu_słownik ID Typ adresu 1 Zameldowania 2 Korespondencyjny 3 Zamieszkania 4 Pobytu

Książka Model relacyjny ISBN Tytuł Rok wydania ID_wydawnictwa Nr wydania 2228-29292 Baśnie 2002 1 II Autor ID Imię Nazwisko 1 Jan Brzechwa 2 Jan Chrystian Andersen Posiada_autora ID ISBN ID_autora lp 1 2228-29292 2 1 2 Wydawnictwo ID Nazwa 1 PWN 2 Helion

create database Biblioteka create table Ksiazka ( isbn char(30), tytul char(200), rok_wydania integer, nr_wydania char(10), id_wydawnictwa integer, PRIMARY KEY (isbn) ) Schemat bazy danych create table Autor ( ID integer, imie char(30), nazwisko char(60), PRIMARY KEY (ID) ) Wydawnictwo Autor Posiada_Autora Książka create table Wydawnictwo ( ID integer, nazwa char(200), PRIMARY KEY (ID) ) create table Posiada_autora ( ID integer, isbn char(30), id_autora integer, lp byte, PRIMARY KEY (ID) )

create table Ksiazka ( isbn char(30), tytul char(200), rok_wydania integer, nr_wydania char(10), id_wydawnictwa integer, Ograniczenia (constraints) create table Wydawnictwo ( ID integer, nazwa char(200), PRIMARY KEY (ID) ) IDENTITY (1,1) NULL / NOT NULL PRIMARY KEY (isbn), FOREIGN KEY (id_wydawnictwa) REFERENCES Wydawnictwo ON DELETE SET NULL ) ON UPDATE/DELETE CASCADE ON UPDATE/DELETE RESTRICT ON UPDATE/DELETE SET NULL Integralność danych Integralność referencyjna Wydawnictwo Książka Co ma się stać w przypadku modyfikacji / usuwania rekordu nadrzędnego Kaskadowa modyfikacja / usunięci epodrzędnego Zabronione Ustawienie na NULL klucza obcego w podrzędnym rekordzie

Autor ID Imię Nazwisko 1 Jan Brzechwa 2 Jan Chrystian Andersen 3 Zbigniew Zach 4 Henryk Czech 5 Karolina Lech Indeks Czytelnik create index Autor_Nazwisko on Autor(nazwisko) Wyświetl autorów Dodatkowa struktura zawierająca informacje o fizycznej lokalizacji na dysku kolejnych rekordów wg ustalonego porządku sortowania Cel : przyspieszenie odczytu danych Wyszukaj: Kowalski K > C K < L Nazwisko ID Andersen 2 Brzechwa 1 Czech 4 Lech 5 Zach 3 ID 1 2 3 4 Tablice rozproszone Drzewa Adres fizycznej lokalizacji

Normalizacja (1NF) Postać normalna Klucz główny jednoznacznie identyfikujący każdą krotkę (rekord) encji (tabeli) Pierwsza postać normalna 1NF (1st Normal Form) Dekompozycja Atomowość atrybutów 1NF ID Adres 1 80-009 Gdańsk ul. Szeroka 2/1 2 81-345 Gdynia ul. Dworcowa 3/3 3 82-300 Elbląg Al. Zielona 1 ID Ulica Nr dom u Nr lokal u Kod Miejscowość Poczta 1 ul. Szeroka 2 1 80-009 Gdańsk Gdańsk 2 ul. Dworcowa 3 3 81-345 Gdynia Gdynia 3 Al. Zielona 1 82-300 Elbląg Elbląg Wprowadź adres ID Prze dro stek Ulica Nr dom u Nr lokal u Kod Miejscowość Poczta ##-### 1 ul. Szeroka 2 1 80-009 Gdańsk Gdańsk 2 ul. Dworcowa 3 3 81-345 Gdynia Gdynia 3 Al. Zielona 1 82-300 Elbląg Elbląg

Druga postać normalna 2NF Normalizacja (2NF) Atrybuty niekluczowe są zależne od całego klucza głównego 2NF Imię Nazwisko Data ur Stanowisko Mechanik 20 Księgowy 50 Kierowca 15 Kierowca 15 Mechanik 20 Anomalie: przy wstawianiu przy modyfikacji (np. podwyżka stawek wymaga modyfikacji wielu rekordów ) przy usuwaniu (np. usunięcie pracownika powoduje usunięcie stawki) Stawka godz. Stanowisko Mechanik 20 Księgowy 50 Kierowca 15 Stawka Dekompozycja Likwidowanie redundancji danych (nadmiarowości) bez ich utraty Stanowisko Stawka Data od Data do Mechanik 20 Księgowy 50 Kierowca 15 Celem normalizacji jest uniknięcie redundancji i anomalii

Normalizacja (3NF) Trzecia postać normalna 1NF Atrybuty niekluczowe są zależne bezpośrednio od klucza głównego 3NF ID Ulica Kod Miejsc owość Poczta 1 Szeroka 80-009 Gdańsk Gdańsk 2 Dworcowa 81-345 Gdynia Gdynia 3 Zielona 82-300 Elbląg Elbląg Kod wyznacza Pocztę Ulica Kod Miejsco wość Szeroka 80-009 Gdańsk Dworcowa 81-345 Gdynia Zielona 82-300 Elbląg Kod Poczta 80-009 Gdańsk 81-345 Gdynia 82-300 Elbląg

Normalizacja (BCNF, 4NF) Postać normalna Boyce a-codda (BCNF) Zależności funkcyjne spełniają regułę: X A A X X jest kluczem lub zawiera klucz 4 NF BCNF 3 NF 2 NF 1 NF ID Data wysłania Adresat Typ przesyłki Waga 1 2013-01-12 Nowak Jan zwykła 120g 5,50 2 2013-03-03 Firma Usługowo Handlowa PROMYK 3 Opłata priorytet 200g 8,50 Naruszenie BCNF Czwarta, piata postać normalna (4NF i 5NF) Warunki dot. zależności wielowartościowych Typ przesyłki Waga od Waga do Opłata zwykła 150g 5,50 priorytet 151g 250g 8,50

Przykład normalizacji ID Adres 1 80-009 Gdańsk ul. Szeroka 2/1 2 81-345 Gdynia ul. Dworcowa 3/3 3 82-300 Elbląg Al. Zielona 1 1NF ID Prze dro stek Ulica Nr dom u Nr lokal u Kod Miejscowość Poczta 1 ul. Szeroka 2 1 80-009 Gdańsk Gdańsk 2 ul. Dworcowa 3 3 81-345 Gdynia Gdynia 3 Al. Zielona 1 82-300 Elbląg Elbląg Ulica Kod Miejscowość Szeroka 80-009 Gdańsk Dworcowa 81-345 Gdynia Zielona 82-300 Elbląg 3NF Kod Poczta 80-009 Gdańsk 81-345 Gdynia 82-300 Elbląg ID Prze dro stek 1 ul. 2 Plac 3 Al. ID ID_prze drostka Ulica Kod Miejsco wość 11 1 Szeroka 80-009 Gdańsk 12 1 Dworcowa 81-345 Gdynia 13 3 Zielona 82-300 Elbląg Kod Poczta 80-009 Gdańsk 81-345 Gdynia 82-300 Elbląg ID ID_ul icy Nr dom u 1 11 2 1 2 12 3 3 3 13 1 Nr lokalu

ID Prze dro stek 1 ul. 2 Plac 3 Al. ID ID_prze drostka Ulica Kod Miejsco wość 11 1 Szeroka 80-009 Gdańsk 12 1 Dworcowa 81-345 Gdynia 13 3 Zielona 82-300 Elbląg 14 1 Łódzka 80-180 Gdańsk Kod Poczta 80-009 Gdańsk 81-345 Gdynia 82-300 Elbląg 80-180 Gdańsk ID ID_ul icy Nr dom u 1 11 2 1 2 12 3 3 3 13 1 Nr lokalu ID ID_prze drostka Ulica Kod ID miejsco wości 11 301 Szeroka 80-009 1 12 301 Dworcowa 81-345 2 13 303 Zielona 82-300 3 14 301 Łódzka 80-180 1 ID Poczta ID_powia tu 1 Gdańsk 2 Gdynia 3 Elbląg ID Miejscow ość 1 Gdańsk 1 2 Gdynia 2 3 Elbląg 3 4 Gronowo 3 ID_poczty Redukcja nadmiarowości Likwidacja anomalii Jakim kosztem? ID ID_ulicy Nr domu Nr lokalu 1 11 2 1 2 12 3 3 3 13 1

ID ID_ulicy Nr domu Nr lokalu 1 11 2 1 2 12 3 3 3 13 1 Problem - Czas dostępu (złożoność wyszukania danych) Redukcja czasu dostępu ID Adres 1 80-009 Gdańsk ul. Szeroka 2/1 2 81-345 Gdynia ul. Dworcowa 3/3 3 82-300 Elbląg Al. Zielona 1 Naruszenie 1NF brak atomowości atrybutu Adres ID Adres_linia1 Adres_linia2 1 ul. Szeroka 2/1 80-009 Gdańsk 2 ul. Dworcowa 3/3 81-345 Gdynia 3 Al. Zielona 1 82-300 Elbląg 4 Pietrzyków 157 62-840 Koźminek Naruszenie 1NF brak atomowości atrybutu ulica_nr ID Prze dro stek 1 ul. 2 Plac 3 Al. ID ID_przedr ostka Ulica_nr Kod Miejscowość Poczta 1 1 Szeroka 2/1 80-009 Gdańsk Gdańsk 2 1 Dworcowa 3/3 81-345 Gdynia Gdynia 3 3 Zielona 1 82-300 Elbląg Elbląg 4 1 Łódzka 4/5 m. 2 80-180 Gdańsk Gdańsk 5 NULL 157 62-840 Pietrzyków Koźminek

Baza danych ID Sklep Miasto 1 2 3 ID Produkt 1 2 3 Hurtownie danych Data Wartość Id_produktu Id_sklepu 2013-01-03 100 1 1 2013-01-13 130 1 1 2013-01-30 150 2 2 Redukcja czasu dostępu do zagregowanych danych Redundancja Źródło: http://edu.pjwstk.edu.pl/wyklady/hur/scb/wyklad7/w7.htm

SELECT INSERT UPDATE DELETE Konto Transakcja Nr_konta Kwota 23000011110000 1000 34555512130101 300 BEGIN TRAN T1 Operacja przelewu z konta na konto update Konto set kwota = kwota + 100 where nr_konta= 34555512130101 Awaria, odczyt niespójnych danych update Konto set kwota = kwota - 100 where nr_konta= 23000011110000 END TRAN T1 COMMIT ROLLBACK Zatwierdzenie zmian Cofnięcie zmian

Struktury hierarchiczne Pracownik Imię Nazwisko PESEL Kierownik Imię Nazwisko PESEL PESEL Imię Nazwisko PESEL_kierownika 66081200111 Jan Nowak 81021277999 81021277999 Karolina Kowalska NULL 57011933222 Edyta Fuk 66081200111 78020322222 Karol Terc 81021277999 Karolina Kowalska Karol Terc Jan Nowak Edyta Fuk PESEL Imię Nazwisko 66081200111 Jan Nowak 81021277999 Karolina Kowalska 57011933222 Edyta Fuk 78020322222 Karol Terc PESEL PESEL_kierownika 66081200111 81021277999 57011933222 78020322222 57011933222 66081200111 78020322222 81021277999. Pracownik Kierownik

Podsumowanie Tabela, rekord, krotka, wiersz Atrybut, kolumna, pole Atomowość atrybutu Klucz główny, alternatywny, obcy, sztuczny Integralność danych, integralność referencyjna Normalizacja Pierwsza postać normalna, Druga postać normalna, Trzecia postać normalna Redundancja danych Anomalia Indeks Hurtownia danych Transakcja

SQL Structured Query Language lata 70-te początki języka SQL 1986 pierwszy standard języka SQL Rozszerzenia: T-SQL (Microsoft), PL/SQL (Oracle), Inteligentne systemy wiedzy Narzędzia CASE, UML, systemy zarządzania bazami danych Generacja III.5 Środowiska programistyczne Języki wysokiego poziomu Asemblery Kod binarny SQL V IV III II I Generacje języków programowania

Język zapytań SQL Język deklaratywny (regułowy) - SQL, ProLog, CLIPS opis warunków, które powinno spełniać rozwiązanie zamiast sekwencji kroków do wykonania (języki imperatywne) SQL: Data Definition Language (DDL) Data Manipulation Language (DML) Data Control Language (DCL) CREATE ALTER DROP SELECT UPDATE DELETE INSERT GRANT REVOKE DENY

SQL DDL Kreator MS Access Utwórz pustą (nową) bazę danych Utwórz nową tabelę Wskazanie klucza głównego Modyfikuj istniejącą tabelę Usuń istniejącą tabelę Kreator odnośników Wymagalność Autonumerowanie Polecenie SQL create database Biblioteka create table Ksiazka ( isbn char(30), tytul char(200), rok_wydania integer, nr_wydania char(10), id_wydawnictwa integer, PRIMARY KEY (isbn) ) alter table Ksiazka drop table Ksiazka FOREIGN KEY (id_wydawnictwa) REFERENCES Wydawnictwo ON DELETE SET NULL NULL / NOT NULL IDENTITY (1,1)

Schemat bazy danych Klucze obce (foreign keys)

INSERT Import danych zewnętrznych Pliki xls XML HTML Pliki tekstowe INSERT INTO Czytelnik (pesel, imie, nazwisko, data_ur, email, plec) VALUES ( 66020102130, Jan, Kowalski, 1996-02-01, kowalski@wp.pl,0) INSERT INTO Ksiazka (isbn,tytul,rok ) VALUES ( 290-8282-0101, Baśnie,2010, )

Tabele wynikowe Czytelnik PESEL Imie Nazwisko Data_ur Ple c 66012000991 Jan Nowak 1966-01-20 M 55031288999 Janina Kowalska 1955-03-12 K 44021411188 Karol Brewak 1944-02-14 M SELECT Nazwisko,Imie FROM Czytelnik Nowak Kowalska Brewak Jan Janina Karol SELECT Nazwisko,Imie Porządkowanie FROM Czytelnik ORDER BY Nazwisko ASC,Imie DESC Brewak Kowalska Nowak Karol Janina Jan Tabela wejściowa SELECT SELECT Nazwisko,Imie Selekcja FROM Czytelnik WHERE Data_ur < 1960-01-01 Kowalska Brewak Janina Karol SELECT Nazwisko,Imie FROM Czytelnik WHERE Nazwisko LIKE %wak Nowak Brewak SELECT * FROM Czytelnik Projekcja (rzutowanie) wybór podzbioru kolumn Jan Karol

SELECT Czytelnik PESEL Imie Nazwisko Data_ur Plec 66012000991 Jan Nowak 1966-01-20 M 55031288999 Janina Kowalska 1955-03-12 K 44021411188 Karol Brewak 1944-02-14 M Adres ID Ulica Nr_ domu ID PESEL ID_Adre su Nr_ lokalu Typ adresu Kod 1 66012000991 1 Zameldowania 2 66012000991 3 Korespondencyjny 3 55031288999 2 Zameldowania 4 44021411188 2 Zameldowania Miejscow ość 1 Szeroka 2 1 80-009 Gdańsk 2 Dworcowa 3 3 81-345 Gdynia 3 Zielona 2A 10-900 Braniewo 4 Sienna 5 82-300 Elbląg Czytelnik_Adres Czytelnik SELECT Nazwisko,Imie, Miejscowosc FROM Czytelnik, Adres Ile rekordów zostanie zwróconych? Czytelnik_Adres 3x4=12 SELECT Nazwisko,Imie, Miejscowosc FROM Czytelnik, Adres, Czytelnik_Adres 3x4x4=48 Złączenie zwraca iloczyn kartezjański zbiorów Adres!!

Czytelnik PESEL Imie Nazwisko 66012000991 Jan Nowak 55031288999 Janina Kowalska 44021411188 Karol Brewak Czytelnik_Adres ID PESEL ID_Adre su Typ adresu 1 66012000991 1 Zameldowania 2 66012000991 3 Korespondencyjny 3 55031288999 2 Zameldowania 4 44021411188 2 Zameldowania Adres ID Ulica Nr_ domu Nr_ lokalu Kod SELECT Miejscowo ść 1 Szeroka 2 1 80-009 Gdańsk 2 Dworcowa 3 3 81-345 Gdynia 3 Zielona 2A 10-900 Braniewo SELECT Nazwisko,Imie, Miejscowosc FROM Czytelnik Czytelnik_Adres, Adres WHERE Czytelnik.PESEL = Czytelnik_Adres.PESEL AN Czytelnik_Adres.ID_Adresu = Adres.ID Nowak Jan Gdańsk Nowak Jan Braniewo Kowalska Janina Gdynia Brewak Karol Gdynia Wybierz czytelników z Gdyni: Kowalska Janina Gdynia Brewak Karol Gdynia Projekcja Złączenie Selekcja FROM Czytelnik JOIN Czytelnik_Adres ON Czytelnik.PESEL = Czytelnik_Adres.PESEL INNER JOIN Adres ON Czytelnik_Adres.ID_Adresu = Adres.ID WHERE Adres.Miejscowosc= Gdynia!

Czytelnik PESEL Imie Nazwisko 66012000991 Jan Nowak 55031288999 Janina Kowalska 44021411188 Karol Brewak Czytelnik_Adres ID PESEL ID_A dresu Typ adresu 1 66012000991 1 Zameldowania 2 66012000991 3 Korespondencyjny 3 55031288999 2 Zameldowania 4 44021411188 2 Zameldowania Wybierz czytelników, którzy nie posiadają żadnego adresu SELECT Nazwisko,Imie FROM Czytelnik WHERE Czytelnik.PESEL NOT IN ( SELECT PESEL FROM Czytelnik_Adres ) SELECT Wybierz czytelników, którzy nie posiadają adresu zameldowania SELECT Nazwisko,Imie FROM Czytelnik INNER JOIN Czytelnik_Adres ON Czytelnik.PESEL = Czytelnik_Adres.PESEL WHERE? Czytelnik_Adres.Typ_adresu <> Zameldowania Nowak Jan SELECT Nazwisko,Imie FROM Czytelnik WHERE Czytelnik.PESEL NOT IN ( ) SELECT PESEL FROM Czytelnik_Adres WHERE Typ_Adresu = Zameldowania Zapytania zagnieżdżone

JOIN Wybierz czytelników z ich adresami INNER JOIN - Złączenie wewnętrzne SELECT Nazwisko, Imię, Ulica, Miejscowosc FROM Czytelnik INNER JOIN Czytelnik_Adres ON Czytelnik.PESEL = Czytelnik_Adres.PESEL INNER JOIN Adres ON Czytelnik_Adres.ID_Adresu = Adres.ID PESEL Imie Nazwisko Data_ur Plec 66012000991 Jan Nowak 1966-01-20 M 55031288999 Janina Kowalska 1955-03-12 K 44021411188 Karol Brewak 1944-02-14 M Ile rekordów zostanie zwróconych? 2 ID PESEL ID_Adre su Typ adresu 1 66012000991 1 Zameldowania 2 66012000991 3 Korespondencyjny ID Ulica Nr_ domu Nr_ lokalu Kod Miejscowo ść 1 Szeroka 2 1 80-009 Gdańsk 2 Dworcowa 3 3 81-345 Gdynia 3 Zielona 2A 10-900 Braniewo SELECT Nazwisko, Imię, Ulica, Miejscowosc FROM Czytelnik LEFT OUTER JOIN Lewostronne złączenie zewnętrzne LEFT OUTER JOIN Czytelnik_Adres ON Czytelnik.PESEL = Czytelnik_Adres.PESEL LEFT OUTER JOIN Adres ON Czytelnik_Adres.ID_Adresu = Adres.ID 4

SELECT SELECT Nazwisko, Imie, 3 (SELECT TOP 1 Ulica + + Miejscowosc FROM Czytelnik_Adres INNER JOIN Adres ON Czytelnik_Adres.ID_Adresu = Adres.ID WHERE Czytelnik.PESEL = Czytelnik_Adres.PESEL) as dane_adresowe FROM Czytelnik Wybierz czytelników, którzy wypożyczali książki wydawnictwa HELION SELECT Nazwisko, Imie FROM Czytelnik INNER JOIN wypozyczenie ON Czytelnik.PESEL = wypozyczenie.pesel INNER JOIN ksiazka ON wypozyczenie.id_ksiazki = ksiazka.id INNER JOIN wydawnictwo ON ksiazka.id_wydawnictwa = wydawnictwo.id WHERE wydawnictwo.nazwa= HELION

Literatura Garcia-Molina H., Ullman J., Widom J. Systemy baz danych. Kompletny podręcznik, Helion 2011 Sacha K. Inżynieria oprogramowania, Wydawnictwo Naukowe PWN, Warszawa 2010