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

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

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

Technologie baz danych

Pożyczkobiorcy. Anomalia modyfikacji: Anomalia usuwania: Konta_pożyczkowe. Anomalia wstawiania: Przykłady anomalii. Pożyczki.

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

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

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

Bazy Danych i Usługi Sieciowe

Normalizacja baz danych

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

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

Pojęcie zależności funkcyjnej

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

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

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

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

Bazy danych i usługi sieciowe

Normalizacja. Pojęcie klucza. Cel normalizacji

1 Przygotował: mgr inż. Maciej Lasota

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

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

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

Bazy danych 3. Normalizacja baz danych

Technologia informacyjna

Cel normalizacji. Tadeusz Pankowski

Normalizacja tabel POSTACIE NORMALNE TABEL

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny technologiczny Politechnika Śląska

Technologie baz danych

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

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

Bazy danych. Andrzej Łachwa, UJ, /15

Normalizacja baz danych

Pierwsza postać normalna

Projektowanie bazy danych przykład

WYKŁAD 1. Wprowadzenie do problematyki baz danych

Model relacyjny. Wykład II

Normalizacja relacyjnych baz danych. Sebastian Ernst

Zasady transformacji modelu DOZ do projektu tabel bazy danych

Zależności funkcyjne pierwotne i wtórne

Bazy danych. Plan wykładu. Pierwsza posta normalna. Druga posta normalna. Wykład 7: Sprowadzanie do postaci normalnych. DDL, DML

Baza danych. Modele danych

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

Pierwsza postać normalna

Projektowanie Systemów Informacyjnych

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

Systemy baz danych. Notatki z wykładu

S y s t e m y. B a z D a n y c h

1 Wstęp do modelu relacyjnego

Wykład XII. optymalizacja w relacyjnych bazach danych

Bazy danych. Andrzej Łachwa, UJ, /15

Wprowadzenie do baz danych

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

Autor: Joanna Karwowska

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny technologiczny Politechnika Śląska

Projektowanie baz danych

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

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

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny technologiczny Politechnika Śląska

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

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

Zależności funkcyjne

Wykład 2. Relacyjny model danych

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

Systemy GIS Tworzenie zapytań w bazach danych

Bazy danych w sterowaniu

Normalizacja schematu bazy danych. Radosław Fijołek Paweł Romanowski Paweł Trzos

Baza danych. Baza danych to:

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

Relacyjne Bazy Danych Andrzej M. Borzyszkowski. Projekt bazy danych normalizacja. PJATK/ Gdańsk. Dwie metodologie. Formalne zasady projektowe

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

Technologia Informacyjna

Bazy danych. Dr inż. Paweł Kasprowski

Model relacyjny bazy danych

Normalizacja schematów logicznych relacji

Technologie baz danych

Normalizacja relacji

Związki pomiędzy tabelami

1. Zakłada się, że każda operacja (read, write) w harmonogramie obejmuje również blokowanie i odblokowanie jednostki. Czy następujący harmonogram

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

Wprowadzenie do języka SQL

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

Bazy Danych i Usługi Sieciowe

WPROWADZENIE DO BAZ DANYCH

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

Projektowanie relacyjnych baz danych

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

Model relacyjny. Wykład II

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

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

1. Mapowanie diagramu klas na model relacyjny.

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

Plan. Formularz i jego typy. Tworzenie formularza. Co to jest formularz? Typy formularzy Tworzenie prostego formularza Budowa prostego formularza

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

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

Wykład 8. SQL praca z tabelami 5

SQL (ang. Structured Query Language)

Tadeusz Pankowski Definicja. Definicja

Modelowanie hierarchicznych struktur w relacyjnych bazach danych

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

Krzysztof Kadowski. PL-E3579, PL-EA0312,

Transkrypt:

Plan wykładu 2 ZY DNYH Wykład 2: Sprowadzanie do postaci normalnych. SQL. Problemy w bazie danych Przykład sprowadzenia nieznormalizowanej relacji do 3NF SQL Małgorzata Krętowska Wydział Informatyki Politechnika iałostocka Problemy w bazie danych Problemy w bazie danych Nadmiarowość (redundancja). Dane powtarzają się w wielu wierszach dres1 niepotrzebnie się powtarza. W przypadku dodawania nowego zakupu przez Firmę1, gdy osoba wpisująca pomyli się i źle wpisze adres lub nazwę firmy, baza utraci spójność danych (nie będzie wiadomo, która wartość jest prawidłowa). nomalie modyfikacji. W przypadku gdy Firma1 zmieni swój adres, trzeba zmienić wszystkie wiersze (krotki) w tej tabeli (relacji). Jeśli nie zostanie zmieniony choćby jeden wiersz, baza utraci spójność danych. Wymaganie zmiany wszystkich wierszy w dużych bazach spowoduje znaczące obciążenie. nomalie usunięć Usunięcie jedynego zamówienia dla Firmy2 z tabeli powyżej spowoduje usunięcie wszelkich informacji o firmie, a tymczasem celowe może być zachowanie informacji o adresie firmy. W tej tabeli jest to niemożliwe (pomijamy w tej chwili możliwość wstawienia wartości NULL dla pola, co częściowo rozwiązuje problem). Przykład Tabela Sprzedaż Przykład Tabela Sprzedaż Rozwiązaniem tych problemów są postacie normalne, które gwarantują, że takie anomalie nie będą miały miejsca. Źródło: http://pl.wikipedia.org/wiki/nomalie_%28bazy_danych%29 3 Źródło: http://pl.wikipedia.org/wiki/nomalie_%28bazy_danych%29 4

Definicja zależności funkcyjnej Zależności funkcyjne Zależność funkcyjna: 1 2... n Interpretacja: jeśli dwie krotki relacji R są zgodne dla atrybutów 1, 2,.., 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. Odczyt zapisu: 1, 2,..., n określają funkcyjnie Jeśli zbiór atrybutów 1, 2,..., n określa funkcyjnie więcej niż jeden atrybut tzn. 1 2... n 1 1 2... n 2 1 2... n 3 To taki zbiór zależności skrótowo przedstawiamy jako: 1 2... n 1 2 3 x y Jeśli x i y są zgodne dla atrybutów To muszą być zgodne również dla atrybutów Klucze relacji trybut lub zbiór atrybutów { 1, 2,..., 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 1, 2,..., n. Nie istnieje taki podzbiór właściwy zbioru { 1, 2,..., n }, od którego pozostałe atrybuty relacji R są zależne funkcyjnie, tzn. klucz musi być minimalny 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. Wyróżniamy następujące reguły: reguła łączenia reguła podziału reguła przechodniości

Zasady podziału i łączenia Reguła podziału Zależność funkcyjną 1 2... n 1 2... m możemy zastąpić zbiorem zależności funkcyjnych 1 2... n i, gdzie i=1,2,...,m Reguła łączenia Zbiór zależności funkcyjnych 1 2... n i, gdzie i=1,2,...,m możemy zastąpić pojedynczą zależnością funkcyjną 1 2... n 1 2... m Reguła przechodniości Reguła przechodniości umożliwia kaskadowe łączenie zależności: jeśli w relacji R zachodzą zależności 1 2... n 1 2... m oraz 1 2... m 1 2... k, to w relacji R zachodzi także zależność 1 2... n 1 2... k. Uzasadnienienie powyższej reguły => wyliczenie domknięcia { 1, 2,..., n } +. 10 11 Przykład Przekształcić relację nieznormalizowaną Zamówienia do 3NF NrZamówienia IdDostawcy NazwaDostawcy resdostawcy Idzęści Nazwazęści Ilość dresu 1 300 FSO Żeromskigo 10 53 100 5 hopina 3 57 50 5 hopina 3 łotnik 59 500 6 Mozarta 56 2 400 FSM Tychy Pogodna 2 54 500 5 hopina 3 Koło 32 100 6 Mozarta 56 Gdańsk Silnik 3 500 FSR Olejowa 12 88 15 7 acha 45 4 600 FSM ielsko-iała łotnik Mickiewicza 45 59 400 6 Mozarta 56 Prądnica 21 50 7 acha 45 5 300 FSO Żeromskigo 10 53 200 5 hopina 3 57 30 5 hopina 3 łotnik 6 300 FSO Żeromskigo 10 59 20 6 Mozarta 56 12 Pierwsza postać normalna Relacja jest w pierwszej postaci normalnej, jeśli każda wartość atrybutu w każdej krotce tej relacji jest wartością atomową NrZamówienia IdDostawcy NazwaDostawcy resdostawcy Idzęści Nazwazęści Ilość dresu 1 300 FSO Żeromskigo 10 53 100 5 hopina 3 57 50 5 hopina 3 łotnik 59 500 6 Mozarta 56 2 400 FSM Tychy Pogodna 2 hopina 3 54 500 5

13 Pierwsza postać normalna Relacja w 1NF NrZamówienia IdDostawcy NazwaDostawcy resdostawcy Idzęści Nazwazęści Ilość dresu 1 300 FSO Żeromskigo 10 53 100 5 hopina 3 1 300 FSO Żeromskigo 10 57 50 5 hopina 3 łotnik 1 300 FSO Żeromskigo 10 59 500 6 Mozarta 56 Tychy 2 400 FSM Pogodna 2 54 500 5 hopina 3 Tychy Koło 2 400 FSM Pogodna 2 32 100 6 Mozarta 56 Gdańsk Silnik 3 500 FSR Olejowa 12 88 15 7 acha 45 ielsko-iała łotnik 4 600 FSM Mickiewicza 45 59 400 6 Mozarta 56 ielsko-iała Prądnica 4 600 FSM Mickiewicza 45 21 50 7 acha 45 5 300 FSO Żeromskigo 10 53 200 5 hopina 3 5 300 FSO Żeromskigo 10 57 30 5 hopina 3 łotnik 6 300 FSO Żeromskigo 10 59 20 6 Mozarta 56 14 Zależności funkcyjne dres_dostawcy Id_zęści Nazwa_zęści Ilość dres_u 15 16 Pełna zależność funkcyjna trybut relacji r jest w pełni funkcyjnie zależny od zbioru atrybutów X, jeśli jest funkcyjnie zależny od niego, ale nie jest funkcyjnie zależny od żadnego podzbioru zbioru X. Dana relacja jest w drugiej postaci normalnej, jeśli każdy atrybut tej relacji nie wchodzący w skład żadnego klucza jest w pełni funkcyjnie zależny od wszystkich kluczy tej relacji. klucz D Przekształcenie do 2PN D Rozwiązanie problemu: W celu uzyskania drugiej postaci normalnej należy podzielić relację na zbiór takich relacji, których wszystkie atrybuty będą w pełni funkcyjnie zależne od kluczy. Usunięcie niepełnej zależności funkcyjnej

17 Klucz relacji (, Id_zęści) W jaki sposób podzielić relację, aby była w 2NF? dres_dostawcy Id_zęści Nazwa_zęści Ilość dres_u 18 Dostawca_na_zamówieniu (,,, dres_dostawcy) NrZamówienia IdDostawcy NazwaDostawcy resdostawcy 1 300 FSO Żeromskigo 10 2 400 FSM Tychy Pogodna 2 3 500 FSR Gdańsk Olejowa 12 4 600 FSM ielsko-iała Mickiewicza 45 5 300 FSO Żeromskigo 10 6 300 FSO Żeromskigo 10 19 Dostawca_na_zamówieniu (,,, dres_dostawcy) zęści_w_magazynie (Id_zęści, Nazwa_zęści,, dres_u) 20 Dostawca_na_zamówieniu (,,, dres_dostawcy) zęści_w_magazynie (Id_zęści, Nazwa_zęści,, dres_u) Dostawy_części (Nr_zamówienia, Id_zęści, Ilość) Idzęści Nazwazęści Ilość dresu 53 100 5 hopina 3 57 50 5 hopina 3 łotnik 59 500 6 Mozarta 56 54 500 5 hopina 3 Koło 32 100 6 Mozarta 56 Silnik 88 15 7 acha 45 Prądnica 21 50 7 acha 45 NrZamówienia Idzęści Ilość 1 53 100 1 57 50 1 59 500 2 54 500 2 32 100 3 88 15 4 59 400 4 21 50 5 53 200 5 57 30 6 59 20

21 Zależności funkcyjne Dostawca_na_zamówieniu (,,, dres_dostawcy) zęści_w_magazynie (Id_zęści, Nazwa_zęści,, dres_u) Dostawy_części (Nr_zamówienia, Id_zęści, Ilość) Id_zęści Nazwa_zęści dres_dostawcy dres_u 22 Trzecia postać normalna Dana relacja jest w trzeciej postaci normalnej, jeśli jest ona w drugiej postaci normalnej i każdy jej atrybut nie wchodzący w skład żadnego klucza nie jest przechodnio funkcyjnie zależny od żadnego klucza tej relacji. Id_zęści Ilość Przechodnia zależność funkcyjna Zależności funkcyjne dwóch relacji w 3NF Trzecia postać normalna Trzecia postać normalna 23 24 dres_dostawcy Jakie relacje otrzymamy z relacji Dostawca_na_zamówieniu? Zmówienie_do_dostawcy (Nr_zamówienia, ) Dostawcy (Id_dostawcy, Nazwa_dostawcy, dres_dostawcy) Id_zęści Nazwa_zęści dres_u Jakie relacje otrzymamy z relacji zęści_w_magazynie? zęści (Id_zęści, Nazwa_zęści, ) y (, dres_u) dres_dostawcy Id_zęści Nazwa_zęści dres_u

Trzecia postać normalna Otrzymane relacje 25 26 Id_zęści Zamówienie_do_dostawcy (Nr_zamówienia, ) Ilość Dostawcy (Id_dostawcy, Nazwa_dostawcy, dres_dostawcy) Jakie relacje otrzymamy z relacji Dostawy_części? Dostawy_części (Nr_zamówienia, Id_części, Ilość) zęści (Id_zęści, Nazwa_zęści, ) y (, dres_u) Dostawy_części (Nr_zamówienia, Id_części, Ilość) Pierwsza postać normalna 27 28 Postać nieznormalizowana; struktury danych nie są dwuwymiarowe Przekształcenie do 1PN Relacja R D klucz D Przekształcenie do 2PN D Usunięcie danych nieelementarnych Usunięcie niepełnej zależności funkcyjnej

Trzecia postać normalna Przykład schematu bazy danych 29 Przekształcenie do 3PN Usunięcie przechodniej zależności funkcyjnej 30 Złączenia tabel Przykład SELET [LL DISTINT] wyrażenie [[S] alias],... FROM tabela_1, tabela_2,..., tabela_n WHERE warunki_łączące_tabele Wypisać nazwiska i nazwy departamentów pracowników. SELET nazwisko, pracownik.nr_departamentu "nr_dep (prac)", nazwa, departament.nr_departamentu "nr_dep (dep)" FROM pracownik, departament ; minimalna liczba łączących warunków = liczba tabel -1

Przykład cd Przykład Wypisać nazwiska i nazwy departamentów pracowników. SELET nazwisko, pracownik.nr_departamentu "nr_dep (prac)", nazwa, departament.nr_departamentu "nr_dep (dep)" FROM pracownik, departament WHERE pracownik.nr_departamentu=departament.nr_departamentu ; Wypisać poziomy płac poszczególnych pracowników wraz z ich zarobkami SELET nazwisko, pensja, nr_przedzialu FROM pracownik, poziom_zarobkow WHERE pensja between dolna_granica and gorna_granica; tabela poziom_zarobkow Powiązanie tabeli samej ze sobą 35 Powiązanie tabeli samej ze sobą jest możliwe dzięki zastosowaniu aliasu tabeli. Warunek łączenia odbywa się w taki sposób, jakby to były dwie oddzielne tabele: FROM tabela alias1, tabela alias2 Przykład: Wypisać nazwiska pracowników i nazwiska ich kierowników. select e.nazwisko pracownik, m.nazwisko kierownik from pracownik e, pracownik m where e.id_kierownika=m.id_pracownika;