Bazy danych 6. Przykłady



Podobne dokumenty
Bazy danych 4. Przykłady SQL podstawy

Bazy danych 5. Samozłaczenie SQL podstawy

Bazy danych 3. Normalizacja baz danych

Bazy danych 3. Normalizacja baz danych (c.d.)

Normalizacja. Pojęcie klucza. Cel normalizacji

Cel normalizacji. Tadeusz Pankowski

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

Pojęcie zależności funkcyjnej

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

Posługiwanie się tabelami

Konstruowanie Baz Danych SQL UNION, INTERSECT, EXCEPT

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

Związki pomiędzy tabelami

Zajęcia 1. W następnej tabeli zebrane są dane używane w bibliotece, które są przetwarzane przez bibliotekarza w różnych fazach obsługi czytelnika.

Microsoft Access materiały pomocnicze do ćwiczeń cz. 1

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

Transformacja modelu ER do modelu relacyjnego

WPROWADZENIE DO BAZ DANYCH

BAZA DANYCH. Informatyka. ZESPÓŁ SZKÓŁ ELEKTRYCZNYCH Prowadzący: inż. Marek Genge

Projektowanie Systemów Informacyjnych

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

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

Projektowanie bazy danych przykład

Bazy danych 3. Zależności funkcyjne Normalizacja relacyjnych baz danych

Normalizacja relacyjnych baz danych. Sebastian Ernst

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

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

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

Normalizacja baz danych

Normalizacja baz danych

PTI S1 Tabele. Tabele. Tabele

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

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

Zadanie 1. Suma silni (11 pkt)

Baza danych. Baza danych to:

Relacyjne bazy danych. Normalizacja i problem nadmierności 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 TERMINOLOGIA

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

Bazy danych 10. SQL Widoki

Baza danych. Modele danych

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

Normalizacja relacji

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

Bazy danych 11. Algorytmy złaczeń. P. F. Góra

Bazy danych. Andrzej Łachwa, UJ, /15

1 Wstęp do modelu relacyjnego

PRZEWODNIK PO PRZEDMIOCIE

Bazy danych 2. Algebra relacji Zależności funkcyjne

Pierwsza postać normalna

EGZAMIN MATURALNY Z INFORMATYKI

Technologia informacyjna

Projektowanie i programowanie aplikacji biznesowych. Wykład 2

Bazy Danych egzamin 9 luty, 2012 rozwiazania

Księgarnia PWN: Michael J. Hernandez Bazy danych dla zwykłych śmiertelników

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

Bazy danych w geomatyce Databases in Geomatics

Zależności funkcyjne

Sylabus do programu kształcenia obowiązującego od roku akademickiego 2014/15

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

Autor: Joanna Karwowska

ROZKŁAD JAZDY POMORSKIEJ KOLEI METROPOLITALNEJ. obowiązuje od

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

Technologie baz danych

Wprowadzenie do baz danych

Laboratorium Technologii Informacyjnych. Projektowanie Baz Danych

Transformacja modelu ER do modelu relacyjnego

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

Literatura. Bazy danych s.1-1

Etap 1 Projektowanie tabeli która będzie przechowywać informacje na temat książek.

Wprowadzenie do projektowania i wykorzystania baz danych Relacje

Bazy danych Algebra relacji Wykład dla studentów matematyki

EGZAMIN MATURALNY Z INFORMATYKI

Aktualizacja baz danych systemu qs-stat

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

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

Wykład 2. Relacyjny model danych

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

PRZEWODNIK PO PRZEDMIOCIE

Krzysztof Kadowski. PL-E3579, PL-EA0312,

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

BAZY DANYCH LABORATORIUM. Studia niestacjonarne I stopnia

Wykład 8. SQL praca z tabelami 5

Teoretyczne podstawy informatyki

Tworzenie aplikacji bazodanowych

WPROWADZENIE DO BAZ DANYCH

Podstawy technologii WWW

Bazy danych wykład drugi. Konrad Zdanowski

Autor: Joanna Karwowska

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

Bazy danych - wykład wstępny

Dedukcyjne bazy danych i rekursja

Relacyjne bazy danych a XML

Pierwsza postać normalna

Politechnika Krakowska im. Tadeusza Kościuszki. Karta przedmiotu. obowiązuje studentów rozpoczynających studia w roku akademickim 2013/2014

Bazy danych wykład trzeci. trzeci Przekształcenie modelu ER na model relacyjny 1 / 19

Bazy danych. wprowadzenie teoretyczne. Piotr Prekurat 1

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

Aby uruchomić program klienta i połączyć się z serwerem, należy komendę:

Transkrypt:

Bazy danych 6. Przykłady P. F. Góra http://th-www.if.uj.edu.pl/zfs/gora/ semestr letni 2005/06

Przykład I Przedsiębiorca tworzy bazę danych pracowników na potrzeby wypłacania im wynagrodzeń i przekazywania zaliczek do Urzędu Skarbowego. Zachodza następujace zależności funkcyjne: PracId Stanowisko Stanowisko Stawka PracId StażPracy StażPracy Stawka Wynagrodzenie PracId Gmina Gmina UrzadSkarbowy (1a) (1b) (1c) (1d) (1e) (1f) 6. Przykłady 2

1. Udowodnić, że PracId Wynagrodzenie PracId Stanowisko Stanowisko Stawka = PracId Stawka (2a) PracId Stawka PracId StażPracy = PracId StażPracy Stawka (2b) PracId StażPracy Stawka StażPracy Stawka Wynagrodzenie = PracId Wynagrodzenie (2c) 2. Spróbujmy zaprojektować taka oto tabelę: Pracownik (PracId, StażPracy, Stanowisko, Stawka, Gmina) (3) Tabela (3) nie jest w 3PN, gdyż zawiera relację przechodnia (do atrybutu nie będacego częścia klucza). Ponieważ stawka przyporzadkowana jest stanowisku, nie zaś konkretnemu pracownikowi, wpisywanie stawek jak w (3) prowadzi do redundancji i anomalii modyfikacji. 6. Przykłady 3

3. Następujacy projekt jest w 3PN, a nawet w PNBC Pracownicy (PracId, StażPracy, Stanowisko, Gmina) Stanowiska (Stanowisko, Stawka) Płace ( StażPracy, Stawka, Wynagrodzenie ) Urzędy (Gmina, UrzadSkarbowy) (4a) (4b) (4c) (4d) 4. W opraciu o projekt (4), w języku algebry relacji sformułować zapytanie o wynagrodzenie konkretnego pracownika ρ T1 ( πstanowisko,stażpracy,wynagrodzenie (Stanowiska Płace) π PracId,Wynagrodzenie (T 1 Pracownicy) Sa inne możliwe ścieżki wykonania tego zapytania. ) (5a) (5b) 6. Przykłady 4

Przykład II Kancelaria adwokacka prowadzi bazę czynności adwokackich. Każda czynność wykonana jest przez pracownika na jakimś stanowisku; ze stanowiskiem zwiazana jest stawka. Każda czynność wykonana jest na rzecz pewnego klienta. Cena, jaka płaci klient, zależy od czasu trwania czynności adwokackiej i stawki, jaka pobiera pracownik kancelarii. Zależności funkcyjne: PracId Stanowisko Stanowisko Stawka Czynność Pracownik KlientId Czas Czas Stawka Koszt KlientId NazwaKlienta (6a) (6b) (6c) (6d) (6e) 6. Przykłady 5

Tabele: Czynności ( Czynność, PracId, KlientId, Czas ) Pracownicy (PracId, Stanowisko) Stanowiska (Stanowisko, Stawka) Opłaty (Czas, Stawka, Koszt) Kilenci (KlientId, NazwaKlienta) (7a) (7b) (7c) (7d) (7e) Mimo iż po zdefiniowaniu osobnych tabel Pracownicy i Stanowiska tabel jest więcej, łacznie przechowujemy mniej informacji. 6. Przykłady 6

Przykład III Tworzymy bazę opisujac a zaliczenia, jakie studenci uzyskiwali ze swoich projektów. Jeden student może podchodzić do tego samego projektu wiele razy (może poprawiać ocenę). Jednego dnia jeden student może starać się tylko o jedno zaliczenie. NrZaliczenia NrIndeksu NrProjektu Data Ocena NrIndeksu Data NrZaliczenia (8a) (8b) Wydaje się, że projekt Zaliczenia (NrZaliczenia, NrIndeksu, Data, NrProjektu, Ocena) (9) nie jest poprawny, gdyż nie uwzględnia drugiej z zależności (8). 6. Przykłady 7

Projekt Zaliczenia (NrZaliczenia, NrIndeksu, Data, NrProjektu, Ocena) (10) nie jest poprawny, gdyż zawiera zależności przechodnie: NrIndeksu Data NrZaliczenia NrProjektu Ocena, a zatem nie jest w 3PN (ustaliliśmy, że NrZaliczenia nie może być kluczem!). 6. Przykłady 8

Rozbijmy pierwsza z zależności funkcyjnych (8)na dwie części: NrZaliczenia NrProjektu Ocena NrZaliczenia NrIndeksu Data NrIndeksu Data NrZaliczenia (11a) (11b) (11c) Zależności (11b), (11c) sa swoimi odwrotnościami, a zatem jedna z nich można wyeliminować. Projekt KtoKiedy (NrIndeksu, Data, NrZaliczenia) CoZaCo (NrZaliczenia, NrProjektu, Ocena) (12a) (12b) jest w PNBC. Ta analiza pokazuje, że projekt (9) tak naprawdę jest poprawny. 6. Przykłady 9

Przykład IV Fabryka w magazynie przechowuje części różnego typu (śrubki i nakrętki). Każda część ma swój unikalny identyfikator. W magazynie każdy pojemnik ( regał ) zawiera identyczne części. Mamy relacje funkcyjne NrRegału IdCzęści Ilość (13a) Śrubki: IdCzęści Długość Średnica TypŁba (13b) Nakrętki: IdCzęści Średnica (13c) Projekty odpowiednich tabel sa (pozornie) oczywiste. 6. Przykłady 10

Niektóre zapytania bardzo wykonać jest bardzo łatwo, na przykład wskaż regały, w których znajduja się śrubki o długości 3/4": π NrRegału ( πidczęści ( σdługość=3/4" Śrubki ) Regały ) (14) Inne zapytania sa bardziej problematyczne na przykład jaki typ łba maja śrubki przechowywane na regale 58 (( π TypŁba σnrregału=58 Regały ) Śrubki ) (15) To zapytanie powinno zadziałać dobrze: Jeśli części przechowywane na regale 58 sa śrubkami, wszystko jest OK. Jeśli części przechowywane na regale 58 nie sa śrubkami (tylko nakrętkami), złaczenie w (15) da zbiór pusty, a więc także OK pod warunkiem, że nie przypiszemy tego samego IdCzęści śrubkom i nakrętkom, a takiego więzu w naszym projekcie nie ma. 6. Przykłady 11

Problem można częściowo rozwiazać modyfikujac tabelę Regały: NrRegału IdCzęści RodzajCzęści Ilość (16) Wówczas możliwe jest sprawdzenie na których regałach znajduja się śrubki ) (σ Regały RodzajCzęści= Śrubki (17) ρ RegałyŚrubek i dalej π TypŁba (( σnrregału=58 RegałyŚrubek ) Śrubki ) (18) Jeśli na regale 58 nie ma śrubek, dostaniemy zbiór pusty. 6. Przykłady 12

W relacyjnym modelu danych nie ma rekordów z wariantami, zanych z niektórych języków programowania. Prawdziwym rozwiazaniem byłoby przekonanie zleceniodawcy, że stosowanie jednolitej numeracji do różnego rodzaju części nie jest rozsadne. Jeżeli nie da się zleceniodawcy do tego przekonać a zleceniodawca może mieć uzasadnione powody aby protestować najlepszym rozwiazaniem jest zsumowanie zależności (13b), (13c), które maja ten sam poprzednik: NrRegału IdCzęści Ilość IdCzęści Długość Średnica TypŁba (19a) (19b) Atrybut Średnica występuje w następnikach dwa razy, więc po zsumowaniu pojawia się tylko raz. Teraz należy rozumieć, że jeżeli atrybuty Długość, TypŁba przyjmuja wartość null, mamy do czynienia z nakrętka, w przeciwnym zaś razie ze śrubka. 6. Przykłady 13

Zgodnie z zasadami sztuki, funkcja określajaca czy dana część jest śrubka, czy nakrętka, powinna być wbudowana w bazę danych (jako tak zwana procedura składowana). Podobnie w bazie powinien znaleźć się więz domenowy (check) stwierdzajacy, że atrybuty Długość, TypŁba musza być jednocześnie null lub not null. Atrybut Średnica powinien być zawsze not null. 6. Przykłady 14

Przykład V (kolejowy) Tworzymy bazę danych zawierajac a (uproszczony) rozkład jazdy pociagów oraz informacje o sprzedanych biletach. Po pierwsze, Z każdym pociagiem stowarzyszona jest lista stacji, na których się on zatrzymuje. Z każda stacja stowarzyszony jest zbiór pociagów, na których się on zatrzymuje. Dla każdej stacji należy podać godziny przyjazdu i odjazdu każdego pocia- gu, który się na niej zatrzymuje. 6. Przykłady 15

Pierwszy i ostatni punkt odpowiadaja następujacym zależnościom funkcyjnym: NrPociagu Stacja NrKolejny NrPociagu Stacja Przyjazd Odjazd (20a) (20b) co prowadzi do następujacej struktury tabeli Przystanki ( NrPociagu, Stacja, NrKolejny, Przyjazd, Odjazd ) (21) Powstaje jednak pewna watpliwość: A co się stanie jeśli jakiś pociag nie przejeżdża przez dana stację? Czy przypoadkiem zależności funkcyjne (20) nie wymagaja wyspecyfikowania wszystkich możliwych par NrPociagu-Stacja? Oczywiście nie: Zależność funkcyjna ma postać implikacji: jeżeli podamy atrybuty poprzednika, to ustalamy jednoznacznie wartości atrybutów następnika. A jeżeli nie, to nie. 6. Przykłady 16

Rola zapytań A co z określeniem zbioru pociagów, które zatrzymuja się na danej stacji? Nie trzeba w tym celu konstruować osobnej tabeli (relacji) można to osiagn ać poprzez odpowiednie zapytanie: ( π NrPociagu σstacja= Koluszki (Przystanki) ) (22) Nie wszystkie informacje przechowuje się w postaci osobnych tabel użyteczność baz danych polega (między innymi) na tym, że wiele rzeczy da się zrealizować poprzez zapytania. 6. Przykłady 17

Zadanie Posługujac się schematem tabeli Przystanki (21), znaleźć wszystkie pociagi, które przejeżdżaja przez stację X oraz przez stację Y. [ ( πnrpociagu σstacja= X (Przystanki) )] [ ( π NrPociagu σstacja= Y (Przystanki) )] (23) Tabela Przystanki występuje w powyższym zapytaniu dwa razy, po obu stronach złaczenia. Jest to przykład tak zwanego samozłaczenia (self-join). 6. Przykłady 18

Zadanie Posługujac się schematem tabeli Przystanki (21), znaleźć wszystkie pociagi, które najpierw przejeżdżaja przez stację X, później przez stację Y. [ ρ StacjaX(NrPociagu,NrX) πnrpoci ( )] agu,nrkolejny σstacja= X (Przystanki) [ ( ρ StacjaY(NrPociagu,NrY) πnrpociagu,nrkolejny σstacja= Y (Przystanki) ( π NrPociagu σnrx<nry (StacjaX StacjaY) ) )] (24a) (24b) (24c) Zapytanie (24) oczywiście także zawiera samozłaczenie, tyle że w formie niejawnej. Pytanie: Po jakim atrybucie realizowane jest złaczenie w (24c)? Po atrybucie NrPociagu, bo to jest powtarzajacy się atrybut w tabelach StacjaX, StacjaY. 6. Przykłady 19

Zadanie domowe Posługujac się schematem tabeli Przystanki (21), znaleźć wszystkie pociagi, które najpierw przejeżdżaja przez stację X, później przez stację Y, oraz odpowiednie godziny odjazdu z X i przyjazdu do Y. 6. Przykłady 20