Najważniejsze problemy, których dostarczy nam tak zaprojektowana tabela :



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

Baza danych. Baza danych to:

Normalizacja relacyjnych baz danych. Sebastian Ernst

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

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

Normalizacja baz danych

Integralność danych Wersje języka SQL Klauzula SELECT i JOIN

Normalizacja baz danych

Relacyjne bazy danych a XML

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

Krzysztof Kadowski. PL-E3579, PL-EA0312,

WPROWADZENIE DO BAZ DANYCH

Projektowanie Systemów Informacyjnych

SQL w 24 godziny / Ryan Stephens, Arie D. Jones, Ron Plew. Warszawa, cop Spis treści

Spis treści. Przedmowa

WPROWADZENIE DO BAZ DANYCH

Hurtownie danych. 31 stycznia 2017

Baza danych. Modele danych

Programowanie obiektowe

Co to są relacyjne bazy danych?

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

Bazy danych - wykład wstępny

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

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

Związki pomiędzy tabelami

Przykłady normalizacji

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

Normalizacja. Pojęcie klucza. Cel normalizacji

Pojęcie systemu baz danych

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

Blaski i cienie wyzwalaczy w relacyjnych bazach danych. Mgr inż. Andrzej Ptasznik

15. Funkcje i procedury składowane PL/SQL

Wykład I. Wprowadzenie do baz danych

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

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

Relacyjne bazy danych. Normalizacja i problem nadmierności danych.

Wykład 2. Relacyjny model danych

Normalizacja bazy danych. WYKŁAD Piotr Ciskowski

Cel normalizacji. Tadeusz Pankowski

1 Przygotował: mgr inż. Maciej Lasota

Hurtownie danych wykład 5

Technologia informacyjna

T-SQL dla każdego / Alison Balter. Gliwice, cop Spis treści. O autorce 11. Dedykacja 12. Podziękowania 12. Wstęp 15

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

Ref. 7 - Język SQL - polecenia DDL i DML

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

Wykład 8. SQL praca z tabelami 5

SIECI KOMPUTEROWE I BAZY DANYCH

Porównanie systemów zarządzania relacyjnymi bazami danych

Pierwsza postać normalna

Program nauczania. Systemy baz danych. technik informatyk

1 Wstęp do modelu relacyjnego

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

Bazy Danych. C. J. Date, Wprowadzenie do systemów baz danych, WNT - W-wa, (seria: Klasyka Informatyki), 2000

Dr Michał Tanaś(

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.

Język SQL, zajęcia nr 1

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

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

Bazy danych. wprowadzenie teoretyczne. Piotr Prekurat 1

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

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

Posługiwanie się tabelami

Technologia informacyjna

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

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

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

Teoretyczne podstawy informatyki

Rozdział 1 Wprowadzenie do baz danych. (c) Instytut Informatyki Politechniki Poznańskiej 1

mail: strona: konsultacje: na stronie (po wcześniejszym umówieniu drogą mailową)

Agnieszka Ptaszek Michał Chojecki

Laboratorium Technologii Informacyjnych. Projektowanie Baz Danych

Bazy danych. Zasady konstrukcji baz danych

Obiektowość BD Powtórka Czas odpowiedzi. Bazy Danych i Systemy informacyjne Wykład 14. Piotr Syga

Pojęcie bazy danych. Funkcje i możliwości.

Oracle11g: Wprowadzenie do SQL

Modelowanie hierarchicznych struktur w relacyjnych bazach danych

Projektowanie systemów baz danych

Model logiczny SZBD. Model fizyczny. Systemy klientserwer. Systemy rozproszone BD. No SQL

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

PRZEWODNIK PO PRZEDMIOCIE

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

Informatyka I BAZY DANYCH. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2017

Technologia Informacyjna

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

STROJENIE BAZ DANYCH: INDEKSY. Cezary Ołtuszyk coltuszyk.wordpress.com

Jerzy Nawrocki, Wprowadzenie do informatyki

Bazy Danych i Systemy informacyjne Wykład 7. Piotr Syga

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

RELACYJNE BAZY DANYCH I ICH ZNACZENIE W SYSTEMACH INFORMACJI GEOGRAFICZNEJ

SZKOLENIE: Administrator baz danych. Cel szkolenia

AUREA BPM Oracle. TECNA Sp. z o.o. Strona 1 z 7

Autor: Joanna Karwowska

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

Model relacyjny. Wykład II

Microsoft SQL Server Podstawy T-SQL

Wprowadzenie do baz danych

Projektowanie bazy danych przykład

Transkrypt:

Standardy i dialekty języka SQL Konkurencyjność rynku spowodowała konieczność standaryzowania języka SQL w roku 1986, kiedy został opracowany przez ANSI pierwszy standard określany jako SQL:86. Konkurencja pomiędzy firmami spowodowała że powstało wiele implementacji tego i późniejszych standardów. Powstały, więc dialekty językowe. Transact-SQL (T-SQL) historycznie wprowadzony przez Sybase, rozwijany do dziś przez Microsoft w SQL Server oraz Sybase Adaptative Server. PL/SQL (firmy ORACLE) - Procedural Language SQL SQL/PSM (najpopularniejszy silnik relacyjny w serwisach WWW MySQL). PL/pgSQL (na serwerach PostgreSQL) - Procedural Language /PostgreSQL SQL PL (na serwerach IBM) - SQL Procedural Language Ma to znaczenie szczególnie podczas integracji platform i dla nas, pracujących w różnych środowiskach. Standardy ANSI są regularnie aktualizowane. Od 1986 roku zostało opublikowanych szereg wersji (aktualnie obowiązująca to ANSI SQL:2011/2011), wprowadzających porządek w nowych funkcjonalnościach. Np. w SQL:2003 zostały wprowadzone standardy związane z obsługą XML. Projektowanie i normalizacja bazy danych Problemy związane ze składowaniem danych Model relacyjnych baz danych, opracowany przez Edgara F. Codd a i przedstawiony w A Relational Model of Data for Large Shared Data Banks, definiuje m.in. cechy i strukturę dobrze zaprojektowanej bazy. Najłatwiej streścić sedno i przedyskutować potencjalne zagrożenia (złego projektu) na przykładzie, prezentującym kroki procesu normalizacji. Przyjrzyjmy się strukturze tabeli zawierającej informacje o zleceniach i Klientach zaprojektowania w Exelu. select * from #Zamowienia_UNF Najważniejsze problemy, których dostarczy nam tak zaprojektowana tabela : te same informacje przechowywane są wiele razy w wielu wierszach (np. AdresKlienta ). Zajmują one niepotrzebnie zasoby. powtarzające się danej to także problem związany z aktualizacją. Jeśli chcemy poprawić

np. adres Klienta, trzeba zmodyfikować wszystkie jego wystąpienia (może to być wiele rekordów). Co jeśli o którymś zapomnimy? Które dane będą prawdziwe? Pojawia się tu problem zachowania integralności danych. Problem aktualizacji eskaluje się gdy te same dane będą przechowywane w kilku tabelach. kolumny AdresZamowienia oraz SzczegolyZamowienia, zwierają kolekcje wartości. Skutkuje to brakiem możliwości wykonania podstawowych operacji na danych np. podsumowania według wartości zleceń, liczby pozycji etc. usunięcie rekordu pozycji zamówienia, skutkuje utratą informacji o Kliencie, czyli takiej której nie chcielibyśmy tracić. analogicznie w drugą stronę problem z dodawaniem informacji konieczne określenie informacji, których być może jeszcze nie znamy, lub których może w ogóle nigdy nie będzie np. Klient, który nie złożył żadnych zamówień. Normalizacja Wszystkie powyższe problemy i anomalie, rozwiązują odpowiednie postacie normalne (postulaty Codd a). Postacie normalne wyższego rzędu, implikują wszystkie niższe. Normalizacja to bezstratny proces organizowania danych w tabelach mający na celu zmniejszenie ilości danych składowanych w bazie oraz wyeliminowanie potencjalnych anomalii. Pierwsza postać normalna 1NF Pierwsza postać normalna to podstawa baz mówi o atomowości danych. Czyli tabela (encja) przechowuje dane w sposób atomowy. Każde pole przechowuje jedną informację, dzięki czemu możemy dokonywać efektywnych zapytań. Wprowadza także pojęcie istnienie klucza głównego identyfikującego bezpośrednio każdy wiersz unikalności. Warto pamiętać również o tym, że w dziedzinie teorii zbiorów kolejność wierszy jest dowolna (chyba że jawnie taki zbiór posortujemy). Przejście na 1NF, nie może powodować utraty żadnych informacji, nie ma znaczenia kolejność elementów w zbiorze. Ta zasada dotyczy każdej postaci normlanej. Mówimy, że tabela (encja) jest w pierwszej postaci normalnej, kiedy wiersz przechowuje informacje o pojedynczym obiekcie, nie zawiera kolekcji, posiada klucz główny (kolumnę lub grupę kolumn jednoznacznie identyfikujących go w zbiorze) a dane są atomowe. Zobaczmy, jak będzie wyglądała nasza struktura, jeśli spróbujemy doprowadzić ją do 1NF : -- tabela w pierwszej postaci normalnej select * from #Zamowienia_1NF

Kolumna Adres nie jest atomowa ale wszystko tak naprawdę zależy od definicji atomowości, jaka nas satysfakcjonuje. Jeśli atomowa informacja o adresie to dla nas nazwa ulicy z numerem to wszystko jest ok. Co innego jeśli wymogi biznesowe potrzebują rozdzielenia tych informacji np. system zleceń dla firmy kurierskiej. Obsługa jednej ulicy może być realizowana przez kilku kurierów (np. długa ulica Piotrkowska w Łodzi) tu z pewnością trzeba by rozdzielić te informacje na dwie kolumny. W tym miejscu, trzeba dodać jeszcze jedną istotną uwagę. Jeśli normalizujemy tabele, czyli rozdzielamy informacje na dane atomowe, konieczne jest określenie typu danych kolumn. Stosujemy zawsze najmniejsze typy z możliwych, jakie są konieczne do spełnienia wymogów projektowych. Jeśli składujesz dane np. o dacie urodzin interesuje nas za zwyczaj tylko data, nic więcej (chyba że w bazie szpitalnej, gdzie również interesująca jest informacja o godzinie narodzin). W większości przypadków, wybrany powinien zostać typ danych date który zajmuje 3 bajty. Powszechnie popełnianym błędem jest nadużywanie dużych typów. Jeśli zostanie wybrany typ datetime dla każdego rekordu, dla tej kolumny zostanie skonsumowane 8 bajtów. Pamiętajmy o tym podczas procesu projektowania czy też normalizacji tabel, że w dobry projekt bazy zaczyna się od fundamentu czyli typów danych opisujących obiekty. Druga postać normalna 2NF Mówi o tym, że każda tabela powinna przechowywać dane dotyczące tylko konkretnej klasy obiektów. Jeśli mówimy o encji (tabeli) np. Klienci, to wszystkie kolumny opisujące elementy takiej encji, powinny dotyczyć Klientów a nie jakiś innych obiektów (np. ich zamówień). Zatem normalizując do 2NF, wydzielić należy zbiór atrybutów (kolumn) który jest zależny tylko od klucza głównego. Wszystkie atrybuty informacyjne (nie należące do klucza), muszą zawierać informacje o elementach tej konkretnej klasy (encji, tabeli) a nie żadnej innej. Kolumny opisujące inne obiekty, powinny trafić do właściwych encji (tabel) w których te obiekty będziemy przechowywać. W naszym przykładzie wykonajmy analizę bazy zamówień, która jest już w 1NF. Oznaczmy na początek atrybuty informacyjne które nie należą do klasy Zamówień (nie zależą funkcyjnie od klucza głównego). -- tabela w pierwszej postaci normalnej

select * from #Zamowienia_1NF Widać że istnieją w niej atrybuty związane z różnymi obiektami. Najbardziej rzucającymi się w oczy są z pewnością kolumny opisujące klasę Klientów zaznaczone na niebiesko. Następnie można wydzielić również informacje o detalach zamówienia (ElementZamowienia, Ilosc, CenaJedn) w pomarańczowej ramce. Te wszystkie atrybuty, muszą powędrować do nowych tabeli właściwych dla obiektów danego typu. Finalny obraz 2NF będzie składał się więc z 4 tabel : Zamowienia, Klienci, DetaleZamowien i Produkty. W wyniku tej operacji, tabela z informacjami o zamówieniach będzie wyglądała tak : -- tabela w drugiej postaci normalnej select * from #Zamowienia_2NF Nowe tabele będą wyglądały następująco : -- nowa tabela przechowujące informacje o obiektach typu Klient select * from #Klient_2NF -- nowa tabela przechowujące informacje o detalach zamówień select * from #DetaleZamowien_2NF

-- nowa tabela przechowujące informacje o produktach select * from #Produkty_2NF Jak widać usunięcie redundantnych informacji, skutkuje wzrostem złożoności struktury. Nie dość, że tworzymy nowe tabele, to jeszcze dokładamy kolumny np. IDKlient. Relacyjne systemy bazy danych są projektowane do działania na zbiorach. Owszem koszt łączenia tabel bywa wysoki, ale zapewniając odpowiednie indeksy na łączonych kolumnach, jesteśmy w stanie zagwarantować równowagę pomiędzy wydajnością a plusami wynikającymi z normalizacji. Doprowadziliśmy więc do sytuacji, w której każda tabela (encja) przechowuje informacje opisujące tylko obiekty właściwe dla niej. Trzecia postać normalna 3NF Trzecia postać normalna głosi, że kolumna informacyjna nie należąca do klucza nie zależy też od innej kolumny informacyjnej, nie należącej do klucza. Czyli każdy niekluczowy argument jest bezpośrednio zależny tylko od klucza głównego a nie od innej kolumny. W naszym przypadku widać, że kolumny informacyjne związane z kosztami danego zamówienia oraz stawką podatku VAT, są ze sobą skorelowane. Z jednej z nich można śmiało zrezygnować, nie tracąc żadnej informacji (każda z nich zależy od klucza głównego, ale również od pozostałych dotyczących wartości). Możemy wyznaczyć np. wartość brutto na podstawie stawki VAT i wartości netto itd.. select NumerZamowienia,IDKlient,DataZamowienia,WartZamNetto,WartZamBrutto, ((WartZamBrutto/WartZamNetto-1)*100) as [Vat %] from #Zamowienia_3NF

Innym przykładem, mogą być kolumny wyliczeniowe wartości netto/brutto itp. ). Łatwo jednak w takich przypadkach podać przykłady, świadomego łamania 3NF na rzecz wydajności. Chociażby skomplikowane wyliczenia które muszą być wykonywane dla każdego wiersza, przy każdym zapytaniu. Zalety i wady normalizacji Projektowanie baz danych z pewnością nie jest trywialne. Pierwszym krokiem, powinna być właściwa analiza wymagań biznesowych, uwzględniająca przyszłe potrzebny i możliwości skalowania projektu. Konieczne jest świadomość istnienia potencjalnych zagrożeń i wyczucie, wynikające z pewnością z doświadczenia aby odpowiedzieć na pytanie jak mocno normalizować tabele. Najczęściej spotykany poziom to 3 postać normalna. Są sytuacje, zresztą nasuwające się intuicyjnie, w których zależy nam na procesie odwrotnym denormalizacji celem maksymalnego zwiększenia szybkości wykonywania zapytań. Poniżej kilka istotnych cech związanych z normalizowaniem baz danych : zmniejszamy ogólną liczbę danych przechowywanych w bazach rozwiązujemy problemy anomalii dodawania, modyfikacji i usuwania informacji (rekordów) z bazy czasem spowalniamy wykonywanie zapytań jest to cena jaką płacimy za konieczność łączenia tabel. przyspieszamy wykonywanie określonych zapytań tworzymy osobne tabele więc możemy utworzyć więcej indeksów klastrowych, lepsza efektywność przechowywania danych w tabelach. wąskie tabele to bardziej efektywne przetwarzanie i składowanie ich na dysku, mniej operacji I/O. lepsze zarządzanie transakcjami szybsze wykonywanie update ów, mniej blokad. Oprócz przedstawionych powyżej trzech pierwszych postaci normalnych, spotkać możemy wyższe formy, choć zazwyczaj spotykane jedynie w teoretycznych rozważaniach : postać normalna Boyce-Codd a (określana również mianem 3.5NF) czarta postać normalna 4FN piąta postać normalna 5FN