2. Model związk. zków w encji. (Entity. Relationship Model) Modelowanie świata Poj Diagramy zwi



Podobne dokumenty
BAZY DANYCH model związków encji. Opracował: dr inż. Piotr Suchomski

Model relacyjny. Wykład II

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

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

1 Wstęp do modelu relacyjnego

Bazy danych. Algebra relacji

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

Transformacja modelu ER do modelu relacyjnego

Technologie baz danych

Model relacyjny. Wykład II

BAZY DANYCH algebra relacyjna. Opracował: dr inż. Piotr Suchomski

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

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

Relacyjny model danych

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 1. Wykład 5 Metodologia projektowania baz danych. (projektowanie logiczne)

Bazy danych i usługi sieciowe

Bazy danych wykład trzeci. trzeci Modelowanie schematu bazy danych 1 / 40

Projektowanie Systemów Informacyjnych

Zasady transformacji modelu DOZ do projektu tabel bazy danych

Rozpatrzymy bardzo uproszczoną bazę danych o schemacie

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

Konstruowanie Baz Danych SQL UNION, INTERSECT, EXCEPT

Wykład 2. Relacyjny model danych

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

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

Przestrzenne bazy danych Podstawy języka SQL

Przykładowa baza danych BIBLIOTEKA

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

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

Bazy Danych. Modele danych. Krzysztof Regulski WIMiIP, KISiM,

WYKŁAD 1. Wprowadzenie do problematyki baz danych

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

Wykład 6. SQL praca z tabelami 3

BAZY DANYCH LABORATORIUM. Studia niestacjonarne I stopnia

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

RBD Relacyjne Bazy Danych Więzy realcji

Transformacja modelu ER do modelu relacyjnego

Plan wykładu: Relacyjny model danych: opis modelu, podstawowe pojęcia, ograniczenia, więzy.

Wykład 8. SQL praca z tabelami 5

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

PLAN WYKŁADU BAZY DANYCH GŁÓWNE ETAPY PROJEKTOWANIA BAZY MODELOWANIE LOGICZNE

Podstawy języka SQL. SQL Structured Query Languagestrukturalny

Bazy Danych i Usługi Sieciowe

Systemy informatyczne. Modelowanie danych systemów informatycznych

Posługiwanie się tabelami

Cel normalizacji. Tadeusz Pankowski

Autor: Joanna Karwowska

Model relacyjny bazy danych

Bazy danych. Dr inż. Paweł Kasprowski

Projektowanie relacyjnych baz danych

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

Technologie baz danych

Projektowanie baz danych

RBD Relacyjne Bazy Danych

Autor: Joanna Karwowska

Wykład :45 BD-1 W_3

Paweł Rajba

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

Wykład 4. SQL praca z tabelami 1

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

Technologie baz danych

Wykład 05 Bazy danych

Bazy danych. Zachodniopomorski Uniwersytet Technologiczny w Szczecinie. Wykład 3: Model związków encji.

1 Projektowanie systemu informatycznego

Systemy baz danych. Notatki z wykładu

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

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

Utwórz klucz podstawowy relacji na podstawie unikalnego identyfikatora encji. podstawie kluczy podstawowych wiązanych relacji.

Algebra relacji. nazywamy każdy podzbiór iloczynu karteziańskiego D 1 D 2 D n.

Modelowanie danych, projektowanie systemu informatycznego

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

SIECI KOMPUTEROWE I BAZY DANYCH

Bazy danych - wykład wstępny

Relacyjny model danych

Krzysztof Kadowski. PL-E3579, PL-EA0312,

Tworzenie tabel. Bazy danych - laboratorium, Hanna Kleban 1

PRZYKŁAD. Prosta uczelnia. Autor: Jan Kowalski nr indeksu: (przykładowy projekt)

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

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

Modelowanie hierarchicznych struktur w relacyjnych bazach danych

Normalizacja baz danych

INFORMATYKA GEODEZYJNO- KARTOGRAFICZNA. Modelowanie danych. Model związków-encji

Transformacja modelu EER do postaci relacyjnego modelu danych. Zbyszko Królikowski

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

Normalizacja. Pojęcie klucza. Cel normalizacji

Agnieszka Ptaszek Michał Chojecki

Teoretyczne podstawy informatyki

Relacyjne bazy danych. Podstawy SQL

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

Modelowanie konceptualne model EER

Temat: Modelowanie schematu bazy danych za pomocą diagramów związków encji (Entity Relationship Diagrams ERD)

Teoretyczne podstawy informatyki

Wprowadzenie do baz danych

BAZY DANYCH Podstawowe pojęcia

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

Dr Michał Tanaś(

Modelowanie związków encji

PODSTAWOWE POJĘCIA BAZ DANYCH

Baza danych. Modele danych

Transkrypt:

2. Model związk zków w encji (Entity Relationship Model) Modelowanie świata Poj Diagramy zwi Przykłady Pojęcie encji i klucza encji Diagramy związk zków w encji (ERD) A B C Materiały pomocnicze do wykładu z baz danych na Wydziale ETI PG. Ich lektura nie zastępuje obecności na wykładzie. Wykorzystanie materiałów w innym celu oraz ich rozpowszechnianie jest zabronione. E #1 K.Goczyła, M. Piechówka

Świat rzeczywisty a baza danych diagram związków encji Model świata rzeczywistego założenia, uproszczenia, ograniczenia model relacyjny Model danych schemat relacyjnej bazy danych Definicja danych (DDL) Baza danych zapytania (DML) #2 K.Goczyła, M. Piechówka

Encja Encja Pojęcie bazowe (niedefiniowalne). Podstawową cechą encji jest to, że jest rozróżnialna od innych encji. Przykłady osoba, samochód, tablica, książka,... wypadek samochodowy, lot samolotu, egzamin,... uczucie, wyobrażenie,...... (rzeczy) (zdarzenia) (pojęcia) Każda encja jest inna. W celu uproszczenia analizy świata rzeczywistego, grupujemy (klasyfikujemy) podobne do siebie encje w zbiory encji (stosujemy zasadę abstrakcji). #3 K.Goczyła, M. Piechówka

Zbiór r encji Zbiór encji Grupa podobnych do siebie (wg określonych kryteriów) encji. Atr1 Atr2... Atrn NAZWA NAZWA Przykłady zbiór wszystkich osób; zbiór wszystkich kobiet zamieszkałych w Gdańsku; zbiór wszystkich wypadków samochodowych na skrzyżowaniu X;... Encje w zbiorze encji są rozróżniane przez wartości atrybutów. Własności atrybutów zbioru encji: Liczba atrybutów jest ustalona ( 1) Typy atrybutów są proste (wartości są niepodzielne, czyli atomowe) Nazwy atrybutów są różne (jednoznaczne) #4 K.Goczyła, M. Piechówka

Klucz zbioru encji Atr1 Atr2... Atrn Atr1 Atr2... Atrn NAZWA NAZWA Klucz prosty: Atr1 Klucz złożony: (Atr1, Art2) Własności klucza zbioru encji: Jednoznaczność: Nie istnieją takie 2 encje w zbiorze encji, które mają takie same wartości atrybutów kluczowych. Innymi słowy: wartość klucza jednoznacznie identyfikuje encję. Minimalność (dot. kluczy złożonych): Nie można z klucza usunąć żadnego atrybutu bez naruszenia wymogu jednoznaczności. Innymi słowy: Każda składowa klucza złożonego jest potrzebna. #5 K.Goczyła, M. Piechówka

Klucz główny g i klucze alternatywne ISBN Autor Tytuł Rok ISBN Autor Tytuł Rok Książki Książki Klucz: ISBN Klucz: (Autor, Tytuł) Jeden z kluczy wybieramy jako klucz główny (podstawowy), drugi klucz (lub pozostałe klucze, jeśli jest ich więcej) są kluczami alternatywnymi. Tam, gdzie nie rodzi to niejednoznaczności: pojęcia "klucz" i "klucz główny" będziemy utożsamiać. #6 K.Goczyła, M. Piechówka

Źle zbudowane encje Książki ISBN Autor Tytuł Rok wyd. Narod. autora Książki Autor Tytuł ISBN Rok wyd. Narod. autora Atrybut Narod. autora zależy od atrybutu, który nie jest kluczem. Atrybut Narod. autora zależy od atrybutu, który jest częścią klucza. #7 K.Goczyła, M. Piechówka

Źle zbudowane encje Kursanci Ident Nazwisko Miasto Liczba mieszk. Kurs Ocena identyfikator kursanta jego nazwisko miasto, skąd pochodzi liczba mieszkańców tego miasta nazwa kursu ocena kursanta z kursu Czy te encje są dobrze zbudowane? Jeśli nie, to popraw model danych. #8 K.Goczyła, M. Piechówka

Związki pomiędzy encjami Definicja Związek REL pomiędzy zbiorami encji E1, E2,..., En jest to zbiór krotek n-elementowych (e1, e2,..., en) takich, że e1 E1, e2 E2,..., en En. Oznaczenie: Uwaga: Przykłady: NAZWA (E1, E2,..., En) Zbiory encji Ei nie muszą być różne! 1. Związek TEACH (TEACHERS, STUDENTS) zawiera wszystkie pary (t, s) takie że nauczyciel t uczy studenta s. 2. Związek MOTHER (PERSONS, PERSONS) zawiera wszystkie pary (p1, p2) takie że osoba p1 jest matką osoby p2. mieszka w posiada... ukończył... nadaje przewozi zna... 3. Związek TEACHING (TEACHERS, STUDENTS, SUBJECTS) zawiera wszystkie trójki (t, s, b) takie, że nauczyciel t uczy studenta s przedmiotu b. TEACH i MOTHER to związki binarne (n = 2). TEACHING jest związkiem potrójnym (n = 3). stopień związku #9 K.Goczyła, M. Piechówka

Związki pomiędzy encjami Notacja graficzna Liczność związku E1 nazwa E2 1:1 (jeden do jeden) E1 nazwa E2 1:n (jeden do wiele; n 1) E1 nazwa E2 n:m (wiele do wiele; n,m 1) Można też wskazać opcjonalność związku, np.: nazwa E1 E2 1:0..1 nazwa E1 E2 1:0..n #10 K.Goczyła, M. Piechówka

Związki pomiędzy encjami (cd.) Inna notacja: E1 nazwa E2 nazwa E1 nazwa E2 E E1 nazwa E2 Uwaga: Zbiory encji pozostające w danym związku nie muszą być różne! Zapis słowny związków pomiędzy encjami: Nazwa (E1, E2) #11 K.Goczyła, M. Piechówka

Związki pomiędzy encjami (cd.) Związek może mieć atrybuty: Data Mężczyźni małżeństwa Kobiety Taki związek warto uczynić zbiorem encji: Pesel Pes-M Data Pesel Mężczyźni Małżeństwa Kobiety Kluczem głównym zbioru encji Małżeństwa mógłby być równie dobrze nr pesel kobiety Pes-K. #12 K.Goczyła, M. Piechówka

Związki pomiędzy encjami (cd.) Jeśli interesują nas wszystkie małżeństwa, a nie tylko aktualne: Data Mężczyźni małżeństwa Kobiety Klucz zbioru encji Małżeństwa staje się kluczem złożonym: Pesel Pes-M Pes-K Data Pesel Mężczyźni Małżeństwa Kobiety #13 K.Goczyła, M. Piechówka

Związki pomiędzy encjami (cd cd.) Egzemplarze (instancje) zbioru związku WORKS_FOR, który reprezentuje związek pomiędzy zbiorami encji EMPLOYEE i DEPARTMENT. Egzemplarze (instancje) zbioru związku WORKS_ON, który reprezentuje związek pomiędzy zbiorami encji EMPLOYEE i PROJECT. 1:N N:M #14 K.Goczyła, M. Piechówka

Związki stopni wyższych Problem: Klienci zamawiają w hurtowniach towary. Dowolny towar może być zamówiony w dowolnej hurtowni przez dowolnego klienta. Próba: Klienci K-T Towary K-H Hurtownie H-T Klienci = { (Nowak), (Kowalski) } Towary = { (książki), (komputery) } Hurtownie = { (Mała), (Nowa) } K-T = { (Nowak, książki), (Kowalski, książki), (Nowak, komputery), (Kowalski, komputery) } K-H = { (Nowak, Mała), (Kowalski, Mała), (Nowak, Nowa), (Kowalski, Nowa) } Ale: W której hurtowni Nowak zamawiał książki??? W której hurtowni Kowalski zamawiał komputery???... H-T = { (Mała, książki), (Nowa, książki), (Mała, komputery), (Nowa, komputery) } #15 K.Goczyła, M. Piechówka

Związki stopni wyższych (cd.) Rozwiązanie: Klienci zamawia Hurtownie Towary zamawia (Klienci, Hurtownie, Towary) jest związkiem potrójnym (stopnia 3). Przykładowe wystąpienie tego związku: zamawia = { (Nowak, Mała, książki), (Nowak, Nowa, książki), (Nowak, Nowa, komputery), (Kowalski, Mała, komputery), (Kowalski, Mała, książki) } Pytanie: Gdzie zamieścić takie ważne atrybuty jak: data zamówienia, zamawiana ilość? #16 K.Goczyła, M. Piechówka

Związki stopni wyższych (cd.) Związek stopnia 3: E1 nazwa E2 nazwa (E1, E2, E3) E3 Liczności mogą być różne dla różnych zbiorów encji. Uwaga: Stopień związku nazywamy też krotnością związku #17 K.Goczyła, M. Piechówka

Związki stopni wyższych (cd cd.) Egzemplarze zbioru związku SUPPLY, który reprezentuje związek pomiędzy zbiorami encji SUPPLIER, PART i PROJECT #18 K.Goczyła, M. Piechówka

Związki stopni wyższych a związki zki binarne Każdy związek stopnia n > 2 można zamienić na n związków binarnych. Klucz3 Klucz1 Klucz2 Klucz1 Klucz1 Klucz2 Klucz2 E1 nazwa E2 E1 EX E2 Klucz3 Klucz3 E3 E3 Zbiór encji EX reprezentuje związek nazwa. Kluczem zbioru encji EX jest złożenie kluczy encji pozostających w związku nazwa. #19 K.Goczyła, M. Piechówka

Związki stopni wyższych a związki zki binarne (cd.) Przykład: Klienci, Hurtownie, Towary: NIP NIP-kl SWW-t Nazwa-h Nazwa Klienci Zamówienia Hurtownie Ilość Data SWW Towary Atrybut NIP-kl jest kluczem obcym w zbiorze encji Zamówienia: jego wartości są równe wartościom klucza głównego zbioru encji Klienci. Podobnie atrybuty: SWW-t i Nazwa-h. W naszym przykładzie klucze obce wchodzą w skład klucza głównego. #20 K.Goczyła, M. Piechówka

Diagramy związk zków w encji (cd.) Jeśli klucz encji reprezentującej związek staje się długi (wieloczłonowy), warto rozważyć zastąpienie go kluczem prostym typu identyfikator. W naszym przykładzie byłby to numer zamówienia (np. Nr-zam). NIP Nr-zam Nazwa Klienci Zamówienia Hurtownie Ilość Data SWW Towary Nie ma już potrzeby umieszczania na diagramie ERD w zbiorze encji Zamówienia kluczy obcych. Związki pomiędzy zbiorami encji są reprezentowane symbolami graficznymi (strzałkami). Sposób implementacji tych związków nie musi być przedstawiony na modelu. #21 K.Goczyła, M. Piechówka

Diagramy związk zków w encji (cd.) A jeśli na jednym zamówieniu zamawiamy wiele towarów? NIP Nr-zam Data Nazwa Klienci Zamówienia Hurtownie SWW Towary Ale gdzie umieścić atrybut Ilość? #22 K.Goczyła, M. Piechówka

Diagramy związk zków w encji (cd.) Wprowadźmy zbiór encji reprezentujący pozycje na zamówieniach: PozZam NIP Nr-zam Data Nazwa Klienci Zamówienia Hurtownie Nr-zam Ilość Lp PozZam SWW Towary #23 K.Goczyła, M. Piechówka

Diagramy związk zków w encji (cd.) Zbiory encji pozostające w związku nie muszą być różne: Nr-ewid ma_podwładnych Nazwisko Pracownicy Przykład: ma_podwładnych (Pracownicy, Pracownicy) podwładni przełożeni { (01001, Nowak), (02001, Kowalski), (01001, Nowak), (02002, Zieliński), (02002, Zieliński), (02012, Twardy), (02012, Twardy), (03002, Jasny), (03002, Jasny), (03022, Nickowski), (03002, Jasny), (03023, Nowak) } (01001, Nowak), (02001, Kowalski) (02002, Zieliński) (02012, Twardy) (03002, Jasny) (03022, Nickowski) (03023, Nowak) #24 K.Goczyła, M. Piechówka

Diagramy związk zków w encji (cd.) Pomiędzy tymi samymi zbiorami encji może zachodzić kilka różnych związków: Nazwisko Pesel Numer Nazwa Osoby prowadzi uczestniczy Kursy prowadzi "Bazy Danych" prowadzi (Osoby, Kursy) uczestniczy (Osoby, Kursy) uczestniczy w "Zarządzaniu Jakością" #25 K.Goczyła, M. Piechówka

Związek IS_A IS_A (E1, E2) oznacza, że każda encja ze zbioru E1 jest także encją ze zbioru E2. Innymi słowy, zbiór encji E1 jest podzbiorem zbioru encji E2. Związek IS_A jest związkiem wbudowanym w model związków encji (ERM), typu 0..1:1. E 2 E 1 Notacja: Każda encja e E 1 ma wszystkie atrybuty encji ze zbioru E 2 i atrybuty dodatkowe, nie istniejące w zbiorze E 2. E1 IS_A E2 IS_A(E 1, E 2 ) #26 K.Goczyła, M. Piechówka

Związek IS_A - przykład Nr-rej Marka Rok-prod Samochody Ile-osób IS_A IS_A Nacisk Poj-bagaż Osobowe Ciężarowe Ładown Każda encja ze zbiorów Osobowe i Ciężarowe ma wszystkie atrybuty encji ze zbioru Samochody (także klucz Nr-rej), a ponadto ma atrybuty dodatkowe, specyficzne dla wszystkich encji z jej zbioru. Mówimy tu o dziedziczeniu atrybutów pomiędzy zbiorami encji. #27 K.Goczyła, M. Piechówka

Jak tworzyć diagramy ERD? 1. Zidentyfikuj encje i zbiory encji. 2. Zdefiniuj stosowne atrybuty i klucze encji. 3. Zidentyfikuj wszystkie związki typu IS_A. Wprowadź niezbędne podzbiory encji i zdefiniuj dodatkowe atrybuty. 4. Zidentyfikuj związki pomiędzy zbiorami encji. Dla każdego związku sprecyzuj jego liczność i stopień. 5. Zredukuj wszystkie związki stopni n > 2 do związków binarnych. Wprowadź zbiory encji reprezentujące te związki, określ ich klucze i ew. inne atrybuty. 6. Zweryfikuj powstały model: Czy adekwatnie (tj. z wystarczającą dokładnością) reprezentuje on świat rzeczywisty? Jeśli nie, cofnij się do któregoś z poprzednich punktów. PAMIĘTAJ! Najwięcej kosztują niepoprawione błędy popełnione na etapie analizy. Im dalej w realizacji systemu, tym trudniej wprowadzać zmiany. #28 K.Goczyła, M. Piechówka

3. Relacje, relacyjna baza danych Pojęcie relacji Relacyjna baza danych Od diagramu ERD do schematu bazy danych #29 K.Goczyła, M. Piechówka

Relacja Definicja Relacja (bazodanowa) jest to dowolny podzbiór produktu kartezjańskiego skończonej liczby dziedzin prostych. Dziedzina jest prosta, jeśli jej elementy są nierozkładalne (atomowe). Niech D 1, D 2,..., D n są to dziedziny proste, 0<n<. D 1 x D 2 x...x D n - produkt kartezjański tych dziedzin prostych: zbiór wszystkich krotek (d 1, d 2,..., d n ) takich że d 1 D 1, d 2 D 2,..., d n D n. Liczba n to stopień relacji. Relacja jest więc zbiorem n-elementowych krotek (d 1, d 2,..., d n ), d i D i, i = 1..n, gdzie D i są dziedzinami prostymi. Poszczególne pozycje krotek relacji nazywamy atrybutami relacji. Wymóg atomowości elementów dziedzin atrybutów relacji formułujemy też następująco: Relacja jest zawsze w pierwszej postaci normalnej (1NF) #30 K.Goczyła, M. Piechówka

Relacje - przykłady Niech: n = 4 D 1 - zbiór liczb naturalnych D 2 -zbiór łańcuchów znakowych rozpoczynających się od "T" D 3 - zbiór dat z wieku XX D 4 - zbiór liter alfabetu łacińskiego Przykłady relacji: 1. { (1, "T01", 12/01/1987, A), (43, "Tak", 01/01/1901, m), (6, "TTTFRTHH", 31/12/1998, X), (143, "T", 3/3/1933, A) } 2. { (1000, "T1t", 2/11/1987, B) } 3. { } #31 K.Goczyła, M. Piechówka

Reprezentacja relacji Relację reprezentujemy w postaci tabeli, w której każdy wiersz odpowiada jednej krotce, a każda kolumna odpowiada jednemu atrybutowi. Nazwa kolumny jest nazwą atrybutu. Nazwy atrybutów nie mogą się powtarzać. Przykład tablicy reprezentującej pewną relację o 3 atrybutach: NIP Nazwisko Status 123-123-34-56 Kowalski 10 345-321-55-66 Nowak 20 123-333-21-13 Kwiatkowski 30 345-111-12-12 Nowak 90 Pamiętaj! Tablica jest tylko wygodną reprezentacją relacji, a nie relacją (np. w tablicy wiersze są uporządkowane, w relacji krotki nie są uporządkowane). #32 K.Goczyła, M. Piechówka

Własności relacji - podsumowanie 1. W relacji nie ma dwóch identycznych krotek, - ponieważ relacja jest matematycznym zbiorem. 2. Krotki nie są uporządkowane - ponieważ relacja jest matematycznym zbiorem. 3. Wartości atrybutów są atomowe (są pojedynczymi wartościami) Na każdej pozycji każdej krotki (w jednej komórce tabeli reprezentującej relację) istnieje tylko jedna, elementarna, niepodzielna wartość. Innymi słowy, relacja bazodanowa jest zawsze w pierwszej postaci normalnej (1NF). Relacja matematyczna nie musi być 1NF- dziedziny mogą być złożone. #33 K.Goczyła, M. Piechówka

Schemat relacji Schemat relacji Nazwa relacji i nazwy jej atrybutów (opcjonalnie: z podanymi dziedzinami) Przykłady schematów relacji: 1. NicNieZnaczy (Numer, Łańcuch, Data, Litera) 2. Klienci (NIP, Nazwisko, Imię, Adres, Status), NIP {zbiór legalnych numerów NIP}, Nazwisko, Imię, Adres {zbiór łańcuchów znaków} Status {zbiór liczb naturalnych} 3. Książki (ISBN, Autor, Tytuł, Rok), ISBN {zbiór numerów ISBN}, Autor, Tytuł {zbiór łańcuchów znaków}, Rok {zbiór lat} #34 K.Goczyła, M. Piechówka

Schemat relacji (SQL) 1. NicNieZnaczy (Numer, Łańcuch, Data, Litera) create table NicNieZnaczy (numer integer, lancuch varchar(128), data date, litera char(1)) 2. Klienci (NIP, Nazwisko, Imię, Adres, Status), NIP {zbiór legalnych numerów NIP}, Nazwisko, Imię, Adres {zbiór łańcuchów znaków} Status {zbiór liczb naturalnych} create table Klienci (nip char(10), nazwisko varchar(64), imie varchar(32), adres varchar(128), status smallint) 3. Książki (ISBN, Autor, Tytuł, Rok), ISBN {zbiór numerów ISBN}, Autor, Tytuł {zbiór łańcuchów}, Rok {zbiór lat} create table Ksiazki (isbn char(24), autor varchar(64), tytul varchar(128), rok integer) #35 K.Goczyła, M. Piechówka

Klucze relacji Niech R jest relacją o atrybutach A 1,A 2,...A n. Rozważmy zbiór atrybutów K = (A i, A j,..., A k ) Warunek jednoznaczności: W żadnym momencie nie istnieją w relacji R dwie krotki, które mają te same wartości atrybutu A i, te same wartości atrybutu A j,..., te same wartości atrybutu A k. Warunek minimalności: Ze zbioru atrybutów A i, A j,..., A k nie można usunąć żadnego atrybutu bez naruszenia warunku jednoznaczności. Klucz relacji (klucz kandydujący) Atrybut (lub zbiór atrybutów) relacji spełniający warunki: jednoznaczności i minimalności. Klucz prosty - ma tylko jeden atrybut Klucz złożony -składa się z wielu atrybutów #36 K.Goczyła, M. Piechówka

Klucze relacji (cd.) Klucz główny (inaczej: klucz podstawowy) relacji jest arbitralnie wybranym kluczem kandydującym relacji. Pozostałe klucze - jeśli istnieją -są kluczami alternatywnymi. Uwaga: Ponieważ relacja jest zbiorem, zawsze ma przynajmniej jeden klucz (w zbiorze nie ma powtarzających się elementów, zatem nie ma dwóch identycznych krotek i na pewno istnieje pewna kombinacja atrybutów, która spełnia warunek jednoznaczności i minimalności; w skrajnym przypadku jest to kombinacja wszystkich atrybutów relacji). Wniosek: Każda relacja ma klucz główny. #37 K.Goczyła, M. Piechówka

Klucze relacji - notacja Klucze główne: Książki (ISBN, Autor, Tytuł, Rok) Klienci (NIP, Nazwisko, Adres, Status) Książki (ISBN, Autor, Tytuł, Rok) klucz główny prosty klucz główny złożony create table Ksiazki create table Klienci create table Ksiazki (isbn char(24), (nip char(10), (isbn char(24), autor varchar(64), nazwisko varchar(64), autor varchar(64), tytul varchar(128), imie varchar(32), tytul varchar(128), rok integer, PRIMARY KEY (isbn)) adres varchar(128), status smallint, PRIMARY KEY (nip)) rok integer, PRIMARY KEY (autor,tytul)) #38 K.Goczyła, M. Piechówka

Klucze relacji notacja (cd cd.) Klucze obce: Książki (ISBN, Autor, Tytuł, Rok, Id-wyd REF Wydawnictwa) Wydawnictwa (Ident, Nazwa, Miasto) klucz obcy odpowiadający mu klucz główny create table Wydawnictwa (ident char(24), nazwa varchar(64), miasto varchar(32), PRIMARY KEY (ident)) create table Ksiazki (isbn char(24), autor varchar(64), tytul varchar(128), rok integer, id_wyd char(24), PRIMARY KEY (isbn), FOREIGN KEY (id_wyd) REFERENCES Wydawnictwa) #39 K.Goczyła, M. Piechówka

Klucze relacji notacja (cd cd.) Klucz obcy odpowiadający kluczowi głównemu tej samej relacji: Pracownicy (Nr-ewid, Nazwisko, Stanowisko, Szef REF Pracownicy) TEN klucz obcy odpowiada TEMU kluczowi głównemu create table Pracownicy (nr_ewid char(8), nazwisko varchar(64), stanowisko char(24), szef char(8), PRIMARY KEY (nr_ewid), FOREIGN KEY (szef) REFERENCES Pracownicy) #40 K.Goczyła, M. Piechówka

Klucze relacji - notacja (cd Klucz obcy wchodzący w skład klucza głównego: cd.) Zamówienia (Nr-zam, Data, Klient) Poz-Zam (Nr-zam REF Zamówienia, Lp, Towar, Ilość) ten klucz obcy wchodzi w skład klucza głównego create table Zamowienia (nr_zam char(16), data date, klient char(10), PRIMARY KEY (nr_zam)) create table Poz_Zam (nr_zam char(16), lp smallint, towar varchar(128), ilosc real, PRIMARY KEY (nr_zam,lp), FOREIGN KEY (nr_zam) REFERENCES Zamowienia) #41 K.Goczyła, M. Piechówka

Klucze relacji - notacja (cd.) Złożony klucz obcy: ten klucz obcy składa się z dwóch atrybutów Zamówienia (Nr-zam, Data, Klient,...) Nr-zam KEY Poz-Zam (Nr-zam, Lp, Towar, Ilość,...) (Nr-zam, Lp) KEY Nr-zam REF Zamówienia Opis-Poz-Zam (Nr, Nr-zam, Lp, Tekst) (Nr, Nr-zam, Lp) KEY (Nr-zam, Lp) REF Poz-zam Uwaga: Klucz obcy nie musi mieć takiej samej nazwy jak klucz główny relacji przezeń wskazywanej, jednak w miarę możliwości należy stosować tę konwencję, gdyż polepsza czytelność schematu bazy danych. #42 K.Goczyła, M. Piechówka

Klucze relacji - warunki Integralność encji Żaden atrybut wchodzący w skład klucza głównego relacji nie może przyjmować wartości pustych (NULL). Uzasadnienie Klucz główny identyfikuje encje, a ta zawsze jest identyfikowalna (odróżnialna od innych encji)! Integralność referencyjna Jeśli relacja R2 zawiera klucz obcy FK odpowiadający kluczowi głównemu PK pewnej relacji R1 (niekoniecznie różnej od R2), wówczas każda wartość FK: (i) albo jest równa wartości PK w pewnej krotce R1, (ii) albo musi być cała równa NULL. Uzasadnienie Jeśli jakaś krotka t2 z relacji R2 wskazuje na krotkę t1 z relacji R1, to t1 musi istnieć! #43 K.Goczyła, M. Piechówka

Relacje a zbiory encji I. Reprezentacja zbiorów encji Każdy zbiór encji reprezentujemy jako oddzielną relację o kluczu głównym równym kluczowi głównemu zbioru encji. II. Reprezentacja związków pomiędzy zbiorami encji Związki jeden do jeden Reprezentujemy przez klucz obcy wstawiony do dowolnej z dwóch relacji. Związki jeden do wiele Reprezentujemy przez klucz obcy wstawiony do relacji po stronie n związku. Związki wiele do wiele Reprezentujemy przez oddzielną relację o kluczu będącym złożeniem kluczy głównych związanych zbiorów encji. Uwaga Reprezentację związku przez oddzielną relację można stosować też w wypadku związków jeden do jeden i jeden do wiele. Zalety: większa elastyczność (np. odporność na zmianę typu związku), symetria. Wady: jedna relacja więcej. #44 K.Goczyła, M. Piechówka

Relacje a zbiory encji - przykłady Nazwisko Pesel Pes-M Data Pesel Nazwisko Mężczyźni Małżeństwa Kobiety Schemat relacyjnej bazy danych Mężczyźni (Pesel, Nazwisko,...) Kobiety (Pesel, Nazwisko,...) Małżeństwa (Pes-M REF Mężczyźni, Pes-K REF Kobiety, Data) Pytanie: Co się zmieni, gdy będziemy chcieli uwzględniać wszystkie małżeństwa dawne i obecne)? #45 K.Goczyła, M. Piechówka

Relacje a zbiory encji - przykłady Pesel Pes-M Pes-K Data Pesel Mężczyźni Małżeństwa Kobiety Schemat relacyjnej bazy danych: Mężczyźni (Pesel, Nazwisko,...) Kobiety (Pesel, Nazwisko,...) Małżeństwa (Pes-M REF Mężczyźni, Pes-K REF Kobiety, Data) Zmieniła się tylko definicja klucza głównego relacji Małżeństwa, gdyż związki jeden do jeden zostały zamienione na związki jeden do wiele, a klucze obce są po stronie wiele. Uwaga: Nie jest potrzebna dodatkowa reprezentacja związków (Mężczyźni, Małżeństwa) i (Kobiety, Małżeństwa), gdyż w skład klucza głównego relacji Małżeństwa wchodzą klucze obce odpowiadające kluczom głównym relacji Mężczyźni i relacji Kobiety. #46 K.Goczyła, M. Piechówka

Relacje a zbiory encji - przykłady Nazwisko Pesel Numer Data Osoby os-pasz Paszporty Możliwe schematy relacyjnej bazy danych: 1. Osoby (Pesel, Nazwisko) Paszporty (Numer, Data, Pesel REF Osoby) 2. Osoby (Pesel, Nazwisko, Nr-pasz REF Paszporty) Paszporty (Numer, Data) 3. Osoby (Pesel, Nazwisko) Paszporty (Numer, Data) Os-Pasz (Pesel REF Osoby, Nr-pasz REF Paszporty) #47 K.Goczyła, M. Piechówka

Relacje a zbiory encji - przykłady NIP Nazwisko Status Nr-zam Data Klienci Zamówienia Możliwe schematy relacyjnej bazy danych: 1. Klienci (NIP, Nazwisko, Status) Zamówienia (Nr-zam, Data, Klient REF Klienci) 2. Klienci (NIP, Nazwisko, Status) Zamówienia (Nr-zam, Data) Zam-Klient (Nr-zam REF Zamówienia, Klient REF Klienci) #48 K.Goczyła, M. Piechówka

Relacje a zbiory encji - przykłady Pesel Nazwisko Numer Temat Data Osoby uczestniczy Kursy Schemat relacyjnej bazy danych: Osoby (Pesel, Nazwisko) Kursy (Numer, Temat, Data) Os-Kurs (Osoba REF Osoby, Kurs REF Kursy) Relacja Os-Kurs jest właściwym miejscem do umieszczenia atrybutów dotyczących uczestnictwa danej osoby w danym kursie (np. oceny): Os-Kurs (Osoba REF Osoby, Kurs REF Kursy, Ocena) #49 K.Goczyła, M. Piechówka

Relacje a zbiory encji - przykłady Nr-rej Marka Rok-prod Samochody Ile-osób IS_A IS_A Nacisk Poj-bagaż Osobowe Ciężarowe Ładown Schemat relacyjnej bazy danych: 1. Samochody (Nr-rej, Marka, Rok-prod) Osobowe (Nr-rej REF Samochody, Ile-osób, Poj-bagaż) Ciężarowe (Nr-rej REF Samochody, Nacisk, Ładown) Możliwe są też inne realizacje związku IS_A: 2. Samochody (Nr-rej, Marka, Rok-prod) Osobowe (Nr-rej, Marka, Rok-prod, Ile-osób, Poj-bagaż) Ciężarowe (Nr-rej, Marka, Rok-prod, Nacisk, Ładown) Ta relacja zawiera samochody inne niż osobowe i ciężarowe (jeśli takie istnieją) 3. Samochody (Nr-rej, Typ, Marka, Rok-prod, Ile-osób, Poj-bagaż, Nacisk, Ładown) #50 K.Goczyła, M. Piechówka

Relacje a zbiory encji - przykłady NIP Nr-zam Data Nazwa Nazwisko Adres Status Klienci Zamówienia Hurtownie Lp Ilość Nr-zam PozZam Towary SWW Nazwa Miara Klienci (NIP, Nazwisko, Status) Hurtownie (Nazwa, Adres) Towary (SWW, Nazwa, Miara) Zamówienia (Nr-zam, Data, Klient REF Klienci, Hurt REF Hurtownie) PozZam (Nr-zam REF Zamówienia, Lp, Towar REF Towary, Ilość) #51 K.Goczyła, M. Piechówka

Relacyjna baza danych - przykład Przykładowa zawartość tablic KLIENCI i ZAMÓWIENIA z tej bazy danych: KLIENCI ZAMÓWIENIA NIP Nazwisko Status 123-123-34-56 Kowalski 10 345-321-55-66 Nowak 20 123-333-21-13 Kwiatkowski 30 345-111-12-12 Nowak 90 Nr-zam Data Klient Hurt 001 12.01.1998 123-123-34-56 MAŁA 002 14.03.1998 123-123-34-56 NOWA 003 13.02.1997 123-123-34-56 TYLKO TU 004 01.01.1998 123-333-21-13 MAŁA 005 13.04.1998 345-321-55-66 TYLKO TU 012 24.11.1998 345-321-55-66 U CIOCI 034 12.01.1998 123-333-21-13 U WOJTKA 045 11.11.1998 123-123-34-56 U WOJTKA #52 K.Goczyła, M. Piechówka

Przykład: Modelowanie hierarchii 1. 2. #53 K.Goczyła, M. Piechówka

Przykład: wypożyczalnia yczalnia video Firma wypożycza klientom na określony czas za opłatą kopie filmów zarejestrowanych na dwóch rodzajach nośników: kasetach wideo i kolekcjach płyt DVD. System umożliwia przechowywanie i zarządzanie informacjami o klientach, filmach, kasetach i wypożyczeniach. Informacja o filmie dotyczy m.in.: tytułu filmu, daty produkcji, długości filmu, aktorów grających główne role, ograniczenia wiekowe oraz opłaty pobieranej za wypożyczenie kasety z filmem. Może istnieć wiele kaset z tym samym filmem. Każda kaseta ma numer identyfikacyjny. Klienci mogą również dokonywać uprzedniej rezerwacji kopii filmu na określony dzień. #54 K.Goczyła, M. Piechówka

Przykład: wypożyczalnia yczalnia wideo (2) #55 K.Goczyła, M. Piechówka

Przykład: wypożyczalnia yczalnia wideo (3) Schemat relacyjnej bazy danych KLIENCI (nr_ident, imię, nazwisko, adres, nr_tel, haslo, nr_karty, liczba_spoznien) (nr_ident) KEY FILMY (ident, tytul, reżyser, kategoria, rok_prod, opis) (ident) KEY KOPIE (nr_ewid, lokalizacja, czas_nagrania, rodzaj, ident_filmu, kod_kreskowy) (nr_ewid) KEY (ident_filmu) REF FILMY PLYTY_DVD (nr_ewid_kopii, nr_w_kolekcji, dlugość) (nr_ewid_kopii, nr_w_kolekcji) KEY REZERWACJE (ident, data, nr_ewid_kopii, nr_ident_klienta) (ident) KEY (nr_ewid_kopii) REF KOPIE (nr_ident_klienta) REF KLIENCI WYPOZYCZENIA (ident, data_wypożyczenia, data_zwrotu_oczek, data_zwrotu_fakt, nr_ident_klienta, nr_ewid_kopii) (ident) KEY (nr_ident_klienta) REF KLIENCI (nr_ewid_kopii) REF KOPIE #56 K.Goczyła, M. Piechówka

Przykładowa baza danych School1 Opis problemu: 1. Nauczyciele pewnej szkoły są opisywani atrybutami: identyfikator TNO, nazwisko TNAME, tytuł naukowy TITLE, miasto pochodzenia CITY. 2. Każdy nauczyciel może mieć szefa. 3. Studenci szkoły są opisywani atrybutami: identyfikator SNO, nazwisko SNAME, rok rozpoczęcia nauki SYEAR, miasto pochodzenia CITY. 4. W semestrze każdy nauczyciel ma zajęcia z wieloma studentami przez HOURS godzin (dla każdego studenta liczba godzin może być inna). 5. Każdy student ma zajęcia z wieloma nauczycielami. #57 K.Goczyła, M. Piechówka

Przykładowa baza danych School1 Diagram ERD: SNO SNAME TNO TNAME TITLE STUDENTS teaching TEACHERS CITY SYEAR CITY HOURS supervised Schemat relacyjnej bazy danych: TEACHERS (TNO, TNAME, TITLE, CITY, SUPNO REF TEACHERS) STUDENTS (SNO, SNAME, SYEAR, CITY) TS (TNO REF TEACHERS, SNO REF STUDENTS, HOURS) #58 K.Goczyła, M. Piechówka

Zawartość bazy danych School1 TEACHERS TNO TNAME TITLE CITY SUPNO T1 Blake Prof. London NULL T2 Smith PhD Glasgow T1 T3 Jones Prof. London T1 T4 Clark PhD Liverpool T3 T5 Adams MSc Bristol T4 STUDENTS SNO SNAME SYEAR CITY S1 Henry 1975 London S2 Jones 1980 Davos S3 Johnson 1983 Dublin S4 Higgins 1984 London S5 Ford 1990 Bristol S6 Hopkins 1990 Adelaide TS TNO SNO HOURS T1 S1 64 T1 S2 64 T2 S2 100 T2 S3 120 T2 S4 120 T3 S1 32 T3 S2 36 T3 S3 60 T3 S5 72 T4 S1 96 T4 S3 96 T4 S5 96 T5 S6 32 #59 K.Goczyła, M. Piechówka

4. Algebra relacji Operatory relacyjne operatory zbiorowe specjalne operatory relacyjne Wyrażenia algebry relacji PROJECT (SELECT FROM (A TIMES B)... #60 K.Goczyła, M. Piechówka

Algebra relacji Algebra relacji Zestaw operatorów, które mogą być stosowane w stosunku do relacji. OPERATORY ALGEBRY RELACJI Operatory zbiorowe Specjalne operatory relacyjne * suma (unia) * selekcja (wybór) * różnica * projekcja (rzutowanie) iloczyn (przecięcie) złączenie * produkt kartezjański Uwaga: Operatory oznaczone * są prymitywne, tzn. żaden z nich nie może być wyrażony jako kombinacja pozostałych. Wynikiem każdego operatora algebry relacji jest relacja. Zatem algebra relacji jest domknięta. Umożliwia to budowę dowolnie zagnieżdżonych wyrażeń relacyjnych. Można np. wykonać projekcję sumy, selekcję złączenia, złączenie wyników kilku selekcji itd. #61 K.Goczyła, M. Piechówka

Operatory zbiorowe: suma relacji Definicja Dwie relacje są zgodne (kompatybilne), jeśli: mają ten sam stopień n, i-te atrybuty każdej z nich (i=1,... n) mają tę samą dziedzinę. R UNION S (gdzie R i S są zgodne): zbiór wszystkich krotek, które należą do R lub do S. R S R UNION S Przykład: R - zbiór nauczycieli, którzy uczą studenta S5 S - zbiór nauczycieli, którzy uczą studenta S6 R UNION S - zbiór nauczycieli, którzy uczą studenta S5 lub studenta S6 #62 K.Goczyła, M. Piechówka

Operatory zbiorowe: różnica r relacji R MINUS S (gdzie R i S są zgodne): zbiór wszystkich krotek, które należą do R i nie należą do S. R S R MINUS S Przykład: R - zbiór nauczycieli, którzy uczą studenta S5 S - zbiór nauczycieli, którzy uczą studenta S6 R MINUS S - zbiór nauczycieli, którzy uczą studenta S5, ale nie uczą studenta S6 #63 K.Goczyła, M. Piechówka

Operatory zbiorowe: iloczyn relacji R INTERSECT S (gdzie R i S są zgodne): zbiór wszystkich krotek, które należą do R i jednocześnie należą do S. R S R INTERSECT S Przykład: R - zbiór nauczycieli, którzy uczą studenta S5 S - zbiór nauczycieli, którzy uczą studenta S6 R INTERSECT S - zbiór nauczycieli, którzy uczą studenta S5 i uczą studenta S6 Uwaga: INTERSECT nie jest operatorem prymitywnym, gdyż: R INTERSECT S = R MINUS (R MINUS S) = S MINUS (S MINUS R) #64 K.Goczyła, M. Piechówka

Operatory zbiorowe: produkt kartezjański relacji R TIMES S: zbiór wszystkich krotek t takich, że t jest konkatenacją krotki r R i krotki s S. Stopień relacji będącej wynikiem operacji R TIMES S jest sumą stopni relacji R i relacji S. produkt a b c d e f R x y S a b x a b y c d x c d y e f x e f y R TIMES S Przykład: R - zbiór wszystkich identyfikatorów nauczycieli S - zbiór wszystkich identyfikatorów studentów R TIMES S - zbiór wszystkich par (ident-nauczyciela, ident-studenta): {(T1,S1), (T1,S2),..., (T1,S6), (T2,S1),..., (T2,S6),..., (T5,S1),...(T5,S6)} #65 K.Goczyła, M. Piechówka

Operatory zbiorowe: produkt kartezjański relacji (cd.) Produkt kartezjański może powodować niejednoznaczności w nazwach atrybutów. Na przykład wynik operacji: TEACHERS TIMES STUDENTS ma 2 atrybuty o nazwie CITY. W takich wypadkach atrybuty kwalifikujemy nazwą relacji, z której pochodzą: TEACHERS.CITY, STUDENTS.CITY. Zatem schemat relacji TEACHERS TIMES STUDENTS ma postać: (TNO, TNAME, TITLE, TEACHERS.CITY, SUPNO, SNO, SNAME, SYEAR, STUDENTS.CITY) Dla polepszenia czytelności schematu relacji nazwy atrybutów można kwalifikować nawet wtedy, gdy nie ma niejednoznaczności, np.: (TEACHERS.TNO, TEACHERS.TNAME,...) #66 K.Goczyła, M. Piechówka

Specjalne operatory relacyjne: projekcja Jak wybrać tylko określone atrybuty relacji? Do takich celów służy operacja projekcji (PROJECT): C A1 A2 A3 B1 B2 11 21 3 1 11 11 21 3 2 11 12 22 3 3 12 PROJECT C OVER A1, A2, B1 D A1 A2 B1 11 21 1 11 21 2 12 22 3 #67 K.Goczyła, M. Piechówka

Specjalne operatory relacyjne: projekcja Niech A 1, A 2,..., A k są atrybutami relacji R. PROJECT R OVER A 1, A 2,..., A k : zbiór wszystkich krotek (a 1, a 2,..., a k ) takich, że w R istnieje krotka t, która jako wartość A 1 ma a 1, jako wartość A 2 ma a 2,..., jako wartość A k ma a k. R A B C D E "pionowy" podzbiór relacji R PROJECT R OVER B, D Uwaga: Z definicji relacji wynika, że z wyniku projekcji usuwane są ew. duplikaty. Przykład: PROJECT TEACHERS OVER CITY #68 K.Goczyła, M. Piechówka CITY London Glasgow Liverpool Bristol

Specjalne operatory relacyjne: selekcja Jak wybrać tylko określone krotki relacji? Do takich celów służy operacja selekcji (SELECT): C A1 A2 A3 B1 B2 11 21 3 1 11 11 21 3 2 11 12 22 3 3 12 SELECT FROM C WHERE A1 < 12 E A1 A2 A3 B1 B2 11 21 3 1 11 11 21 3 2 11 #69 K.Goczyła, M. Piechówka

Specjalne operatory relacyjne: selekcja SELECT FROM R WHERE warunek: zbiór wszystkich krotek t z relacji R takich, że dla wszystkich t warunek ma wartość TRUE R "poziomy" podzbiór relacji R SELECT FROM R WHERE... Przykład: SELECT FROM STUDENTS WHERE SYEAR > 1983 SNO SNAME SYEAR CITY S4 Higgins 1984 London S5 Ford 1990 Bristol S6 Hopkins 1990 Adelaide #70 K.Goczyła, M. Piechówka

Specjalne operatory relacyjne: złączenie Jak powiązać ze sobą dane z dwóch relacji? Na przykład, jak uzupełnić dane o zamówieniach nazwiskami klientów? Do takich celów służy operacja złączenia (JOIN): A A1 C A2 A3 11 21 3 12 22 3 A JOIN B WHERE A1 = B2 B B1 B2 1 11 2 11 13 23 4 3 12 14 24 4 C A1 A2 A3 B1 B2 11 21 3 1 11 11 21 3 2 11 12 22 3 3 12 #71 K.Goczyła, M. Piechówka

R JOIN S WHERE warunek: Specjalne operatory relacyjne: złączenie zbiór wszystkich krotek t takich, że t jest konkatenacją krotki r z relacji R i krotki s z relacji S i dla każdej krotki t warunek ma wartość TRUE. R JOIN S WHERE warunek SELECT FROM (R TIMES S) WHERE warunek Przykład 1: TEACHERS JOIN STUDENTS WHERE TEACHERS.CITY = STUDENTS.CITY AND SYEAR > 1983 TNO TNAME TITLE TEACHERS. CITY SUPNO SNO SNAME SYEAR STUDENTS. CITY T1 Blake Prof. London NULL S4 Higgins 1984 London T4 Clark PhD London T1 S4 Higgins 1984 London T5 Adams MSc Bristol T4 S5 Fords 1990 Bristol #72 K.Goczyła, M. Piechówka

Specjalne operatory relacyjne: złączenie (cd.) Złączenie można stosować do kilku tablic: R JOIN S JOIN T JOIN... WHERE warunek SELECT FROM (R TIMES S TIMES T TIMES...) WHERE warunek Złączenia są zwykle składane z projekcją, w przeciwnym razie wynik może mieć bardzo dużą liczbę kolumn. Przykład 2: PROJECT (TEACHERS JOIN STUDENTS WHERE TEACHERS.CITY = STUDENTS.CITY AND SYEAR > 1983) OVER TNO, TNAME, TITLE, TEACHERS.CITY, SUPNO, SNO, SNAME, SYEAR TNO TNAME TITLE TEACHERS. SUPNO SNO SNAME SYEAR CITY T1 Blake Prof. London NULL S4 Higgins 1984 T4 Clark PhD London T1 S4 Higgins 1984 T5 Adams MSc Bristol T4 S5 Fords 1990 #73 K.Goczyła, M. Piechówka

Przykład 3: Specjalne operatory relacyjne: złączenie (cd.) PROJECT (TS JOIN STUDENTS WHERE TS.SNO = STUDENTS.SNO AND TS.TNO = "T3") OVER TS.SNO, SNAME, HOURS TS.SNO SNAME HOURS S1 Henry 32 S2 Jones 36 S3 Johnson 60 S5 Ford 72 Wynik pokazuje studentów, którzy mieli zajęcia z nauczycielem T3. Atrybuty TS.SNO i STUDENTS.SNO pełnią rolę łączników pomiędzy relacjami TS i STUDENTS (TS.SNO jest kluczem obcym odnoszącym się do relacji STUDENTS). Złączenie wg równości takich atrybutów nazywamy równozłączeniem. Równozłączenie pozwala kompletować powiązane ze sobą informacje z różnych relacji. #74 K.Goczyła, M. Piechówka

Przykład 4: Specjalne operatory relacyjne: złączenie (cd.) SELECT (PROJECT (TS JOIN STUDENTS JOIN TEACHERS WHERE TS.SNO = STUDENTS.SNO AND TS.TNO = TEACHERS.TNO) OVER TS.SNO, SNAME, TS.TNO, TNAME, HOURS) WHERE HOURS > 95 TS.SNO SNAME TS.TNO TNAME HOURS S2 Jones T2 Smith 100 S3 Johnson T2 Smith 120 S4 Higgins T2 Smith 120 S1 Henry T4 Clark 96 S3 Johnson T4 Clark 96 S5 Ford T4 Clark 96 Wynik pokazuje wszystkie pary (student, nauczyciel) takie, że student i nauczyciel spędzili razem na zajęciach ponad 95 godzin. Dodatkowo, pokazano liczbę godzin tych wspólnych zajęć. #75 K.Goczyła, M. Piechówka

Złączenie, projekcja i selekcja - przykład SELECT FROM ( PROJECT (Klienci JOIN Zamówienia WHERE Klienci.NIP = Zamówienia.Klient) OVER NIP, Nazwisko, Nr-zam, Data) WHERE Data >= '01.01.1998'; lub : SELECT NIP, Nazwisko, Nr-zam, Data FROM Klienci, Zamówienia WHERE Klienci.NIP = Zamówienia.Klient AND Data >= '01.01.1998'; SELECT NIP, Nazwisko, Nr-zam, Data FROM Klienci JOIN Zamówienia ON Klienci.NIP = Zamówienia.Klient WHERE Data >= '01.01.1998'; NIP Nazwisko Nr-zam Data 123-123-34-56 Kowalski 001 12.01.1998 123-123-34-56 Kowalski 002 14.03.1998 123-333-21-13 Kowalski 004 01.01.1998 345-321-55-66 Nowak 005 13.04.1998 345-321-55-66 Nowak 012 24.11.1998 123-333-21-13 Kwiatkowski 034 12.01.1998 123-123-34-56 Kowalski 045 11.11.1998 #76 K.Goczyła, M. Piechówka