Bazy danych. Plan wykładów



Podobne dokumenty
Wydział Elektrotechniki, Informatyki i Telekomunikacji Instytut Informatyki i Elektroniki Instrukcja do zajęć laboratoryjnych

Bazy danych. Artur Gramacki. Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych

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

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

Autor: Joanna Karwowska

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

Wykład 8. SQL praca z tabelami 5

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

Przestrzenne bazy danych Podstawy języka SQL

Projektowanie systemów baz danych

PRZEWODNIK PO PRZEDMIOCIE

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

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

Podstawy języka SQL. SQL Structured Query Languagestrukturalny

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

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

Wykład 2. Relacyjny model danych

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

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

1 Wstęp do modelu relacyjnego

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

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

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

030 PROJEKTOWANIE BAZ DANYCH. Prof. dr hab. Marek Wisła

SIECI KOMPUTEROWE I BAZY DANYCH

PODSTAWY BAZ DANYCH. 5. Modelowanie danych. 2009/ Notatki do wykładu "Podstawy baz danych"

D D L S Q L. Co to jest DDL SQL i jakie s jego ą podstawowe polecenia?

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

Przykładowa baza danych BIBLIOTEKA

Model relacyjny. Wykład II

Zasady transformacji modelu DOZ do projektu tabel bazy danych

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

Systemy GIS Tworzenie zapytań w bazach danych

Informatyka Ćwiczenie 10. Bazy danych. Strukturę bazy danych można określić w formie jak na rysunku 1. atrybuty

Bazy danych. Dr inż. Paweł Kasprowski

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

Baza danych. Modele danych

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

Wykład :45 BD-1 W_3

Paweł Rajba

Projektowanie Systemów Informacyjnych

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

Podstawowe pakiety komputerowe wykorzystywane w zarządzaniu przedsiębiorstwem. dr Jakub Boratyński. pok. A38

Krzysztof Kadowski. PL-E3579, PL-EA0312,

WPROWADZENIE DO BAZ DANYCH

Tworzenie tabel. Bazy danych - laboratorium, Hanna Kleban 1

Wykład I. Wprowadzenie do baz danych

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

I. Język manipulowania danymi - DML (Data Manipulation Language). Polecenia INSERT, UPDATE, DELETE

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

Podstawowe informacje o bazach danych. Technologie Informacyjne

Diagramy związków encji. Laboratorium. Akademia Morska w Gdyni

Wprowadzenie do projektowania i wykorzystania baz danych Relacje

Baza danych. Baza danych to:

Język SQL, zajęcia nr 1

Bazy danych - wykład wstępny

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

Oracle11g: Wprowadzenie do SQL

Bazy danych. Polecenia SQL

PRZEWODNIK PO PRZEDMIOCIE

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

Bazy danych Wykład zerowy. P. F. Góra

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

Wykład 4. SQL praca z tabelami 1

Transformacja modelu ER do modelu relacyjnego

Bazy danych 2. Wykład 1

Technologia informacyjna

SIECI KOMPUTEROWE I BAZY DANYCH

Model relacyjny. Wykład II

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

Cel przedmiotu. Wymagania wstępne w zakresie wiedzy, umiejętności i innych kompetencji 1 Język angielski 2 Inżynieria oprogramowania

Program szkoleniowy Efektywni50+ Moduł IV Podstawy relacyjnych baz danych i język SQL

Wybór EUROPEAN będzie rozpoznawał dzień przed miesiącem, natomiast US miesiąc przed dniem.

INFORMATYKA GEODEZYJNO- KARTOGRAFICZNA Relacyjny model danych. Relacyjny model danych Struktury danych Operacje Oganiczenia integralnościowe

PLAN WYKŁADU BAZY DANYCH PODSTAWOWE KWESTIE BEZPIECZEŃSTWA OGRANICZENIA DOSTĘPU DO DANYCH

CREATE DATABASE ksiegarnia_internetowa DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

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

Wykład 6. SQL praca z tabelami 3

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

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

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

Aspekty aktywne baz danych

Relacyjne bazy danych. Podstawy SQL

Bazy danych - Materiały do laboratoriów VIII

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

Dane wejściowe. Oracle Designer Generowanie bazy danych. Wynik. Przebieg procesu

T-SQL dla każdego / Alison Balter. Gliwice, cop Spis treści. O autorce 11. Dedykacja 12. Podziękowania 12. Wstęp 15

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

Konstruowanie Baz Danych SQL UNION, INTERSECT, EXCEPT

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

SZKOLENIE: Administrator baz danych. Cel szkolenia

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

Autor: Joanna Karwowska

PLAN WYKŁADU BAZY DANYCH ZALEŻNOŚCI FUNKCYJNE

SQL (ang. Structured Query Language)

SQL DDL DML TECHNOLOGIE BAZ DANYCH. Wykład 5: Język DDL i DML. Małgorzata Krętowska

PAŃSTWOWA WYŻSZA SZKOŁA ZAWODOWA W NOWYM SĄCZU SYLABUS PRZEDMIOTU. Obowiązuje od roku akademickiego: 2011/2012

Język SQL. instrukcja laboratoryjna. Politechnika Śląska Instytut Informatyki. laboratorium Bazy Danych

Relacji między tabelami klucze obce. Schemat bazy danych, wczytanej z pliku create_tables.sql. Klucz obcy jako ograniczenie dla kolumny

Transkrypt:

Bazy danych Artur Gramacki Uniwersytet Zielonogórski A.Gramacki@iie.uz.zgora.pl wersja 1.2.0 ostatnia aktualizacja: 3 marca 2015 dr inż. Artur Gramacki, Instytut Informatyki i Elektroniki, Uniwersytet Zielonogórski 1 Plan wykładów Cel kursu Czym są i do czego służą bazy danych System zarządzania bazą danych (SZBD) Projektowanie systemów informatycznych Modelowanie pojęciowe: model związków encji Pojęcie relacji oraz podstawowe operacje na relacjach Związki między relacjami (1:1, 1:N, N:M), klucze główne i klucze obce, inne tzw. ograniczenia (ang. constraints) bazodanowe Normalizacja relacji Transakcje bazodanowe Optymalizacja działania bazy danych dr inż. Artur Gramacki, Instytut Informatyki i Elektroniki, Uniwersytet Zielonogórski 2

Plan laboratoriów 1. Podstawy pracy z bazą danych MySQL 2. Podstawy języka SQL (Polecenia CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT) 3. Zapoznanie się z demonstracyjną strukturą relacyjną. Instalacja modelu demonstracyjnego 4. Polecenie SELECT, część 1 (klauzule ORDER BY oraz WHERE, operatory, aliasy, wyrażenia, wartości puste NULL) 5. Polecenie SELECT, część 2 (funkcje agregujące, klauzula GROUP BY, klauzula HAVING) 6. Polecenie SELECT, część 3 (złączenia tabel, iloczyn kartezjański, złączenia równościowe, złączenia nierównościowe, złączenia zewnętrzne, operatory UNION oraz UNION ALL, podzapytania) 7. Wybrane funkcje wbudowane 8. Podzapytania 9. Ograniczenia (ang. constraints) bazodanowe 10.Implementacja przykładowej struktury relacyjnej w bazie MySQL. Język definiowania danych DDL (ang. Data Definition Language) oraz języki manipulowania danymi DML (ang. Data Manipulation Language) 11. System przywilejów oraz zarządzanie użytkownikami 12. Transakcje w bazach danych 13. Import i eksport danych. Tworzenie kopii bezpieczeństwa oraz odzyskiwanie danych 14. Wytwarzanie aplikacji bazodanowych, szczególnie internetowych dr inż. Artur Gramacki, Instytut Informatyki i Elektroniki, Uniwersytet Zielonogórski 3 Cel kursu dr inż. Artur Gramacki, Instytut Informatyki i Elektroniki, Uniwersytet Zielonogórski 4

Cel kursu Podać niezbędne wiadomości teoretyczne na temat relacyjnych baz danych Nauczyć projektować poprawne struktury relacyjne Nauczyć podstaw pracy oraz podstaw administrowania wybranym systemem bazodanowym (np. Oracle, MySQL) Nauczyć efektywnej pracy z językiem SQL Nauczyć tworzenia aplikacji bazodanowych, w szczególności interenetowych (języki PHP, JAVA, wzorce projektowe, MVC - Model- View-Controller, inne) dr inż. Artur Gramacki, Instytut Informatyki i Elektroniki, Uniwersytet Zielonogórski 5 Literatura Teoria relacyjnych baz danych C. J. Date: Wprowadzenie do systemów baz danych, Wydawnictwa Naukowo-Techniczne, 2000 C. J. Date: SQL: omówienie standardu języka, Wydawnictwa Naukowo-Techniczne, 2000 MySQL Luke Welling, Laura Thomson: MySQL. Podstawy, Wydawnictwo HELION, 2005 Richard Stones, Neil Matthew: Bazy danych i MySQL. Od podstaw, Helion 2003 pozycja łatwiejsza pozycja trudniejsza Paul Dubios: MySQL. Podręcznik administratora, Wydawnictwo HELION, 2005 MySQL AB: MySQL 5.0 Reference Manual, (jest to najbardziej aktualne opracowanie na temat bazy MySQL stworzone i na bieżąco aktualizowane przez jej twórców. Książka dostępna w wersji elektronicznej pod adresem http://dev.mysql.com/doc/) Lech Banachowski (tłum.): SQL. Język relacyjnych baz danych, WNT Warszawa, 1995 dr inż. Artur Gramacki, Instytut Informatyki i Elektroniki, Uniwersytet Zielonogórski 6

Czym są i do czego służą bazy danych dr inż. Artur Gramacki, Instytut Informatyki i Elektroniki, Uniwersytet Zielonogórski 7 Czym są i do czego służą bazy danych Potrzeba gromadzenia i PRZETWARZANIA coraz większych ilości danych Informacje gromadzone w bazach danych są bardzo cenne Informacje gromadzone w bazach danych pomagają zarządzać przedsiębiorstwem (firmą, biznesem) Informacje gromadzone w bazach danych pomagają promować firmę Informacje zgromadzone i nie wykorzystywane są bezwartościowe Wolny i zawodny dostęp do danych jest często gorszy niż brak jakiejkolwiek bazy danych Oracle, DB2, SQL Server, Sybase, MySQL, PostgreSQL, Access, Delphi dr inż. Artur Gramacki, Instytut Informatyki i Elektroniki, Uniwersytet Zielonogórski 8

System zarządzania bazami danych (SZBD) dr inż. Artur Gramacki, Instytut Informatyki i Elektroniki, Uniwersytet Zielonogórski 9 Definicje, podstawowe informacje system zarządzania bazą danych SZBD (ang. DBMS -Database Management System) - oprogramowanie umożliwiające tworzenie oraz eksploatację bazy danych oraz jej użytkowników (np. ORACLE, MySQL) baza danych - spójny zbiór danych posiadających określone znaczenie (inaczej jest to informatyczne odwzorowanie fragmentu świata rzeczywistego baza danych = dane + schemat bazy danych (najczęściej relacyjny) system bazy danych = baza danych + system zarządzania bazą danych podstawowe funkcje SZBD to: łatwe odpytywanie bazy danych optymalizacja zapytań zapewnienie integralności danych zapewnienie wielodostępu do danych odporność na awarie ochrona i poufność danych system bazy danych system zarządzania bazą danych baza danych dane schemat dr inż. Artur Gramacki, Instytut Informatyki i Elektroniki, Uniwersytet Zielonogórski 10

Własności systemu bazy danych niezależność aplikacji i danych Dane mogą być wprowadzane do bazy bez konieczności modyfikacji korzystających z nich programów czy systemów użytkowych, a z drugiej strony aplikacje mogą być modyfikowane niezależnie od stanu baz danych abstrakcyjna reprezentacja danych Programy i systemy użytkowe (aplikacje) są tworzone przy użyciu tzw. deklaratywnych języków programowania (w odróżnieniu od języków imperatywnych). Twórca aplikacji nie musi np. interesować się kolejnością danych w bazie, ani sposobem ich reprezentacji i wyszukiwania. Precyzuje jedynie warunki selekcji informacji. Inaczej mówiąc: decyduje co zrobić, a nie jak zrobić różnorodność sposobów widzenia danych Te same dane zawarte w bazie mogą być widziane w różny sposób przez różnych użytkowników. Efekt ten uzyskuje się przez stosowanie różnych filtrów (perspektyw) nakładanych na te same dane fizyczna i logiczna niezależność danych Fizyczna niezależność danych polega na tym, że rozszerzenie systemu komputerowego, na którym pracuje SZBD o nowy sprzęt nie narusza danych w bazie. Logiczna niezależność danych polega na tym, że - po pierwsze wprowadzanie nowych danych do bazy nie deaktualizuje starych, po drugie - dane, które nie są wzajemnie powiązane tzw. więzami integralności mogą być usuwane z bazy niezależnie od siebie dr inż. Artur Gramacki, Instytut Informatyki i Elektroniki, Uniwersytet Zielonogórski 11 Projektowanie systemów informatycznych dr inż. Artur Gramacki, Instytut Informatyki i Elektroniki, Uniwersytet Zielonogórski 12

Projektowanie systemów informatycznych (1/2) STRATEGIA ANALIZA PROJEKTOWANIE BUDOWA DOKUMENTACJA WDRAŻANIE EKSPLOATACJA dr inż. Artur Gramacki, Instytut Informatyki i Elektroniki, Uniwersytet Zielonogórski 13 10 Projektowanie systemów informatycznych (2/2) STRATEGIA Ogólny model pojęciowy systemu (Analityk systemowy) 10 100 ANALIZA PROJEKTOWANIE Szczegółowy model pojęciowy systemu (Analityk systemowy) Struktury logiczne i fizyczne danych i aplikacji (Projektant) 1000 BUDOWA DOKUMENTACJA Baza danych i funkcjonalne aplikacje (Programista) 10000 WDRAŻANIE Instalacja systemu u odbiorcy (Wdrożeniowiec, programista, szkoleniowiec) 100000 koszty zmian EKSPLOATACJA Użytkowanie, pielęgnacja, modyfikacje, usuwanie usterek (Administrator, programista) dr inż. Artur Gramacki, Instytut Informatyki i Elektroniki, Uniwersytet Zielonogórski 14

Modelowanie pojęciowe: model związków encji dr inż. Artur Gramacki, Instytut Informatyki i Elektroniki, Uniwersytet Zielonogórski 15 Projektowanie systemów baz danych Miniświat wyróżniony fragment rzeczywistości, który zamierzamy zamodelować w postaci bazy danych Analiza miniświata - konstrukcja modelu konceptualnego modelowanie związków encji Transformacja modelu konceptualnego do modelu relacyjnego relacje Proces normalizacji modelu relacyjnego relacje znormalizowane Implementacja modelu relacyjnego w wybranym Systemie Zarządzania Bazami Danych (SZBD) Tworzenie interfejsu użytkownika, strojenie itp. np. ORACLE, MySQL, SQL Server np. C, C++, Java, PHP, PL/SQL dr inż. Artur Gramacki, Instytut Informatyki i Elektroniki, Uniwersytet Zielonogórski 16

Modelowanie związków encji (1/6) materiał w tym rozdziale podano w wielkim skrócie! Szczegóły patrz np. Richard Baker, CASE Method SM, Modelowanie związków encji, WNT, Warszawa, 1996 encja (ang. entity) jest rzeczą lub obiektem mającym dla nas znaczenie, rzeczywistym bądź wyobrażonym, o którym informacje muszą być znane lub przechowywane ENCJA 1 ENCJA 2 nazwa encji 1 nazwa encji 2 wiele opcjonalny wymagany jeden ENCJA 3 wiele wymagany SAMOCHÓW ------------------ marka typ pojemność SAMOCHÓW ------------------ SEAT LEON 1600 jeden opcjonalny związek rekurencyjny wystąpienie encji dr inż. Artur Gramacki, Instytut Informatyki i Elektroniki, Uniwersytet Zielonogórski 17 encją może być: Modelowanie związków encji (2/6) obiekt fizyczny (np. samochód, bilet lotniczy) obiekt niematerialny (np. konto bankowe, zamówienie) zdarzenie (np. urlop pracownika, sprzedaż samochodu) istniejący fakt (np. znajomość języków obcych) między encjami mogą zachodzić różne związki. Każdy związek ma dwa końce i ma przypisaną nazwę, stopień (liczebność) oraz opcjonalność (opcjonalny czy wymagany) encje są charakteryzowane przez atrybuty nazwa encji powinna być podana w liczbie pojedynczej i zapisana dużymi literami nazwa encji musi dokładnie reprezentować typ lub klasę rzeczy, a nie żadne jej konkretne wystąpienie dr inż. Artur Gramacki, Instytut Informatyki i Elektroniki, Uniwersytet Zielonogórski 18

Modelowanie związków encji (3/6) dla BILET LOTNICZY PASAŻER wyszczególniony na opcjonalność jednostronna obligatoryjność jednostronna Każdy BILET LOTNICZY MUSI być wystawiony dla jednego i tylko jednego PASAŻERA Każdy PASAŻER MOŻE być wyszczególniony na jednym lub więcej BILETACH PROJEKT PRACOWNIK opcjonalność obustronna jest realizowany przez bierze udział w Każdy PROJEKT MOŻE być realizowany przez jednego lub wielu PRACOWNIKÓW Każdy PRACOWNIK MOŻE brać udział w jednym lub wielu projektach SAMOCHÓW OSOBA opcjonalność jednostronna obligatoryjność jednostronna należy do jest właścicielem Każdy SAMOCHÓW MUSI być własnością jednego i tylko jednj OSOBY Każda OSOBA MOŻE być właścicielem jednego lub wielu samochodów dr inż. Artur Gramacki, Instytut Informatyki i Elektroniki, Uniwersytet Zielonogórski 19 Modelowanie związków encji (4/6) SAMOCHÓW posiada PRZEGLĄD TECHNICZNY dotyczy obligatoryjność obustronna Każdy SAMOCHÓW MUSI posiadać jeden lub więcej PRZEGLADÓW TECHNICZNYCH Każdy PRZEGLAD TECHNICZNY MUSI dotyczyć jednego i tylko jednego samochodu PRACOWNIK jest podwładnym jest przełożonym dla Każdy PRACOWNIK MOŻE być podwładnym jednego i tylko jednego PRACOWNIKA Każdy PRACOWNIK MOŻE być przełożonym dla jednego lub wielu PRACOWNIKÓW dr inż. Artur Gramacki, Instytut Informatyki i Elektroniki, Uniwersytet Zielonogórski 20

Modelowanie związków encji (5/6) jest częścią WIERSZ ZAMÓWIENIA dotyczy PRODUKT znajduje się w w praktyce encji prawie zawsze jest więcej niż dwie złożone z złożone przez składa ZAMÓWIENIE KLIENT Każdy PRODUKT MOŻE znajdować w jednym lub wielu WIERSZACH ZAMÓWIENIA Każde ZAMÓWIENIE MOŻE składać się z jednego lub wielu WIERSZY ZAMÓWIEŃ Każdy WIERSZ ZAMÓWIENIA MUSI dotyczyć jednego i tylko jednego PRODUKTU Każdy WIERSZ ZAMÓWIENIA MUSI być częścią jednego i tylko jednego ZAMÓWIENIA Każdy KLEINT MOŻE złożyć jedno lub wiele ZAMÓWIEŃ Każde ZAMÓWIENIE MUSI być złożone przez jednego i tylko jednego klienta dr inż. Artur Gramacki, Instytut Informatyki i Elektroniki, Uniwersytet Zielonogórski 21 Modelowanie związków encji (6/6) KONTO dla OSOBA (PESEL) dla lub posiada związki wzajemnie się wykluczające FIRMA posiada (REGON) Każde KONTO MUSI być ALBO dla jednej i tylko jednej OSOBY, ALBO dla jednej i tylko jednej FIRMY Istnieje wiele narzędzi do "rysowania" diagramów encji. Jednym z nich jest PowerDesigner DataArchitect firmy Sybase. dr inż. Artur Gramacki, Instytut Informatyki i Elektroniki, Uniwersytet Zielonogórski 22

Pojęcie relacji oraz podstawowe operacje na relacjach dr inż. Artur Gramacki, Instytut Informatyki i Elektroniki, Uniwersytet Zielonogórski 23 Iloczyn kartezjański (1/2) 1 Zbiór A Zbiór B a 3 2 b Iloczyn kartezjański: A x B (a, 1) (a, 2) (a, 3) (b, 1) (b, 2) (b, 3) Relacja podzbiór iloczynu kartezjańskiego dr inż. Artur Gramacki, Instytut Informatyki i Elektroniki, Uniwersytet Zielonogórski 24

Zbiór nazwisk (A) Iloczyn kartezjański (2/2) Zbiór imion (B) Zbiór płci (C) Nowak Kowalski Barska Adam Ewa M K Iloczyn kartezjański: A x B x C Nowak Adam K Barska Ewa M Kowalski Adam K Kowalski Ewa K Kowalski Ewa M Nowak Ewa M Barska Adam M Barska Adam K Barska Ewa K Kowalski Adam M Nowak Adam M Nowak Ewa K jedyne sensowne dane dr inż. Artur Gramacki, Instytut Informatyki i Elektroniki, Uniwersytet Zielonogórski 25 Przykład relacji komórka Relacja STUDENCI stud_id imie nazwisko typ_uczel_id 1 Artur Nowakowski P 2 Jan Kowalski P 3 Roman Nowak U 4 Stefan Antkowiak A 5 Ewa Konieczna A 6 Anna Wojtasik A 7 Marek Pawlak P tabela (relacja) wartość wiersz (krotka) kolumna (atrybut) dr inż. Artur Gramacki, Instytut Informatyki i Elektroniki, Uniwersytet Zielonogórski 26

Operacje na relacjach - SELEKCJA stud_id imie nazwisko typ_uczel_id 1 Artur Nowakowski P 2 Jan Kowalski P 3 Roman Nowak U 4 Stefan Antkowiak A 5 Ewa Konieczna A 6 Anna Wojtasik A 7 Marek Pawlak P SELECT stud_id, imie, nazwisko, typ_uczel FROM studenci WHERE typ_uczel_id="p"; lub po prostu: SELECT średnik jest ZAWSZE zakończeniem instrukcji SQL +---------+-------+------------+--------------+ stud_id imie nazwisko typ_uczel_id +---------+-------+------------+--------------+ 1 Artur Nowakowski P 2 Jan Kowalski P 7 Marek Pawlak P +---------+-------+------------+--------------+ dr inż. Artur Gramacki, Instytut Informatyki i Elektroniki, Uniwersytet Zielonogórski 27 Operacje na relacjach - PROJEKCJA (RZUT) stud_id imie nazwisko typ_uczel_id 1 Artur Nowakowski P 2 Jan Kowalski P 3 Roman Nowak U 4 Stefan Antkowiak A 5 Ewa Konieczna A 6 Anna Wojtasik A 7 Marek Pawlak P SELECT nazwisko, typ_uczel_id FROM studenci; SELECT typ_uczel_id, nazwisko FROM studenci; +------------+--------------+ różna +--------------+------------+ nazwisko typ_uczel_id kolejność typ_uczel_id nazwisko +------------+--------------+ kolumn +--------------+------------+ Nowakowski P P Nowakowski Kowalski P P Kowalski Nowak U U Nowak Antkowiak A A Antkowiak Konieczna A A Konieczna Wojtasik A A Wojtasik Pawlak P P Pawlak +------------+--------------+ +--------------+------------+ dr inż. Artur Gramacki, Instytut Informatyki i Elektroniki, Uniwersytet Zielonogórski 28

Operacje na relacjach - SELEKCJA oraz PROJEKCJA stud_id imie nazwisko typ_uczel_id 1 Artur Nowakowski P 2 Jan Kowalski P 3 Roman Nowak U 4 Stefan Antkowiak A 5 Ewa Konieczna A 6 Anna Wojtasik A 7 Marek Pawlak P SELECT nazwisko, typ_uczel_id FROM studenci WHERE typ_uczel_id="p"; +------------+--------------+ nazwisko typ_uczel_id +------------+--------------+ Nowakowski P Kowalski P Pawlak P +------------+--------------+ dr inż. Artur Gramacki, Instytut Informatyki i Elektroniki, Uniwersytet Zielonogórski 29 Operacje na relacjach - ZŁĄCZENIA (NATURALNE) Operacja ta polega na łączeniu rekordów dwóch lub więcej relacji z zastosowaniem określonego warunku łączenia. Wynikiem połączenia jest podzbiór iloczynu kartezjańskiego. STUDENCI stud_id imie nazwisko typ_uczel_id 1 Artur Nowakowski P 2 Jan Kowalski P 3 Roman Nowak U 4 Stefan Antkowiak A 5 Ewa Konieczna A 6 Anna Wojtasik A 7 Marek Pawlak P +--------+------------+--------------+ imie nazwisko nazwa +--------+------------+--------------+ Artur Nowakowski Politechnika Jan Kowalski Politechnika Roman Nowak Uniwersytet Stefan Antkowiak Akademia Ewa Konieczna Akademia Anna Wojtasik Akademia Marek Pawlak Politechnika +--------+------------+--------------+ UCZELNIE +--------------+--------------+ typ_uczel_id nazwa +--------------+--------------+ A Akademia P Politechnika U Uniwersytet +--------------+--------------+ SELECT studenci.imie, studenci.nazwisko, uczelnie.nazwa FROM uczelnie, studenci WHERE studenci.typ_uczel_id = uczelnie.typ_uczel_id; nazwy tabel nie są tu absolutnie niezbędne dr inż. Artur Gramacki, Instytut Informatyki i Elektroniki, Uniwersytet Zielonogórski 30

Operacje na relacjach - ZŁĄCZENIA ZEWNĘTRZNE (1/3) STUDENCI stud_id imie nazwisko typ_uczel_id 1 Artur Nowakowski P 2 Jan Kowalski P 3 Roman Nowak NULL 4 Stefan Antkowiak NULL 5 Ewa Konieczna NULL 6 Anna Wojtasik A 7 Marek Pawlak P UCZELNIE +--------------+--------------+ typ_uczel_id nazwa +--------------+--------------+ A Akademia P Politechnika U Uniwersytet +--------------+--------------+ wartość NULL: wartość nieznana w tym momencie +-------+------------+--------------+ imie nazwisko nazwa +-------+------------+--------------+ Artur Nowakowski Politechnika Jan Kowalski Politechnika Anna Wojtasik Akademia Marek Pawlak Politechnika SELECT S.imie, S.nazwisko, U.nazwa FROM uczelnie AS U, studenci AS S WHERE S.typ_uczel_id = U.typ_uczel_id; +-------+------------+--------------+ brak informacji o 3 pracownikach oraz o tym, że istnieje też Uniwersytet tu użyliśmy tzw. aliasów. Nie jest to obowiązkowe ale bardzo wygodne dr inż. Artur Gramacki, Instytut Informatyki i Elektroniki, Uniwersytet Zielonogórski 31 Operacje na relacjach - ZŁĄCZENIA ZEWNĘTRZNE (2/3) SELECT S.imie, S.nazwisko, U.nazwa FROM studenci S LEFT OUTER JOIN uczelnie U ON S.typ_uczel_id = U.typ_uczel_id; SELECT S.imie, S.nazwisko, U.nazwa FROM uczelnie U LEFT OUTER JOIN studenci S ON S.typ_uczel_id = U.typ_uczel_id; SELECT LUB S.imie, S.nazwisko, U.nazwa FROM uczelnie U RIGHT OUTER JOIN studenci S ON S.typ_uczel_id = U.typ_uczel_id; +--------+------------+--------------+ imie nazwisko nazwa +--------+------------+--------------+ Artur Nowakowski Politechnika Jan Kowalski Politechnika Roman Nowak NULL Stefan Antkowiak NULL Ewa Konieczna NULL Anna Wojtasik Akademia Marek Pawlak Politechnika +--------+------------+--------------+ pojawili się studenci, którzy nie są przypisani do żadnego typu uczelni SELECT LUB S.imie, S.nazwisko, U.nazwa FROM studenci S RIGHT OUTER JOIN uczelnie U ON S.typ_uczel_id = U.typ_uczel_id; +-------+------------+--------------+ imie nazwisko nazwa +-------+------------+--------------+ Anna Wojtasik Akademia Artur Nowakowski Politechnika Jan Kowalski Politechnika Marek Pawlak Politechnika NULL NULL Uniwersytet +-------+------------+--------------+ pojawił się typ uczelni, do której nie jest przypisany żaden student dr inż. Artur Gramacki, Instytut Informatyki i Elektroniki, Uniwersytet Zielonogórski 32

Operacje na relacjach - ZŁĄCZENIA ZEWNĘTRZNE (3/3) SELECT S.imie, S.nazwisko, U.nazwa FROM studenci S FULL OUTER JOIN uczelnie U ON S.typ_uczel_id = U.typ_uczel_id; FULL OUTER JOIN = LEFT OUTER JOIN + RIGHT OUTER JOIN +--------+------------+--------------+ imie nazwisko nazwa +--------+------------+--------------+ Artur Nowakowski Politechnika Jan Kowalski Politechnika Roman Nowak NULL Stefan Antkowiak NULL Ewa Konieczna NULL Anna Wojtasik Akademia Marek Pawlak Politechnika NULL NULL Uniwersytet +--------+------------+--------------+ pojawił się typ uczelni, do której nie jest przypisany żaden student pojawili się studenci, którzy nie są przypisani do żadnego typu uczelni dr inż. Artur Gramacki, Instytut Informatyki i Elektroniki, Uniwersytet Zielonogórski 33 Operacje na relacjach - ILOCZYN KARTEZJAŃSKI SELECT studenci.imie, studenci.nazwisko, uczelnie.nazwa FROM uczelnie, studenci; +--------+------------+--------------+ imie nazwisko nazwa +--------+------------+--------------+ Artur Nowakowski Akademia Artur Nowakowski Politechnika Artur Nowakowski Uniwersytet Jan Kowalski Akademia Jan Kowalski Politechnika Jan Kowalski Uniwersytet UCZELNIE: 3 rekordy STUDENCI: 7 rekordów wynik: 3 x 7 = 21 rekordów stud_id imie nazwisko typ_uczel_id 1 Artur Nowakowski P 2 Jan Kowalski P 3 Roman Nowak U 4 Stefan Antkowiak A 5 Ewa Konieczna A 6 Anna Wojtasik A 7 Marek Pawlak P Roman Nowak Akademia Roman Nowak Politechnika Roman Nowak Uniwersytet Stefan Antkowiak Akademia Stefan Antkowiak Politechnika +--------------+--------------+ typ_uczel_id nazwa Stefan Antkowiak Uniwersytet +--------------+--------------+ Ewa Konieczna Akademia A Akademia Ewa Konieczna Politechnika P Politechnika U Uniwersytet Ewa Konieczna Uniwersytet +--------------+--------------+ Anna Wojtasik Akademia Anna Wojtasik Politechnika Anna Wojtasik Uniwersytet dużo zdublowanych Marek Pawlak Akademia (z reguły z reguły bez praktycznego Marek Pawlak Politechnika znaczenia!) danych Marek Pawlak Uniwersytet +--------+------------+--------------+ dr inż. Artur Gramacki, Instytut Informatyki i Elektroniki, Uniwersytet Zielonogórski 34

Operacje na relacjach - GRUPOWANIE STUDENCI stud_id imie nazwisko typ_uczel_id 1 Artur Nowakowski P 2 Jan Kowalski P 3 Roman Nowak U 4 Stefan Antkowiak A 5 Ewa Konieczna A 6 Anna Wojtasik A 7 Marek Pawlak P SELECT COUNT(typ_uczel_id) AS ilosc, typ_uczel_id FROM studenci GROUP BY typ_uczel_id; +-------+--------------+ ilosc typ_uczel_id +-------+--------------+ 3 A 3 P 1 U +-------+--------------+ dr inż. Artur Gramacki, Instytut Informatyki i Elektroniki, Uniwersytet Zielonogórski 35 Operacje mnogościowe - SUMA (UNIA) Unia pozwala na zsumowanie zbiorów rekordów dwóch lub więcej relacji. Warunkiem poprawności tej operacji jest zgodność liczby i typów atrybutów (kolumn) sumowanych relacji. Przykład przedstawiony poniżej sumuje zbiory studentów i pracowników okrojone do imienia i nazwiska (za pomocą projekcji), w celu uzyskania informacji o wszystkich osobach powiązanych z uczelnią: STUDENCI +---------+--------+------------+-----------+ stud_id imie nazwisko typ_uczel +---------+--------+------------+-----------+ 1 Artur Nowakowski P 2 Jan Kowalski P 3 Roman Nowak U 4 Stefan Antkowiak A 5 Ewa Konieczna A 6 Anna Wojtasik A 7 Marek Pawlak P +---------+--------+------------+-----------+ PRACOWNICY +---------+----------+----------+------------+ prac_id imie nazwisko data_zatr +---------+----------+----------+------------+ 100 Marek Kowalski 2000-10-10 101 Andrzej Rychlik 1990-05-22 102 Wojciech Barski 1995-12-01 +---------+----------+----------+------------+ SELECT imie, nazwisko FROM studenci UNION SELECT imie, nazwisko FROM pracownicy; uwaga na brak średnika tu średnik obowiązkowy +----------+------------+ imie nazwisko +----------+------------+ Artur Nowakowski Jan Kowalski Roman Nowak Stefan Antkowiak Ewa Konieczna Anna Wojtasik Marek Pawlak Marek Kowalski Andrzej Rychlik Wojciech Barski +----------+------------+ dr inż. Artur Gramacki, Instytut Informatyki i Elektroniki, Uniwersytet Zielonogórski 36

Operacje mnogościowe - PRZECIĘCIE (PRZEKRÓJ) Przekrój pozwala znaleźć iloczyn dwóch lub więcej zbiorów relacji tzn. takich, które występują zarówno w jednej jak i w drugiej relacji. Podobnie jak w przypadku unii, warunkiem poprawności tej operacji jest zgodność liczby i typów atrybutów relacji bazowych. STUDENCI +---------+--------+------------+-----------+ stud_id imie nazwisko typ_uczel +---------+--------+------------+-----------+ 1 Artur Nowakowski P 2 Jan Kowalski P 3 Roman Nowak U 4 Stefan Antkowiak A 5 Ewa Konieczna A 6 Anna Wojtasik A 7 Marek Pawlak P +---------+--------+------------+-----------+ PRACOWNICY +---------+----------+----------+------------+ prac_id imie nazwisko data_zatr +---------+----------+----------+------------+ 100 Marek Kowalski 2000-10-10 101 Andrzej Rychlik 1990-05-22 102 Wojciech Barski 1995-12-01 +---------+----------+----------+------------+ SELECT nazwisko FROM studenci INTERSECT SELECT nazwisko FROM pracownicy; +----------+ nazwisko +----------+ Kowalski +----------+ uwaga na brak średnika dr inż. Artur Gramacki, Instytut Informatyki i Elektroniki, Uniwersytet Zielonogórski 37 Operacje mnogościowe - RÓŻNICA Operacja obliczania różnicy dwóch relacji polega na znalezieniu wszystkich rekordów, które występują w pierwszej relacji, ale nie występują w drugiej. STUDENCI +---------+--------+------------+-----------+ stud_id imie nazwisko typ_uczel +---------+--------+------------+-----------+ 1 Artur Nowakowski P 2 Jan Kowalski P 3 Roman Nowak U 4 Stefan Antkowiak A 5 Ewa Konieczna A 6 Anna Wojtasik A 7 Marek Pawlak P +---------+--------+------------+-----------+ PRACOWNICY +---------+----------+----------+------------+ prac_id imie nazwisko data_zatr +---------+----------+----------+------------+ 100 Marek Kowalski 2000-10-10 101 Andrzej Rychlik 1990-05-22 102 Wojciech Barski 1995-12-01 +---------+----------+----------+------------+ SELECT nazwisko FROM studenci MINUS SELECT nazwisko FROM pracownicy; +------------+ nazwisko +------------+ Nowakowski Nowak Antkowiak Konieczna Wojtasik Pawlak +------------+ uwaga na brak średnika dr inż. Artur Gramacki, Instytut Informatyki i Elektroniki, Uniwersytet Zielonogórski 38

Związki między relacjami (1:1, 1:N, N:M), klucze główne i klucze obce, inne tzw. ograniczenia (ang. constraints) bazodanowe dr inż. Artur Gramacki, Instytut Informatyki i Elektroniki, Uniwersytet Zielonogórski 39 Klucz główny (ang. primary key) KLIENCI klient_id imie nazwisko adres pesel telefon miasto klucz główny klucze kandydujące nadklucz (ang. superkey) to kolumna lub zestaw kolumn, która może być używana do jednoznacznego zidentyfikowania rekordu tabeli. Klucz główny to NAJMNIEJSZY nadklucz klucz główny zapewnia unikalność poszczególnych rekordów na danej tabeli można zdefiniować tylko jeden klucz główny (prosty lub złożony) w zdecydowanej większości przypadków powinno to być pole numeryczne całkowite klucz główny na polu znakowym może wpływać na zmniejszenie wydajności bazy klucz główny może być złożony (więcej niż jedna kolumna), jednak należy unikać zbyt wielu kolumn. Trzy kolumny wydają się być sensownym maksimum w powiązaniu z kluczami obcymi (patrz dalej) zapewniają wsparcie dla tzw. ograniczeń integralnościowych (ang. integrity constraints) w zasadzie każda tabela relacyjna powinna mieć zdefiniowany klucz główny dr inż. Artur Gramacki, Instytut Informatyki i Elektroniki, Uniwersytet Zielonogórski 40

Klucz obcy (ang. foreign key), związki 1:1, 1:N (1/5) klucz główny KLIENCI klient_id ZAMÓWIENIA zam_id klucz główny imie nazwisko 1:N klient_id data_zam adres pesel opis_zam klucz obcy klucz obcy reprezentuje związki między tabelami klucz obcy gwarantuje, że bardzo trudno jest wprowadzić niespójność do bazy danych.baza danych a nie programista i jego aplikacja muszą martwić się o właściwe sprawdzanie integralności bazy poprawnie zaprojektowane reguły klucza obcego ułatwiają dokumentowanie relacji między tabelami stosowanie kluczy obcych zwiększa obciążenie serwera stosowanie kluczy obcych może utrudniać odzyskiwanie danych po awariach mimo wszystko stosowanie kluczy obcych jest bardzo zalecane! takim kolorem oznaczany będzie klucz obcy takim kolorem oznaczany będzie klucz główny dr inż. Artur Gramacki, Instytut Informatyki i Elektroniki, Uniwersytet Zielonogórski 41 Klucz obcy (ang. foreign key), związki 1:1, 1:N (2/5) KLIENCI +-----------+-------+------------+--------------+-------------+ klient_id imie nazwisko adres pesel +-----------+-------+------------+--------------+-------------+ 1 Artur Nowakowski NULL 26016711223 2 Jan Kowalski Zielona Gora 10128012345 3 Roman Nowak Sulechow 99999999999 +-----------+-------+------------+--------------+-------------+ ZAMÓWIENIA +--------+-----------+------------+----------+ zam_id klient_id data_zam opis_zam +--------+-----------+------------+----------+ 1 1 2005-10-12 NULL 2 1 2004-07-10 NULL 3 1 1999-08-10 NULL 4 2 1998-10-13 NULL 5 3 2001-12-10 NULL 6 3 2005-08-14 NULL +--------+-----------+------------+----------+ w tej kolumnie NIE MOŻE pojawić się żadna wartość, która NIE WYSTĘPUJE w tabeli nadrzędnej dr inż. Artur Gramacki, Instytut Informatyki i Elektroniki, Uniwersytet Zielonogórski 42

Klucz obcy (ang. foreign key), związki 1:1, 1:N (3/5) PACJENCI PACJECI_TAJNE pacjent_id imie nazwisko 1:1 pacjent_t_id pacjent_id num_stat_chor data_ur opis_chor plec 1. wymagane organicznie UNIQUE dla kolumny 2. w praktyce zwiazek 1:1 jest rzadko używany (łatwiej użyć tzw. widoków ang. views + odpowiednie uprawnienia) STUDENCI student_id imie 1:N UCZELNIE uczelnia_id nazwa nazwisko skrot uczelnia_id ilosc_stud_dzien ilosc_stud_zaocz dr inż. Artur Gramacki, Instytut Informatyki i Elektroniki, Uniwersytet Zielonogórski 43 Klucz obcy (ang. foreign key), związki 1:1, 1:N (4/5) Interpretacja: tzw. tabela master-detail UWAGI uwaga_id student_id tekst_uwagi STUDENCI UCZELNIE student_id uczelnia_id imie nazwa nazwisko skrot uczelnia_id ilosc_stud_dzien miasto_id ilosc_stud_zaocz Interpretacja: tzw. tabela słownikowa MIASTA miasto_id nazwa dr inż. Artur Gramacki, Instytut Informatyki i Elektroniki, Uniwersytet Zielonogórski 44

Klucz obcy (ang. foreign key), związki 1:1, 1:N (5/5) Modelowanie podległości imie nazwisko stanowisko Marek Kowalski Prezes ---Wojciech Barski W-ce Prezes ds. Finansowych ------Edyta Zurawska Ksiegowa ------Ewa Pytel Windykator ------Iwona Rutkowska Ksiegowa ---Andrzej Rychlik W-ce Prezes ds. Rozwoju ------Jan Kowalski Analityk ------Wojciech Nowakowski Projektant ------Andrzej Pawlak Projektant PRACOWNICY prac_id imie nazwisko data_rozp szef_id stanowisko istniejące rozszerzenia SQL pozwalają uwzględniać podległości w wynikach zapytania +---------+-----------+------------+------------+---------+-----------------------------+ prac_id imie nazwisko data_zatr szef_id stanowisko +---------+-----------+------------+------------+---------+-----------------------------+ 3 Wojciech Barski 1995-12-01 1 W-ce Prezes ds. Finansowych 1 Marek Kowalski 2000-10-10 NULL Prezes 6 Jan Kowalski 1998-12-01 2 Analityk 5 Wojciech Nowakowski 1995-05-11 2 Projektant 4 Andrzej Pawlak 2000-10-10 2 Projektant 8 Ewa Pytel 1997-03-22 3 Windykator 9 Iwona Rutkowska 1991-05-01 3 Ksiegowa 2 Andrzej Rychlik 1990-05-22 1 W-ce Prezes ds. Rozwoju 7 Edyta Zurawska 2005-08-01 3 Ksiegowa +---------+-----------+------------+------------+---------+-----------------------------+ dr inż. Artur Gramacki, Instytut Informatyki i Elektroniki, Uniwersytet Zielonogórski 45 Związki N:M (1/3) ZAMÓWIENIA PRODUKTY zam_id klient_id OPISY_ZAMÓWIEŃ prod_id nazwa data_zam opis_zam 1:N op_zam_id zam_id prod_id ilosc 1:N cena rabat Zamówienie zawiera produkty N:N Produkt może być umieszczony na zamówieniach Dwie alternatywne wersje tabeli wiążącej: OPISY_ZAMÓWIEŃ OPISY_ZAMÓWIEŃ zam_id prod_id ilosc rabat klucz główny ZŁOŻONY op_zam_id zam_id prod_id ilosc rabat dr inż. Artur Gramacki, Instytut Informatyki i Elektroniki, Uniwersytet Zielonogórski 46 klucz główny PROSTY część "informacyjna" tabeli N:N