Bazy Danych
Modelowanie Baz danych
Baza danych-uporządkowany zbiór danych z pewnej dziedziny tematycznej ,zorganizowany w sposób ułatwiający dostęp do danych i operowanie nimi według określonych kryteriów. Bazą danych może być np. kartoteka pacjentów w przychodni lekarskiej czy zbiór danych o uczniach i ich ocenach.
Wymagania stawiane systemom baz danych:
Możliwość utworzenia i określenie schematu baz danych
Możliwość tworzenia zapytań o dane oraz ich aktualizowanie
Zapewnienie bezpiecznego przechowywania dużej liczby danych
Sterowanie jednoczesnym dostępem do danych przez wielu użytkowników
Szybki dostęp do informacji
Modele baz danych
Bazy danych mogą różnić się pod względem sposobu, w jaki dane są zorganizowane i powiązane ze sobą. Ze względu na strukturę danych rozróżniamy bazy:
Relacyjne
Hierarchiczne
Sieciowe
Obiektowe
Model hierarchiczny-najstarszy model, baza ma strukturę drzewiastą jednym punktem początkowym i wieloma rozgałęzieniami (opiera się na modelu drzewa rodzic-potomek).Zbiór nadrzędny nazywany rodzicem zawiera określona liczbę podzbiorów nazywanych potomkami ,te z kolei zawierają kolejne podzbiory itd. W modelu tym zbiór nadrzędny może mieć wiele podzbiorów, jednak każdy podzbiór ma tylko jeden zbiór nadrzędny.
Model sieciowy-odmiana modelu hierarchicznego, baza posiada strukturę przypominającą sieć, w odróżnieniu od bazy hierarchicznej, w bazie sieciowej dowolny zbiór danych może zostać powiązany z każdym innym. W tym przypadku podzbiór może być powiązany z wieloma zbiorami nadrzędnymi lub z żadnym zbiorem.
Model obiektowy- bazy opierające się na modelu obiektowym łączą cechy programów komputerowych tworzonych za pomocą nowoczesnych języków programowania obiektowego z cechami aplikacji bazodanowych. Operują one na obiektach (czyli zbiorach połączonych danych i procedur umożliwiających manipulowanie tymi danymi) i tzw. klasach obiektów.
Model relacyjny-najpopularniejsza grupa baz danych. W tych bazach dane przechowywane są nie w jednej lecz w wielu tabelach, przy czym każda tabela przechowuje dane na określony temat. Dodatkowo pomiędzy tabelami tworzone są specjalne powiązania zwane relacjami. Dzięki nim możliwe jest uzyskiwanie informacji z bazy na wiele sposobów , poprzez kojarzenie ze sobą danych pochodzących z różnych tabel.
Modelowanie baz danych:
Analiza danych
Ustalenie zależności między wyodrębnionymi składowymi
Stworzenie schematu bazy danych
Analiza projektu
System zarządzania bazą danych
Encja
Encja- byt, przedmiot fizyczny (lub abstrakcja ) rozpoznawalny jako samodzielny i niezależny w organizacji rzeczywistości; rzecz znacząca. Interesujący nas obiekt, coś co istnieje i jest rozróżnialne wśród innych obiektów tego samego typu.
Model związków encji- dziedzina konceptualna postrzegana jako zbiór encji (obiektów) oraz związków między encjami
Elementy modelu związków encji (diagramu związków encji) :
Zbiory encji
Związku-opisują połączenia między dwoma lub większą liczbą zbiorów encji
Atrybuty-ich wartości opisują właściwości encji
Diagram związków encji-liczebność związków endji:
Jeden do jeden
Wiele do jeden
Wiele do wielu
Klasyfikacja więzów - więzy stanowią część schematu bazy danych. Są określane przez projektanta równolegle z jej strukturą. Po określeniu więzów wszystkie operacje wstawienia i modyfikacji danych, które nie spełniają warunków narzuconych w więzach są niedopuszczalne:
a)Kulcze-atrybuty lub zbiory atrybutów , które jednoznacznie identyfikują encję wewnątrz zbioru encji. Klucz może być utworzony przez wybór atrybutu spełniającego rolę klucza oraz utworzenie specjalnego atrybutu spełniającego rolę klucza
b)Więzy jednoznaczności- wymaganie aby wartości w danym polu różniły się. W danej roli może występować tylko jedna wartość. Podstawowym przykładem są klucze.
c)więzy integralności referencyjnej-narzucają wymaganie, aby wartość którą wskazuje jakiś obiekt znajdowała się w bazie. Zakaz usuwania obiektu wskazywanego. Wraz z usuwanym obiektem (wskazywanym przez inne) usuwane są obiekty które na niego wskazują.
d)więzy domenowe-stanowią wymaganie aby wartość atrybutu należała do określonego zbioru wartości lub znajdowała się w określonym zakresie.
e)więzy zasadnicze -arbitralne narzucone warunki spełnienie których musi być bezwzględnie przestrzegane w definiowanej bazie danych.
Zasady projektowania:
a) dokładność - zbiory encji oraz ich atrybuty powinny odzwierciedlać świat rzeczywisty. Każdy element projektu powinien odpowiadać wiedzy o części świata rzeczywistego , którą reprezentuje.
b) unikanie redundacji - projekt nie może być nadmiarowy co wymaga unikania powtórzeń. Te same informacjie nie mogą znajdować się jednocześnie w kilku miejscach.
c) prostota - w projekcie powinny znaleźć się tylko te elementy które są naprawdę potrzebne
d) dobór właściwych elementów - wybór rodzaju elem. (zbioru encji,atrybut,związek) opisujący obiekt ze świata rzeczywistego. Jeżeli z pewnym elem. poza nazwą wiążą się inne dane to należy elem. taki definiować jako zbiór encji.
Relacyjny model baz danych
W relacyjnym modelu danych baza danych składa się zwykle z szeregu tabel (relacji) oraz związków pomiędzy tabelami. Tabele przechowuja informacje na temat interesujących obiektów. Na uzyskanie pełniejszych informacji pozwala łączenie tabel. Rodzaj danych, sposób podziału na tabele i związki jest ustalony w procesie normalizacji bazy. Tabele mogą być ze sobą powiązane. Każda z nich jest nazwana i ma stała liczbę kolumn oraz dowolną liczbę wierszy. Tabela składa się z krotek, czyli rekordów oraz niezależnych atrybutów czyli pól. Ich kolejność jest dowolna. Rekordy są zapisywane w wierszach natomiast atrybuty w kolumnach. Kolumny są opatrzone nazwami i mogą przechowywać dane określonego prostego typu (np. liczby o podanej precyzji, napisy o określonej długości albo daty). Wiersze reprezentują konkretne wystąpienie rekordu i można je dodawać lub usuwać.
Założeniem poprawnej budowy tabeli jest to , aby każda wartość atrybutu w każdej krotce była wartością atomową (wartością nie rozkładalną -pojedyncza wartość a nie zbiór wartości).
Atrybuty służą do nazywania kolumn relacji. Na ogół oddają znaczenie danych umieszczanych w kolumnach pod nimi.
Schemat relacji = nazwa relacji + zbiór atrybutów
W modelu relacyjnym projekt składa się z jednego lub kilku schematów relacji (schemat bazy danych).
W krotce każdy atrybut ma swój odpowiednik w postaci składowej krotki.
Pole podaje wartość atrybutu , którego dziedziną jest zbiór dopuszczalnych wartości jakie może przyjmować (dane określonego typu ,definiowane na etapie projektowania bazy danych -mają stały rozmiar i zwykle są to ogólnie znane typy proste -liczba,data,godzina,ciąg znaków,znak,itp.)
Instancja relacji (zbiór-krotek).
Własności relacji (tablicy):
Krotki (wiersze) są unikalne
Atrybuty (kolumny) są unikalne
Kolejność krotek (wierszy) jest dowolna
Kolejność atrybutów (kolumn) jest dowolna
Wartości atrybutów (pól) są atomowe
Relacja między dwoma tabelami może przyjąć jeden konkretny typ :
Jeden do jednego-powiązania jednoznaczne typu 1 do 1 („1-1”)-jednemu rekordowi pierwszej tabeli odpowiada jeden rekord w drugiej tabeli
Jeden do wielu-powiązania jednoznaczne 1 do n („1-n”) -jednemu rekordowi pierwszej tabeli odpowiada wiele rekordów w drugiej tabeli ,ale każdemu rekordowi drugiej tabeli odpowiada tylko jeden rekord w pierwszej tabeli.
Wiele do wielu-powiązania wieloznaczne n do m („n-m”)-wiele rekordów pierwszej tabeli jest powiązanych z wieloma rekordami w drugiej tabeli.
Zbiór encji ---> relacja
Atrybuty relacji związku:
Klucze zbiorów encji są atrybutami relacji
Własny klucz związku (jeśli istnieje)
Atrybuty relacji:
Dla zbioru - atrybuty zbioru słabych encji oraz atrybuty klucza z innych zbiorów encji
Dla związku - wszystkie atrybuty klucza zbioru słabych encji również te które pochodzą z innych zbiorów encji
Zależności funkcyjne
Warunek występowania zależności funkcyjnych:
A1,A2,...AnB
Jeżeli dwie krotki relacji R są zgodne dla atrybutów A1,A2,An (obie krotki mają te same wartości składowych dla wymienionych atrybutów) to muszą być również zgodne w pewnym innym atrybucie B.
A1,A2,...An-->B1
A1,A2,...An—B2
A1,A2,...AnBm
A1,A2,...AnB1B2...Bm
Jeżeli zbiór atrybutów A1,A2,An określa funkcyjnie więcej niż jeden atrybut B.
Klasyfikacja więzów- klucze
Klucze - atrybuty lub zbiory atrybutów, które jednoznacznie identyfikują encję wewnątrz zbioru encji.
Klucz może być utworzony przez:
Wybór atrybutu spełniającego rolę klucza (np.pesel,nip)
Utworzenie specjalnego atrybutu spełniającego rolę klucza
Klucze relacji
Atrybut lub zbiór atrybutów {A1,A2,...An} tworzy klucz relacji jeżeli :
Wszystkie pozostałe atrybuty relacji są funkcyjnie zależne od tych atrybutów (nie może się zdarzyć aby dwie różne krotki relacji R były zgodne dla wszystkich atrybutów A1,A2,...An)
Nie istnieje podzbiór właściwy zbioru {A1,A2,...An} od którego pozostałe atrybuty relacji R są zależne funkcyjnie (klucz musi być minimalny)
Każda tabela (relacja) posiada zdefiniowany klucz -wyróżnioną kolumnę lub kilka kolumn , których wartości jednoznacznie identyfikują dany wiersz. Ich wartość dla każdego rekordu jest unikalna. Kolumny jednoznacznie odróżniające rekordy relacji nazywane są kluczem głównym (podstawowym).
W każdej relacji istnieje pewna kombinacja atrybutów mająca zdolność jednoznacznej identyfikacji - tablica ma więcej niż jeden klucz kandydujący wśród klucz podstawowych. Wśród nich ten który poprzez minimalna ilość atrybutów jednoznacznie wyznacza dany wiersz jest określany kluczem właściwym.
Klucz obcy-Kolumny jednej tabeli są kluczem obcym jeśli nie są kluczem głównym tej tabeli ale ich wartości są wartościami klucza głównego innej tabeli.
W relacyjnym modelu logicznym dwie tabele są ze sobą w relacji jeśli wiążą je wartości klucza podstawowego i klucza obcego lub też specjalna tabela łącząca.
Atrybut lub zbiór atrybutów {A1,A2,...An} tworzy klucz relacji jeżeli :
Wszystkie pozostałe atrybuty relacji są funkcyjnie zależne od tych atrybutów. Nie może się zdarzyć aby dwie różne krotki relacji R były zgodne dla wszystkich atrybutów A
Nie istnieje podzbiór właściwy zbioru {A1,A2,...An} od którego pozostałe atrybuty relacji R są zależne funkcyjnie (klucz musi być minimalny)
Nadklucz- zbiór atrybutów zawierających klucz (spełnionny jest jedynie warunek pierwszy)
Reguły dotyczące zależności funkcyjnych :
Zasady podziału i łączenia
Zależności trywialne
Reguła przechodniości
1.Zasady podziału i łączenia
a) reguła podziału
zależność funkcyjną:
A1A2,...An-->B1B2...Bm
Można zastąpic zbiorem zależności funkcyjnych :
A1A2...An-->Bi gdzie i=1,2,...m
b)reguła łączenia
zbiór zależności funkcyjnych:
A1A2...An-->B1 gdzie i=1,2,...m
Można zastąpic zależ. Funk. :
A1A2...An-->B1B2...Bm
2.Zależności trywialne
zal.funk.:
A1A2...An-->B jest trywialna jeżeli B jest równe któremuś A
3.Reguła przechodniości
jeżeli w relacji R zachodzą zależności :
A1A2...An-->B1B2...Bm oraz B1B2...Bm-->C1C2...Ck
To w relacji R zachodzi także zal:
A1A2...An-->C1C2...Ck
Projektowanie relacyjnych schematów baz danych
Anomalie - problemy ze zbyt dużą liczbą danych w pojedynczej relacji
Redundacja -dane niepotrzebnie powtarzają się w kilku rekordach
Anomalie modyfikacji -podczas modyfikacji wartość danych nie zostanie poprawiona we wszystkich krotkach
Anomalie usunięć - usunięcie wartości atrybutu może spowodować utratę częsci danych (całej krotki )
Dekompozycja relacji - podział atrybutów R między dwa schematy nowych relacji
Normalizacja - proces przekształcania reprezentacji bazy danych (nazywany również rozkładem odwracalnym), polegający na odnajdywaniu logicznych związków między elementami danych. W każdym etapie normalizacja bazy strukturę danych dzieli na coraz więcej tabel z zachowaniem podstawowych związków między elementami danych.
Denormalizacja - wprowadzenie kontrolowanej nadmiarowości do bazy danych w celu przyśpieszenia wykonywania na niej operacji(np. obsługiwania zapytań)
Pierwsza postać normalna ( 1 NF) - relacja R jest w pierwszej postaci normalnej, jeśli wartości atrybutów są elementarne tzn. są to pojedyncze wartości określonego typu, a nie zbiory wartości .
Druga postać normalna (2 NF) - atrybuty nie wchodzące w skład klucza są zależne od całego klucza ( nie tylko od jego części)
Każdy atrybut który nie wchodzi w skład żadnego klucza potencjalnego tej relacji jest w pełni funkcjonalnie zależny od wszystkich kluczy potencjalnych tej relacji
Relacja będąca już w 2 NF nie powinna zawierać redundacji .
Druga postać normalna (2 NF)
Schemat jest już w 2 NF jeśli każdy jego klucz jest jednoelementowy
Przeprowadzenie schematu relacyjnego do 2 NF nie jest procesem jednoznacznym (dla jednego schematu relacyjnego może istrnieć wiele równoważnych informacyjnie układów projekcji tego schemtu w 2 NF)
Postać normalna Boyce'a - Codda
Relacja R jest w postaci BCNF wtedy i tylko wtedy ,gdy dla każdej zależności A1,A2,...An-->B zbiór {A1,A2,...An} jest nadkluczem R.
Oznacza to że lewa strona każdej zależności nietrywialnej musi być nadkluczem.
Dekompozycja do postaci BCNF
Powtarzany dostatecznie długo proces dekomozycji prowadzi do zapisania każdej relacji w postaci kolekcji podzbiorów atrybutów spełniających warunki:
Podzbiory są schematami relacji w postaci BCNF
Dane z pierwotnej relacji są wiernie reprezentowane w relacjach powstałych w wyniku dekompozycji. Powinna być możliwość dokładnego odtworzenia relacji pierwotnej .
Trzecia postać normalna
Relacja R jest w trzeciej postaci normalnej wtedy i tylko wtedy gdy spełniony jest warunek :
Jeśli A1,A2,...An-->B jest zależnością nietrywialną to albo {A1,A2,...An} jest nadkluczem albo B jest elementem pewnego klucza.
Trzecia postać normalna
Trzecia postać normalna wymaga aby wszystkie kolumny nie należące do klucza zależały funkcyjnie od klucza kandydującego.
Klucz kandydujący spełnia te same warunki co klucz główny i charakteryzuje się tym , że :
Żadne dwa rekordy w tabeli nie mogą mieć tej samej kombinacji wartości
Z klucza kandydującego nie można wyodrębnić podgrupy kolumn również zapewniających unikatywność danego rekordu
W tej postaci normalnej nie są wymagane zależności pomiędzy kolumnami poza kluczem .
Relacja R jest w trzeciej postaci normalnej wtedy i tylko wtedy gdy spełniony jest warunek Jeśli A1,A2,...An-->B jest zależnością nietrywialną to albo {A1,A2,...An} jest nadkluczem albo B jest elementem pewnego klucza.
Zależnośc wielowartościowa A1,A2,...An-->B1 B2...Bm zachodz w relacji R jeżeli dla krotek o ustalonych wartościach atrybutów typu A zbiór wartości atrybutów typu B nie zależy od żadnych wartości tych atrybutów z relacji R których nie ma ani w zbiorze atrybutów typu A ani w zbiorze atrybutów typu B. Zależności wielowarstwowe występują wówczas gdy istnieją dwa takie zbiory atrybutów relacji których wartości występują w relacji we wszystkich możliwych kombinacjach.
Zależności wielowartościowe nie spełniają reguły podziału i reguły łączenia.
Czwarta postać normalna
Relacja R jest w czwartej postaci normalnej wtedy i tlyko wtedy jeżeli A1,A2,...An->->B1B2...Bm jest nietrywialną zależnością wielowartościową ;
{A1,A2,...An} jest nadkluczem
Języki zapytań
•język zapytań umożliwia użytkownikom uzyskanie żądanej informacji z bazy danych
•języki zapytań są najczęściej językami wyższego poziomu w porównaniu z językami programowania
języki zapytań:
•proceduralne - użytkownik specyfikuje sposób wykonania sekwencji operacji na bazie danych w celu uzyskania żądanej informacji
•nieproceduralne - użytkownik specyfikuje tylko żądaną informację z bazy danych bez podawania procedury uzyskania tej informacji
Język baz danych SQL (Structured Query Language)
standardy:
ANSI - (American National Standard Institute)
SQL-92 (SQL2)
SQL-3
funkcje:
DDL - język definicji danych
definiowanie bazy danych oraz struktur tablicowych, indeksy, atrybuty tablic, typy danych, klucze
DML - język zarządzania danymi
tworzenie, odczyt, modyfikacja, usuwanie atrybutów, krotek, tablic oraz indeksów
DML - język manipulacji danych
tworzenie oraz generowanie zapytań okresowych oraz zapytań ad-hoc
Proste zapytania w języku SQL
umożliwiają wybieranie krotek relacji spełniających określony w zapytaniu warunek
FROM - służy do określenia relacji, których dotyczy zapytanie
WHERE - warunek, jaki muszą spełniać krotki, aby zostały wybrane jako odpowiedź na zadane pytanie
SELECT - określa nazwy atrybutów dołączonych do odpowiedzi dla krotek spełniających warunek
Agregowanie
•Tworzenie jednej wartości z listy wartości
Operatory agregowania:
1.SUM - oblicza sumę wszystkich wartości w kolumnie
2.AVG - oblicza wartość średnią wszystkich wartości w kolumnie,
3.MIN - oblicza najmniejszą wartość w kolumnie
4.MAX - oblicza największą wartość w kolumnie
5.COUNT - określa liczbę wartości występujących w kolumnie
Modyfikacje bazy danych
a) Wstawianie nowych krotek do relacji
b)Usuwanie pewnych krotek z relacji
c) Zmiany wartości pewnych składowych w określonych krotkach
a )Wstawianie nowych krotek do relacji
Podstawowe elementy instrukcji wstawiania:
1.Słowo kluczowe INSERT INTO,
2.Nazwa relacji R,
3.Lista atrybutów relacji R ujęta w nawiasy,
4.Słowo kluczowe VALUES,
5.Ujęta w nawiasy lista wartości, po jednej wartości dla każdego atrybutu z listy (punkt 3)
INSERT INTO R(A1, A2, ... An) VALUES (v1, ...vn);
b) Usuwanie pewnych krotek z relacji
Podstawowe elementy instrukcji usuwania:
1.Słowo kluczowe DELETE FROM,
2.Nazwa relacji R,
3.Słowo kluczowe WHERE,
4.Warunek.
DELETE FROM R WHERE <warunek>;
c) Zmiany wartości pewnych składowych w określonych krotkach (aktualizacja)
Podstawowe elementy instrukcji aktualizacji:
1.Słowo kluczowe UPDATE,
2.Nazwa relacji R,
3.Słowo kluczowe SET,
4.Lista wyrażeń, z których każde określa wartość pewnego atrybutu relacji R,
5.Słowo kluczowe WHERE,
6.Warunek.
UPDATE R SET <nowe przypisania> WHERE <warunek>;
Definiowanie schematu relacji
a) Podstawowe typy danych
CHAR (n) - tekst o długości n znaków
VARCHAR(n) - tekst o długości nie większej niż n znaków
INT, INTEGER - liczby całkowite
FLOAT, REAL - liczby rzeczywiste (zmiennopozycyjne)
DECIMAL(n,d) - liczby rzeczywiste stałopozycyjne (n cyfr, z czego d po kropce), np. 2121.45 - DECIMAL(6,2)
DATE - data
TIME - czas
b)Deklaracja tabeli
1.Słowo kluczowe: CREATE TABLE
2.Nazwy relacji z listami nazw i typów atrybutów
3.
CREATE TABLE GwiazdaFilmowa
(nazwisko CHAR(30), adres VARCHAR(255), płeć CHAR(1), dataUrodzenia DATE);
c) Usuwanie tabel
Usunięcie relacji R
Słowo kluczowe: DROP R
d) Zmiany schematów relacji
Wskazanie modyfikowanej relacji R
ALTER TABLE R
Modyfikowanie kolumn
ADD - dodawanie nowej kolumny (wymaga określenia nazwy atrybutu i typu danych)
DROP - usuwanie kolumny (wymaga określenia nazwy kolumny)
e) Zmiany schematów relacji
Wskazanie modyfikowanej relacji R
ALTER TABLE R
Modyfikowanie kolumn
ADD - dodawanie nowej kolumny (wymaga określenia nazwy atrybutu i typu danych)
DROP - usuwanie kolumny (wymaga określenia nazwy kolumny)
f) Wartości domniemane
Słowo kluczowe: DEFAULT - dołączone do deklaracji atrybutu i jego typu
Przykłady wartości domniemanych: NULL, stała, bieżący czas lub data
g)Dziedzina - pozwala na określenie typu atrybutu; do jednej dziedziny może należeć kilka atrybutów (łatwiejsze definiowanie związków między atrybutami)
Definicja dziedziny:
1.Słowo kluczowe CREATE DOMAIN,
2.Nazwa dziedziny,
3.Słowo kluczowe AS,
4.Typ danych.
CREATE DOMAIN <nazwa> AS <opis typu>;
CREATE DOMAIN DziedzinaFilmu AS VARCHAR(50) DEFAULT `nieznany';
h) Indeks - określony na atrybucie relacji pozwala na efektywne wyszukiwanie krotek o ustalonej wartości składowej atrybutu
Określenie indeksu:
1.Słowo kluczowe CREATE INDEX,
2.Nazwa indeksu,
3.Słowo kluczowe ON,
4.Nazwa relacji
5.Nazwa atrybutu.
CREATE INDEX IndeksRoku ON Film(rok);
CREATE INDEX IndeksKlucza ON Film(tytuł,rok);
USUWANIE INDEKSU:
DROP INDEX IndeksRoku;
1