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

Podobne dokumenty
Plan wykładu. Problemy w bazie danych. Problemy w bazie danych BAZY DANYCH. Problemy w bazie danych Przykład sprowadzenia nieznormalizowanej 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. Plan wykładu. Zależności funkcyjne. Wykład 2: Relacyjny model danych - zależności funkcyjne. Podstawy SQL.

Technologie baz danych

SQL (ang. Structured Query Language)

Systemy GIS Tworzenie zapytań w bazach danych

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

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

Normalizacja baz danych

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

1 Przygotował: mgr inż. Maciej Lasota

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

Wprowadzenie do języka SQL

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

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

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

Podstawowe zapytania SELECT (na jednej tabeli)

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

Wprowadzenie do baz danych

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

Wykład XII. optymalizacja w relacyjnych bazach danych

Autor: Joanna Karwowska

Przestrzenne bazy danych Podstawy języka SQL

Pierwsza postać normalna

Autor: Joanna Karwowska

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

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

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

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

Zasady transformacji modelu DOZ do projektu tabel bazy danych

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

Technologia informacyjna

Wykład 2. Relacyjny model danych

1 DML - zapytania, część II Grupowanie Operatory zbiorowe DML - modyfikacja 7. 3 DCL - sterowanie danymi 9.

Normalizacja tabel POSTACIE NORMALNE TABEL

Pojęcie zależności funkcyjnej

Normalizacja baz danych

Autor: Joanna Karwowska

1 Wstęp do modelu relacyjnego

Relacyjne bazy danych. Podstawy SQL

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

Język SQL. Rozdział 2. Proste zapytania

Model relacyjny. Wykład II

TEST E.14 BAZY DANYCH

Normalizacja relacji

Autor: Joanna Karwowska

Bazy Danych i Usługi Sieciowe

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

Język SQL. Rozdział 4. Funkcje grupowe Funkcje grupowe, podział relacji na grupy, klauzule GROUP BY i HAVING.

Normalizacja relacyjnych baz danych. Sebastian Ernst

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

Laboratorium nr 5. Temat: Funkcje agregujące, klauzule GROUP BY, HAVING

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

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

WPROWADZENIE DO BAZ DANYCH

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

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

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

Bazy danych 3. Normalizacja baz danych

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

Pierwsza postać normalna

Wykład 8. SQL praca z tabelami 5

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

Relacyjne bazy danych. Podstawy SQL

Optymalizacja w relacyjnych bazach danych - wybór wydajnej strategii obliczania wyrażenia relacyjnego.

Model relacyjny. Wykład II

Wykład 5. SQL praca z tabelami 2

Widok Connections po utworzeniu połączenia. Obszar roboczy

Bazy danych 6. Podzapytania i grupowanie. P. F. Góra

Baza danych. Modele danych

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

SQL praca z tabelami 4. Wykład 7

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

SQL Server i T-SQL w mgnieniu oka : opanuj język zapytań w 10 minut dziennie / Ben Forta. Gliwice, Spis treści

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

SQL do zaawansowanych analiz danych część 1.

Tabela SPRZEDAŻ WYCIECZEK

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

Podstawy języka SQL. SQL Structured Query Languagestrukturalny

Model relacyjny bazy danych

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

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

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

Bazy danych 8. Podzapytania i grupowanie. P. F. Góra

Normalizacja. Pojęcie klucza. Cel normalizacji

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

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

Bazy danych i usługi sieciowe

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

Grupowanie i funkcje agregujące

Technologia Informacyjna

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

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

1: 2: 3: 4: 5: 6: 7: 8: 9: 10:

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

Bazy danych - Materiały do laboratoriów IV

Transkrypt:

Plan wykładu 2 ZY DNYH Wykład 3: Sprowadzanie do postaci normalnych. SQL zapytania grupujące Małgorzata Krętowska Wydział Informatyki Politechnika iałostocka Problemy w bazie danych Przykład sprowadzenia nieznormalizowanej relacji do 3NF SQL Operator konkatenacji Zmienne podstawiania Powiązanie tabeli samej ze sobą Zapytania grupujące 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

5 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 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 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 6 300 FSO Żeromskigo 10 59 20 6 Mozarta 56 6 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 59 500 6 Mozarta 56 2 400 FSM Tychy Pogodna 2 hopina 3 54 500 5 Pierwsza postać normalna Zależności funkcyjne 7 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 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 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 6 300 FSO Żeromskigo 10 59 20 6 Mozarta 56 8 dres_dostawcy Nazwa_zęści Ilość dres_u

Druga postać normalna Druga postać normalna 9 10 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. 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. Klucz relacji (, ) W jaki sposób podzielić relację, aby była w 2NF? dres_dostawcy Nazwa_zęści Ilość dres_u 11 Druga postać normalna Dostawca_na_zamówieniu (,,, dres_dostawcy) 12 Druga postać normalna Dostawca_na_zamówieniu (,,, dres_dostawcy) zęści_w_magazynie (, Nazwa_zęści,, dres_u) 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 Idzęści Nazwazęści Ilość dresu 53 100 5 hopina 3 57 50 5 hopina 3 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

13 Druga postać normalna Dostawca_na_zamówieniu (,,, dres_dostawcy) zęści_w_magazynie (, Nazwa_zęści,, dres_u) Dostawy_części (Nr_zamówienia,, Ilość) 14 Zależności funkcyjne Dostawca_na_zamówieniu (,,, dres_dostawcy) zęści_w_magazynie (, Nazwa_zęści,, dres_u) Dostawy_części (Nr_zamówienia,, Ilość) 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 dres_dostawcy Ilość Nazwa_zęści dres_u 15 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. 16 Trzecia postać normalna 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) Przechodnia zależność funkcyjna Zależności funkcyjne dwóch relacji w 3NF dres_dostawcy

Trzecia postać normalna Trzecia postać normalna 17 18 Nazwa_zęści Ilość dres_u Jakie relacje otrzymamy z relacji zęści_w_magazynie? zęści (, Nazwa_zęści, ) y (, dres_u) Jakie relacje otrzymamy z relacji Dostawy_części? Dostawy_części (Nr_zamówienia, Id_części, Ilość) Nazwa_zęści dres_u Otrzymane relacje Pierwsza postać normalna 19 20 Zamówienie_do_dostawcy (Nr_zamówienia, ) Dostawcy (Id_dostawcy, Nazwa_dostawcy, dres_dostawcy) Postać nieznormalizowana; struktury danych nie są dwuwymiarowe Przekształcenie do 1PN Relacja R D zęści (, Nazwa_zęści, ) y (, dres_u) Dostawy_części (Nr_zamówienia, Id_części, Ilość) Usunięcie danych nieelementarnych

Druga postać normalna Trzecia postać normalna 21 22 klucz D Przekształcenie do 2PN D Przekształcenie do 3PN Usunięcie niepełnej zależności funkcyjnej Usunięcie przechodniej zależności funkcyjnej 23 SQL Operator konkatenacji Zmienne podstawiania Powiązanie tabeli samej ze sobą Zapytania grupujące Operator konkatenacji Operator konkatenacji ( ) pozwala na łączenie kolumny z kolumną, z wyrażeniem arytmetycznym lub stałą wartością w celu utworzenia wyrażenia. rgumenty występujące po obu stromach operatora są łączone i tworzą pojedynczą kolumnę wynikową. select 'pracownik ' nazwisko ' pracuje na stanowisku ' stanowisko from pracownik; 'PROWNIK' nazwisko 'PRUJENSTNOWISKU' JO ---------------------------------------------------- pracownik SMITH pracuje na stanowisku LERK pracownik LLEN pracuje na stanowisku SLESMN pracownik WRD pracuje na stanowisku SLESMN select 'pracownik ' nazwisko ' pracuje na stanowisku ' stanowisko "pracownicy i stanowiska" from pracownik; pracownicy i stanowiska ---------------------------------------------------- pracownik SMITH pracuje na stanowisku LERK pracownik LLEN pracuje na stanowisku SLESMN 24

Zmienne podstawiania Zmienne podstawiania Zmienne podstawiania służą do reprezentowania wartości wprowadzanych dopiero w trakcie wykonywania. Reprezentacja zmiennej: &nazwa_zmiennej SQL> select nazwisko, pensja from pracownik where pensja>&min_placa; Proszę podać wartość dla min_placa: 2000 stare 1: select nazwisko, pensja from pracownik where pensja>&min_placa nowe 1: select nazwisko, pensja from pracownik where pensja>2000 nazwisko pensja ---------- ---------- JONES 2975 LKE 2850 LRK 2450 SOTT 3000 KING 5000 FORD 3000 SQL> select stanowisko, pensja from pracownik where stanowisko=&st; Proszę podać wartość dla st: MNGER stare 1: select nazwisko, pensja from pracownik where stanowisko=&st nowe 1: select nazwisko, pensja from pracownik where stanowisko=mnger select nazwisko, pensja from pracownik where job=mnger * ŁĄD w linii 1: OR-00904: "MNGER": niepoprawny identyfikator SQL> select stanowisko, pensja from pracownik where stanowisko= &st ; Proszę podać wartość dla st: MNGER stare 1: select nazwisko, pensja from pracownik where stanowisko= &st nowe 1: select nazwisko, pensja from pracownik where stanowisko= MNGER nazwisko pensja ---------- ---------- JONES 2975 LKE 2850 LRK 2450 25 27 Powiązanie tabeli samej ze sobą 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; 28 Funkcje grupowe Funkcje grupowe są przeznaczone do działania na grupach wierszy. Wynikiem działania funkcji grupowej jest pojedyncza wartość dla całej grupy, a nie jedną wartość dla każdego wiersza. Przykłady funkcji: VG ([DISTINT] wyrażenie) OUNT ([DISTINT] wyrażenie) OUNT(*) MX ([DISTINT] wyrażenie) MIN ([DISTINT] wyrażenie) STDDEV ([DISTINT] wyrażenie) SUM ([DISTINT] wyrażenie) VRINE ([DISTINT] wyrażenie) Wszystkie funkcje grupowe, z wyjątkiem count(*) ignorują NULL.

29 Zapytania grupujące SELET lista pól FROM tabele WHERE warunki przed grupowaniem GROUP Y pola grupujące HVING warunki po grupowaniu 30 Zasady wykonania zapytania grupującego Rozważ wszystkie kombinacje wierszy tabel występujących w klauzuli FROM Do każdego wiersza zastosuj warunek WHERE Podziel wiersze na grupy Do każdej grupy zastosuj warunek w klauzuli HVING Dla każdego wiersza reprezenującego grupę oblicz wartości wyrażeń po SELET Ograniczenia 31 Na liście wyboru polecenia SELET używającego grupowania wolno umieszczać tylko te kolumny, które są przedmiotem działania klauzuli GROUP Y chyba, że występują one wewnątrz funkcji grupującej. Każda kolumna lub wyrażenie występujące na liście SELET, nie objęte funkcją grupową, musi być przedmiotem grupowania klauzulą GROUP Y