Bazy danych. Plan wykładu. Zależności funkcyjne. Wykład 2: Relacyjny model danych - zależności funkcyjne. Podstawy SQL.



Podobne dokumenty
Technologie baz danych

Plan wykładu. Problemy w bazie danych. Problemy w bazie danych BAZY DANYCH. Problemy w bazie danych Przykład sprowadzenia nieznormalizowanej SQL

Bazy danych. Plan wykładu. Diagramy ER. Podstawy modeli relacyjnych. Podstawy modeli relacyjnych. Podstawy modeli relacyjnych

Bazy Danych i Usługi Sieciowe

Bazy danych. Plan wykładu. Zalenoci funkcyjne. Wykład 4: Relacyjny model danych - zalenoci funkcyjne. SQL - podzapytania A B

Bazy danych. Plan wykładu. Podstawy modeli relacyjnych. Diagramy ER. Wykład 3: Relacyjny model danych. SQL

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

Wprowadzenie do języka SQL

Zaawansowane bazy danych i hurtownie danych studia zaoczne II stopnia, sem. I

Technologie baz danych

Bazy danych i usługi sieciowe

Pojęcie zależności funkcyjnej

Autor: Joanna Karwowska

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

Autor: Joanna Karwowska

Język SQL. Rozdział 2. Proste zapytania

Wstęp 5 Rozdział 1. Podstawy relacyjnych baz danych 9

Wprowadzenie do baz danych

Normalizacja. Pojęcie klucza. Cel normalizacji

Technologie baz danych

Systemy baz danych. Notatki z wykładu

Wykład 5. SQL praca z tabelami 2

Podstawowe zapytania SELECT (na jednej tabeli)

- język zapytań służący do zapisywania wyrażeń relacji, modyfikacji relacji, tworzenia relacji

Systemy GIS Tworzenie zapytań w bazach danych

Wybór wszystkich danych: SELECT * FROM employee Wybór określonych kolumn lub wyrażeń: SELECT first_name, last_name, salary FROM employee

Model relacyjny. Wykład II

opisuje nazwy kolumn, wyrażenia arytmetyczne, funkcje nazwy tabel lub widoków warunek (wybieranie wierszy)

Przestrzenne bazy danych Podstawy języka SQL

Relacyjne bazy danych. Podstawy SQL

KaŜdemu atrybutowi A przyporządkowana jest dziedzina Dom(A), czyli zbiór dopuszczalnych wartości.

Cel normalizacji. Tadeusz Pankowski

Zależności funkcyjne

Tadeusz Pankowski Definicja. Definicja

Bazy danych. Plan wykładu. Podzapytania - wskazówki. Podzapytania po FROM. Wykład 5: Zalenoci wielowartociowe. Sprowadzanie do postaci normalnych.

Plan wykładu. Elementy ERD BAZY DANYCH. Proces modelowania i implementacji bazy danych. Diagramy związków encji. SQL podzapytania

SQL (ang. Structured Query Language)

Widok Connections po utworzeniu połączenia. Obszar roboczy

Autor: Joanna Karwowska

Wykład 7 Implementacja języka SQL w systemach baz danych Oracle sortowanie, funkcje agregujące i podzapytania.

Relacyjne bazy danych. Podstawy SQL

SQL - Structured Query Language. strukturalny język zapytań

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

Grupowanie i funkcje agregujące

Ćwiczenie zapytań języka bazy danych PostgreSQL

Bazy danych Teoria projektowania relacyjnych baz danych. Wykła. Wykład dla studentów matematyki

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

1 Wstęp do modelu relacyjnego

3. Podzapytania, łączenie tabel i zapytań

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

SQL - Structured Query Language -strukturalny język zapytań SQL SQL SQL SQL

Bazy danych 2. Zależności funkcyjne Normalizacja baz danych

PODZAPYTANIE (SUBSELECT)

Plan wykładu. Problemy w bazie danych. Problemy w bazie danych BAZY DANYCH

Wstęp do SQL. copyright: KGiIS WGGiOŚ AGH

Laboratorium nr 8. Temat: Podstawy języka zapytań SQL (część 2)

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

Tworzenie tabel. Bazy danych - laboratorium, Hanna Kleban 1

Projektowanie relacyjnych baz danych

Wstęp Wprowadzenie do BD Podstawy SQL. Bazy Danych i Systemy informacyjne Wykład 1. Piotr Syga

Podstawy języka SQL Co to jest SQL? Możliwości SQL SQL*Plus

Podzapytania. SELECT atrybut_1, atrybut_2,... FROM relacja WHERE atrybut_n operator (SELECT atrybut_1, FROM relacja WHERE warunek

Model relacyjny. Wykład II

Laboratorium Bazy danych SQL 2

SQL praca z tabelami 4. Wykład 7

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

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

Marek Rakowski Podstawy zdania SELECT Strona 1 z 12

Zależności funkcyjne c.d.

Zadania z SQLa (MS SQL Server)

Bazy danych. Andrzej Łachwa, UJ, /15

RBD Relacyjne Bazy Danych

Zasady transformacji modelu DOZ do projektu tabel bazy danych

BAZY DANYCH. Anomalie. Rozkład relacji i normalizacja. Wady redundancji

SIECI KOMPUTEROWE I BAZY DANYCH

Bazy danych. Andrzej Grzybowski. Instytut Fizyki, Uniwersytet Śląski

Zadania SELECT do schematu EDS (EMP, DEPT, SALGRADE)

Projekt jest finansowany ze środków Unii Europejskiej, Europejskiego Funduszu Społecznego i budŝetu państwa. Studia Podyplomowe dla Nauczycieli

Struktura bazy danych

Język DML. Instrukcje DML w różnych implementacjach SQL są bardzo podobne. Podstawowymi instrukcjami DML są: SELECT INSERT UPDATE DELETE

Język SQL. Rozdział 5. Połączenia i operatory zbiorowe

Jak wiernie odzwierciedlić świat i zachować występujące w nim zależności? Jak implementacja fizyczna zmienia model logiczny?

Zależności funkcyjne pierwotne i wtórne

Bazy danych. Andrzej Łachwa, UJ, /15

Bazy Danych i Usługi Sieciowe

Dr Michał Tanaś(

Pierwsza postać normalna

Pierwsza postać normalna

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

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

SQL. Æwiczenia praktyczne

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

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

Język SQL. Rozdział 6. Podzapytania Podzapytania proste i skorelowane, podzapytania w klauzuli SELECT i FROM, operatory ANY, ALL i EXISTS.

Bazy danych. Plan wykładu. Proces modelowania i implementacji bazy danych. Elementy ERD. Wykład 2: Diagramy zwizków encji (ERD)

Optymalizacja poleceń SQL Metody dostępu do danych

Konstruowanie Baz Danych SQL UNION, INTERSECT, EXCEPT

Model relacyjny bazy danych

Wykład XII. optymalizacja w relacyjnych bazach danych

Języki programowania wysokiego poziomu. PHP cz.4. Bazy danych

Transkrypt:

Plan wykładu Bazy danych Wykład 2: Relacyjny model danych - zależności funkcyjne. Podstawy SQL. Deficja zależności funkcyjnych Klucze relacji Reguły dotyczące zależności funkcyjnych Domknięcie zbioru atrybutów Podstawy SQL Małgorzata Krętowska Wydział Informatyki Politechnika Białostocka 2 Definicja zależności funkcyjnych Zależności funkcyjne Zależność funkcyjna: A 1 A 2...A n B Interpretacja: jeśli dwie krotki relacji R są zgodne dla atrybutów A 1, A 2,.., A n (tzn. obie krotki mają takie same wartości składowych dla wymienionych atrybutów), to muszą być również zgodne w pewnym innym atrybucie B. Odczyt zapisu: A 1, A 2,..., A n określają funkcyjnie B Jeśli zbiór atrybutów A 1, A 2,..., A n określa funkcyjnie więcej niż jeden atrybut tzn. x y A A B B A 1 A 2...A n B 1 A 1 A 2...A n B 2 A 1 A 2...A n B 3 To taki zbiór zależności skrótowo przedstawiamy jako: A 1 A 2...A n B 1 B 2 B 3 Jeśli x i y są zgodne dla atrybutów A To muszą być zgodne również dla atrybutów B 3 4

Relacja Film Tytuł Rok Czas Rodzaj nazwastudia nazwiskoaktora Żurek 2003 81 Kolor Studio1 Katarzyna Kingsajz 1987 104 Kolor Studio1 Jerzy Stuhr Kingsajz 1987 104 Kolor Studio1 Katarzyna Seksmisja 1984 117 Kolor Studio2 Jerzy Stuhr Jakie zależności funkcyjne wyróżniamy w relacji Film? tytuł rok czas tytuł rok rodzaj tytuł rok nazwastudia tytuł rok czas rodzaj nazwastudia Klucze relacji Atrybut lub zbiór atrybutów {A 1, A 2,..., A n } tworzy klucz relacji, jeśli: wszystkie pozostałe atrybuty relacji są funkcyjnie zależne od tych atrybutów => nie może być sytuacji, w której dwie różne krotki relacji R były zgodne dla wszystkich atrybutów A 1, A 2,..., A n. Nie istnieje taki podzbiór właściwy zbioru {A 1, A 2,..., A n }, od którego pozostałe atrybuty relacji R są zależne funkcyjnie, tzn. klucz musi być minimalny 5 6 Tytuł Rok Czas Rodzaj nazwastudia nazwiskoaktora Żurek 2003 81 Kolor Studio1 Katarzyna Kingsajz 1987 104 Kolor Studio1 Jerzy Stuhr Kingsajz 1987 104 Kolor Studio1 Katarzyna Seksmisja 1984 117 Kolor Studio2 Jerzy Stuhr Nadklucze Nadklucz - zbiór atrybutów, który zawiera klucz Każdy klucz jest nadkluczem y nadkluczy w relacji Film: (tytuł, rok, nazwisko Aktora, czas) (tytuł, rok, nazwisko Aktora, rodzaj) Co jest kluczem relacji? Klucz: (tytuł, rok, nazwiskoaktora) Czy mogą istnieć dwie różne krotki zgodne dla powyższych atrybutów? Czy klucz jest minimalny? 7 8

Reguły dotyczące zależności funkcyjnych Zasady, które pozwalają na zastępowanie zbioru zależności funkcyjnych zbiorami równoważnymi lub na dołączanie do zbioru tych zależności, które wynikają ze zbioru początkowego. Reguła podziału Zasady podziału i łączenia Zależność funkcyjną A 1 A 2...A n B 1 B 2... B m możemy zastąpić zbiorem zależności funkcyjnych A 1 A 2...A n B i, gdzie i=1,2,...,m Wyróżniamy następujące reguły: reguła łączenia reguła podziału reguła przechodniości Reguła łączenia Zbiór zależności funkcyjnych A 1 A 2...A n B i, gdzie i=1,2,...,m możemy zastąpić pojedynczą zależnością funkcyjną A 1 A 2...A n B 1 B 2... B m 9 10 Zależności trywialne Zależność funkcyjna A 1 A 2...A n B jest trywialna, jeśli B jest równe któremuś z A tytuł rok tytuł Mówimy, że zależność A 1 A 2...A n B 1 B 2... B m jest: trywialna - jeśli zbiór złożony z atrybutów typu B jest podzbiorem zbioru atrybutów typu A nietrywialna - jeśli co najmniej jeden z atrybutów typu B znajduje się pośród atrybutów A całkowicie nietrywialna - jeśli żaden z atrybutów typu B nie znajduje się pośród atrybutów typu A Atrybuty, które występują równocześnie z prawej i lewej strony zawsze można pominąć po prawej tronie, stąd prawdziwe jest twierdzenie (reguła zależności trywialnych) Zależność funkcyjna A 1 A 2...A n B 1 B 2... B m jest równoważna zależności A 1 A 2...A n C 1 C 2... C K, gdzie C są tymi elementami z B, które nie są równe A. 11 Założenia: Domknięcie zbioru atrybutów {A 1, A 2,..., A n } - zbiór atrybutów S - zbiór zależności funkcyjnych Domknięciem zbioru {A 1, A 2,..., A n } nad zbiorem zależności S nazywamy taki zbiór atrybutów B, że jeśli pewna relacja R spełnia wszystkie zależności ze zbioru S, to spełnia także zależność A 1 A 2... A n B, a zatem zależność A 1 A 2... A n B wynika z S. Domknięcie zbioru atrybutów {A 1, A 2,..., A n } oznaczamy przez {A 1, A 2,..., A n } +. 12

Algorytm obliczania domknięcia zbioru atrybutów {A 1, A 2,..., A n } Niech X oznacza nazwę zbioru domknięcia. Na początku X= {A 1, A 2,..., A n }. Znajdujemy wszystkie zależności funkcyjne postaci B 1B 2...B m C gdzie B 1 B 2...B m należą do zbioru X, a C nie należy. Wówczas dołączamy C do zbioru X. X + Y B Nowy X + Powtarzamy krok 2 tak długo, jak długo nie będzie można dołączyć do X żadnego nowego atrybutu. Jeśli już żadnego atrybutu nie można dołączyć do X, to znaczy, że otrzymaliśmy domknięcie zbioru {A 1, A 2,..., A n } + 13 14 Atrybuty: A, B, C, D, E, F Zależności: AB C, BC AD, D E, CF B Wyznaczyć: {A,B} +. Kolejne kroki wyznaczania domknięcia: X={A, B} X={A, B, C} X={A,B,C,D} X={A,B,C,D,E} Cel Mając dane domknięcie zbioru atrybutów {A 1, A 2,..., A n } możemy sprawdzić, czy dana zależność funkcyjna wynika ze zbioru zależności S. Jeśli B należy do {A 1, A 2,..., A n } + to oznacza, że wynika z S. A 1 A 2...A n B stąd {A,B} + ={A,B,C,D,E} 15 16

Domknięcie i klucze Zbiór {A 1, A 2,..., A n } + zawiera wszystkie atrybuty relacji R wtedy i tylko wtedy, gdy elementy A 1, A 2,..., A n są nadkluczem w R. Stwierdzenie, czy atrybuty A 1, A 2,..., A n stanowią klucz relacji, może polegać na sprawdzeniu: czy wszystkie atrybuty R należą do zbioru {A 1, A 2,..., A n } + czy X + otrzymane z dowolnego X, który utworzymy przez usunięcie choćby jednego elementu spośród A 1, A 2,..., A n, nie zawiera wszystkich atrybutów R Reguła przechodniości Reguła przechodniości umożliwia kaskadowe łączenie zależności: jeśli w relacji R zachodzą zależności A 1 A 2...A n B 1 B 2... B m oraz B 1 B 2... B m C 1 C 2...C k, to w relacji R zachodzi także zależność A 1 A 2...A n C 1 C 2...C k. Uzasadnienienie powyższej reguły => wyliczenie domknięcia {A 1, A 2,..., A n } +. : Relacja Filmy(tytuł, rok, czas, rodzaj, nazwastudia, adresstudia) Uzasadnić, że kluczem jest zbiór (tytuł, rok) tytuł rok nazwastudia nazwastudia adresstudia 17 18 Baza ćwiczeniowa Zapytania proste SELECT [ALL DISTINCT] wyrażenie [[AS] alias],... FROM nazwa_tabeli,... [WHERE warunek] [ORDER BY wyrażenie ASC DESC],...]; 19 20

Zapytania proste SELECT [ALL DISTINCT] wyrażenie [[AS] alias],... FROM nazwa_tabeli,... ALL- pokazuje wszystkie wiersze (domyślny) DISTINCT - eliminuje powtarzające się wiersze wyrażenie - nazwa kolumny lub wyrażenie zawierające nazwy kolumn, zamiast wyrażenia może wystąpić znak '* oznaczający wszystkie kolumny alias - nazwa nadana wyrażeniu na liście SELECT, może mieć postać identyfikatora prostego (napis złożony z liter, cyfr i znaków podkreślenia) lub złożonego (dowolny napis ograniczony podwójnymi cudzysłowami, np. zawierający spacje), 21 Operatory logiczne: =; <; >; >=; <= Operatory SQL: Zapytania proste [WHERE warunek] BETWEEN... AND... - między dwiema wartościami (włącznie z nimi) IN (lista) - zgodnie z jednym elementów listy LIKE - zgodnie z zadanym wzorcem (interpretacja znaków typu "wildcard": % zastępuje ciąg znaków, _ zastępuje jeden znak) IS NULL - jest wartością NULL Operator negacji: NOT (NOT nazwa_kolumny =...; NOT BETWEEN; NOT IN; NOT LIKE; IS NOT NULL) Kryteria złożone: AND (i) OR (lub) 22 Złączenia tabel Wypisać nazwiska i nazwy departamentów pracowników. SELECT [ALL DISTINCT] wyrażenie [[AS] alias],... FROM tabela_1, tabela_2,..., tabela_n WHERE warunki_łączące_tabele minimalna liczba łączących warunków = liczba tabel -1 SELECT nazwisko, nazwa, p.nr_departamentu as nr_z_pr, d.nr_departamentu as nr_z_dep FROM pracownik p, departament d; NAZWISKO NAZWA NR_Z_PR NR_Z_DEP ------------- --------------- ---------- ---------- Nazwisko1 Departament 1 1 1 Nazwisko2 Departament 1 1 1 Nazwisko3 Departament 1 2 1 Nazwisko4 Departament 1 2 1 Nazwisko5 Departament 1 3 1 Nazwisko6 Departament 1 3 1 Nazwisko7 Departament 1 3 1 23 24

Wypisać nazwiska i nazwy departamentów pracowników. SELECT nazwisko, nazwa, p.nr_departamentu as nr_z_pr, d.nr_departamentu as nr_z_dep FROM pracownik p, departament d; NAZWISKO NAZWA NR_Z_PR NR_Z_DEP ------------- --------------- ---------- ---------- Nazwisko1 Departament 1 1 1 Nazwisko2 Departament 1 1 1 Nazwisko3 Departament 1 2 1 Nazwisko4 Departament 1 2 1 Nazwisko5 Departament 1 3 1 Nazwisko6 Departament 1 3 1 Nazwisko7 Departament 1 3 1 SELECT nazwisko, nazwa, p.nr_departamentu as nr_z_pr, d.nr_departamentu as nr_z_dep FROM pracownik p, departament d WHERE p.nr_departamentu=d.nr_departamentu; NAZWISKO NAZWA NR_Z_PR NR_Z_DEP ------------- --------------- ---------- ---------- Nazwisko1 Departament 1 1 1 Nazwisko9 Departament 1 1 1 Nazwisko8 Departament 1 1 1 Nazwisko14 Departament 1 1 1 Nazwisko2 Departament 1 1 1 Nazwisko13 Departament 2 2 2 Nazwisko4 Departament 2 2 2 Nazwisko3 Departament 2 2 2 Nazwisko11 Departament 2 2 2 25 Wypisać poziomy płac poszczególnych pracowników wraz z ich zarobkami SELECT nazwisko, pensja, nr_przedzialu FROM pracownik, poziom_zarobkow WHERE pensja between dolna_granica and gorna_granica; Wynik działania zapytania: NAZWISKO PENSJA NR_PRZEDZIALU ------------- ---------- ------------- Nazwisko2 900 1 Nazwisko1 1000 1 Nazwisko14 1000 1 Nazwisko8 1200 1 Nazwisko9 1400 2 Nazwisko3 1500 3 Nazwisko4 2000 3 Nazwisko13 2000 3 Nazwisko5 3000 4 Nazwisko7 3500 5 Nazwisko11 3500 5 Tabela poziom_zarobkow: NR_PRZEDZIALU DOLNA_GRANICA GORNA_GRANICA ------------- ------------- ------------- 1 700 1200 2 1201 1400 3 1401 2000 4 2001 3000 5 3001 9999 26