RELACYJNE BAZY DANYCH
Podstawową właściwością relacyjnej bazy danych jest to, że informacje przechowywane są w tabelach,
a każda z tabel składa się z wierszy i kolumn. Wiersz tabeli jest pojedynczym rekordem składającym
się z kolumn. Element znajdujący się na przecięciu kolumny i wiersza to pole. Pole zawiera
najmniejszą niepodzielną wartość tzn. taką informację, która nie może być dalej dzielona ze względu
na swoją logiczną wartość.
Model relacyjnych baz danych opracował w końcu lat 60-tych matematyk E. F. Codd.
Struktury danych w modelu relacyjnym
Podstawową strukturą danych jest relacja będąca podzbiorem iloczynu kartezjańskiego dwóch
wybranych zbiorów reprezentujących dopuszczalne wartości. W bazach danych relacja przedstawiana
jest w postaci tabeli. Relacja jest zbiorem krotek posiadających taką samą strukturę, lecz różne
wartości. Każda krotka odpowiada jednemu wierszowi tablicy. Każda krotka posiada co najmniej jeden
atrybut odpowiadający pojedynczej kolumnie tablicy. Każda relacja (tablica) posiada następujące
własności:
Ä… krotki (wiersze) sÄ… unikalne
Ä… atrybuty (kolumny) sÄ… unikalne
ą kolejność krotek (wierszy) nie ma znaczenia
ą kolejność atrybutów (kolumn) nie ma znaczenia
ą wartości atrybutów (pól) są atomowe
W przypadku projektowania tabeli w bazie danych należy stosować się do następujących wskazówek:
ą Używaj nazw opisowych do nazwania kolumn tabeli. Kolumny nie powinny mieć znaczenia
ukrytego, ani reprezentować kilku atrybutów (złożonych w pojedynczą wartość).
Ä… BÄ…dz konsekwentny w stosowaniu liczby pojedynczej lub mnogiej przy nazywaniu tabeli.
ą Twórz tylko te kolumny, które są niezbędne do opisania modelowanej encji lub powiązania -
tabele z mniejszą ilością kolumn są łatwiejsze w użyciu.
ą Utwórz kolumnę pól kluczowych dla każdej tabeli.
Ä… Unikaj powtarzania informacji w bazie danych (normalizacja).
Przetwarzanie danych
Do wykonywania operacji na relacyjnych bazach danych służą operatory relacyjne. Operatory relacyjne
wchodzą w skład zapytań, które z kolei służą do wykonywania jednej bądz wielu operacji relacyjnych
na tabeli lub grupie tabel. Językiem pozwalającym na stosowanie operatorów relacyjnych jest język
SQL, którego odpowiedzią jest zawsze tabela. Nie oznacza to jednak, że użytkownik programu
działającego na bazie danych widzi tabele wręcz przeciwnie zazwyczaj dane zawarte w tabeli
wynikowej są wizualizowane w zgoła odmienny sposób i zależy on tylko od fantazji osoby
odpowiedzialnej za efekt wizualizacji i interfejs obsługi pisanej aplikacji.
Jednakże sam fakt, że wynikiem zapytania jest wirtualna tabela jest niezmiernie istotny. Dzięki
Copyright© mgr inż. RafaÅ‚ MikoÅ‚ajczak Kopiowanie i rozpowszechnianie zabronione
takiemu podejściu możemy zadać np. dwa pytania, w wyniku, których otrzymamy dwie tabele (czasami
całkiem pokazne), do których z kolei możemy zadać kolejne pytanie otrzymując jedną (stosunkowo
małą) tabelę, co znacznie ułatwia proces selekcji danych. Oczywiście znając strukturę tabel i wynik
zapytań możemy od razu postawić kilka zapytań do bazy danych. Takie łączenie zapytań nazywane jest
zagnieżdżaniem zapytań i pozwala otrzymać wynik bardzo bliski (równy) oczekiwanej odpowiedzi.
Integralność danych
Zasady integralności wymagają, aby każdy wiersz tabeli zawierał wartość lub grupę wartości, które
określałyby go w sposób jednoznaczny (unikalny). Te wybrane wartości nazywane są kluczem
głównym (primary key), natomiast kolumna bądz grupa kolumn z innej tablicy, która odpowiada
kluczowi głównemu tablicy pierwszej nazywana jest kluczem obcym (foreign key). Dodatkowe reguły
integralności mogą być nałożone na wybrane kolumny.
JZYK SQL
SQL Structured Query Language Strukturalny Język Zapytań to zbiór komend służący do
wprowadzania, modyfikowania i przeglądania zawartości relacyjnej bazy danych.
ZarzÄ…dzanie bazÄ… danych
Komendy związane z administracją bazą danych służą do zakładania kont użytkowników, przydzielania
lub odbierania im uprawnień, czyli ustalania zakresu działania na danych oraz do innych zadań
administracyjnych. Większość systemów dostarcza indywidualne, specjalne narzędzia do konfiguracji i
obsługi bazy danych. Bardzo często dane traktujące o charakterze bazy danych są zawarte też w tabeli,
do której jednak dostęp ma tylko administrator systemu.
Standardy języka SQL
Największą zaletą języka SQL jest to, że mimo bardzo wielu komercyjnych i darmowych silników
baz danych podstawowe elementy języka pozostają niezmienne.
Standard języka SQL jest sprawdzany i zatwierdzany przez międzynarodową organizację International
Standards Organization (ISO), natomiast w Stanach Zjednoczonych National Institute of Standards and
Testing (NIST).
Obecnie obowiązuję standard przyjęty w 1992 r. i jest to SQL-92, jednakże żaden komercyjny produkt,
nie jest z nim całkowicie zgodny (chodzi tu głównie o firmowe rozszerzenia).
OPERACJE RELACYJNE
Operacje relacyjne występują we wszystkich relacyjnych bazach danych a ich wynikami zawsze są
tabele.
Copyright© mgr inż. RafaÅ‚ MikoÅ‚ajczak Kopiowanie i rozpowszechnianie zabronione
Tabela Osoby .
Woj
Id Nazwisko ImiÄ™
_id
1 Mikołajczak Rafał 1
2 Nowak Marek 3
3 Kowalski Marek 2
4 Frąckowiak Zdzisław 7
Selekcja
Operacja selekcji zwraca wynik w postaci grupy rekordów z tablicy i najczęściej polega na wybraniu, o
pewne kryteria tylko, grupy rekordów (może też oczywiście zwrócić także całą tablicę).
SELECT * FROM Osoby WHERE Id=2;
Woj_i
Id Nazwisko ImiÄ™
d
2 Nowak Marek 3
Projekcja
Projekcja pozwala określić kolumny, które będą zwracane przez zapytanie. To rozwiązanie posiada
dwie zalety zmniejszenie ilości informacji w odpowiedzi oraz zdecydowane przyspieszenie działania.
SELECT Nazwisko FROM Osoby WHERE ImiÄ™ = Marek ;
Nazwisko
Nowak
Kowalski
ZÅ‚Ä…czenie
Operacja złączenia ( JOIN ) umożliwia wykorzystanie wielu tabel jako zródła danych dla zapytania.
Tabela Woj
Copyright© mgr inż. RafaÅ‚ MikoÅ‚ajczak Kopiowanie i rozpowszechnianie zabronione
Id Nazwa
1 wielkopolskie
2 śląskie
SELECT Nazwisko, Nazwa FROM Osoby, Woj. WHERE Osoby.Woj_id = Woj.Id;
Nazwisko Nazwa
Mikołajczak Wielkopolskie
Kowalski śląskie
Podstawowe zasady modelu relacyjnego to:
1. Dane prezentowane są użytkownikom w postaci tabel;
2. Komórki zawierają wartości niepodzielne na mniejsze porcje informacji
3. Każdy wiersz posiada wartość (lub grupę wartości), która go jednoznacznie identyfikuje (klucz
główny)
4. W przypadku określenia relacji miedzy tabelami dane z kolumny połączonej relacją muszą mieć
swoje odpowiedniki w drugiej tabeli.
Zasady mówiących o zagrożeniach, których należy się wystrzegać a stanowią podstawy zle
skonstruowanej bazy danych:
1. Tabele i kolumny mają niejasne nazwy (po n - czasie na pewno zapomnimy o co chodziło)
2. Ta sama informacja musi być wprowadzona kilkakrotnie a jej zmiana musi być dokonywana w
kilku różnych miejscach
3. Działanie bazy danych jest nieproporcjonalnie wolne do ilości obrabianych danych
4. Trudno określić relacje między danymi
5. W tabelach występują duplikujące się wiersze
6. Jest prawdziwą tragedią, kiedy to samo pytanie do tych samych danych zwraca różne wyniki
Etapy projektowania bazy danych to:
1. Określenie wymagań, zadań i celu przeznaczenia projektowanej bazy danych;
2. Określenie rodzaju danych (typów) przechowywanych w konkretnych kolumnach tabel;
3. Przeprowadzenie normalizacji;
4. Napisanie kodu tworzÄ…cego bazÄ™ i tabele bazy;
5. Zdefiniowanie użytkowników i praw dostępu;
6. Wypełnienie bazy informacjami ew. przeprowadzenie testów;
INSTRUKCJA SELECT
Projekt przykładowej tabeli.
Copyright© mgr inż. RafaÅ‚ MikoÅ‚ajczak Kopiowanie i rozpowszechnianie zabronione
Tabela Osoby
Id ImiÄ™ Zarobki Dochody
1 Rafał 100 200
2 Marek 200 250
3 Kamil 50 500
4 Zdzisław 300 120
INSTRUKCJA SELECT
Instrukcja SELECT składa się z wielu klauzul, z których część jest opcjonalna. Prosta składnia tej
funkcji wygląda następująco:
SELECT lista_pol
FROM nazwa_tabeli [,nazwa_innej_tabeli, ...]
[WHERE warunek];
Najprostszą funkcję SELECT można zapisać:
SELECT * FROM nazwa_tabeli;
Znak * jest znakiem szczególnym i mówi, że z tabeli mają zostać wybrane wszystkie kolumny w
rzeczywistym porzÄ…dku.
Używanie znaku * w zapytaniu ma jednak dwie wady:
1. Takie zapytanie jest mało przejrzyste (szczególnie bolesne w procesie poprawiania programu
wykorzystującego język SQL), gdyż nie daje nam informacji jakie kolumny są w tym zapytaniu
wykorzystywane;
2. Użycie tego znaku znacznie obniża wydajność (szybkość) wykonania polecenia SELECT.
Nawet, gdy rzeczywiście potrzebujemy pobrać wszystkie informacje z całej tabeli, o wiele
szybciej dostaniemy odpowiedz wypisujÄ…c nazwy wszystkich kolumn po instrukcji SELECT.
Wykonywanie obliczeń na danych
Wyrażenie wykonywane w zapytaniach nie musi koniecznie zawierać nazw kolumn można używać
też liczb, wyrażeń algebraicznych bądz łańcuchów znaków np.:
SELECT Cokolwiek , ImiÄ™, 3+6 FROM Osoby;
Cokolwiek ImiÄ™ 3+6
Cokolwiek Rafał 9
Cokolwiek Marek 9
Cokolwiek Kamil 9
Copyright© mgr inż. RafaÅ‚ MikoÅ‚ajczak Kopiowanie i rozpowszechnianie zabronione
Cokolwiek Zdzisław 9
A teraz niewielka zmiana:
SELECT Cokolwiek , ImiÄ™, 3+6 FROM Osoby;
Cokolwiek ImiÄ™ 3+6
Cokolwiek Rafał 3+6
Cokolwiek Marek 3+6
Cokolwiek Kamil 3+6
Cokolwiek Zdzisław 3+6
, bo oczywiście 3+6 ujęte w pojedynczy cudzysłów to już łańcuch znaków a nie wyrażenie
algebraiczne.
W instrukcji SELECT możemy także dokonywać obliczeń na kolumnach:
SELECT ImiÄ™, Zarobki, Zarobki*3 FROM Osoby;
ImiÄ™ Zarobki Zarobki*3
Rafał 100 300
Marek 200 600
Kamil 50 150
Zdzisław 300 900
A nawet tak:
SELECT ImiÄ™, Zarobki, Dochody, Dochody Zarobki FROM Osoby;
ImiÄ™ Zarobki Dochody Dochody - Zarobki
Rafał 100 200 100
Marek 200 250 50
Kamil 50 500 450
Zdzisła
300 120 -180
w
Operatory arytmetyczne
Język SQL posiada kilka typów operatorów arytmetycznych, które można wykorzystać w obliczeniach,
zapytaniach czy podczas zakładania filtrów. W kolejności wykonywania działań przedstawiają się one
następująco:
( ) - Nawiasy;
/ - Dzielenie;
* - Mnożenie;
Copyright© mgr inż. RafaÅ‚ MikoÅ‚ajczak Kopiowanie i rozpowszechnianie zabronione
- - Odejmowanie;
+ - Dodawanie;
Przykład wykorzystania:
SELECT ImiÄ™, (((0.19 * Zarobek) + 100)*2) FROM Osoby;
ImiÄ™ (((0.19 * Zarobek) + 100)*2)
Rafał 238
Marek 476
Kamil 219
Zdzisław 714
Instrukcja AS
Instrukcja AS służy do przypisywania kolumnom lub wyrażeniom innych nazw.
Składnia takiej instrukcji wygląda następująco:
SELECT wyrażenie_1 [AS alias], wyrażenie_2 [AS alias] ,...
FROM nazwa_tabeli [lista_tabel]
[WHERE warunek];
Np.:
SELECT Imię, (((0.19 * Zarobek) + 100)*2) AS Podwyżka FROM Osoby;
Imię Podwyżka
Rafał 238
Marek 476
Kamil 219
Zdzisław 714
Filtrowanie wyników zapytania za pomocą klauzuli WHERE
Operatory do porównań:
= - Równy;
<>, != - Nierówny;
> - Większy;
< - Mniejszy;
>= - Większy lub równy;
Copyright© mgr inż. RafaÅ‚ MikoÅ‚ajczak Kopiowanie i rozpowszechnianie zabronione
<= - Mniejszy lub równy;
Przykłady:
SELECT ImiÄ™ FROM Osoby WHERE Id=3;
ImiÄ™
Kamil
SELECT Id, ImiÄ™ FROM Osoby WHERE Zarobki < 250;
Id ImiÄ™
1 Rafał
2 Marek
3 Kamil
SELECT Imię FROM Osoby WHERE Imię <> 'Rafał';
ImiÄ™
Marek
Kamil
Zdzisław
SELECT ImiÄ™, Zarobki, Dochody FROM Osoby WHERE Dochody < Zarobki;
ImiÄ™ Zarobki Dochody
Zdzisław 300 120
SORTOWANIE WYNIKÓW ZAPYTAC
Składnia instrukcji SELECT używającej klauzuli ORDER BY wygląda następująco:
SELECT nazwy_kolumn
FROM nazwa_tabeli [ lista_tabel ]
[WHERE warunek]
[ORDER BY { kolumna, alias, pozycja} [ASC | DESC]]
SELECT Id, ImiÄ™, Zarobki, Dochody FROM Osoby ORDER BY ImiÄ™;
Id ImiÄ™ Zarobki Dochody
3 Kamil 50 500
2 Marek 200 250
Copyright© mgr inż. RafaÅ‚ MikoÅ‚ajczak Kopiowanie i rozpowszechnianie zabronione
1 Rafał 100 200
4 Zdzisław 300 120
ASC Ascending rosnÄ…co;
DESC Descending malejÄ…co;
Copyright© mgr inż. RafaÅ‚ MikoÅ‚ajczak Kopiowanie i rozpowszechnianie zabronione
Wyszukiwarka
Podobne podstrony:
czesc12 dodwyk1wyk1 dCZESC1 (2)Motywacja i emocje w sluzbie reklamy czesc1Ekon Mat Wyk1 2015czesc12IB wyk1 11Teoria C 1D czesc1czesc1 wyk4swietemu bogu oddaj czesc1czesc1 wyk3czesc1czesc1więcej podobnych podstron