BAZY DANYCH Integralność referencyjna

Transkrypt

BAZY DANYCH Integralność referencyjna
BAZY DANYCH
Integralność encji
• Każda tabela musi mieć klucz główny.
• Kolumna lub kolumny wybrane jako klucz główny
powinny być jednoznaczne i nie zawierać wartości
NULL.
WYKŁAD 4
Etapy projektowania relacyjnej bazy danych.
Zapytania zagnieżdżone.
(Wybrane materiały)
Dr inż. E. Busłowska
Copyright © 2014-2015 E. Busłowska.
1
Copyright © 2014-2015 E. Busłowska.
2
Integralność referencyjna
Referencje
• Referencja - zgodność wartości klucza głównego jednej
relacji z wartościami klucza obcego innej relacji,
• Integralność referencyjna pomaga zapewnić poprawność
danych,
• Pozwala uniknąć przypadkowego usunięcia powiązanych
danych.
Copyright © 2014-2015 E. Busłowska.
3
Copyright © 2014-2015 E. Busłowska.
4
Etapy projektowania
relacyjnej bazy danych
Usuwanie wierszy z tabeli powiązanej
• Usunięcie wiersza tabeli klucza głównego jest zabronione, dopóki
nie zostaną usunięte (lub zmodyfikowane) wiersze z tabel, których
wartości kluczy obcych stałyby się wskutek tej operacji
nieaktualne.
• Usuwanie kaskadowe powoduje że, usunięcie wiersza z tabeli po
stronie klucza głównego powoduje automatyczne usunięcie z tabel
powiązanych wszystkich wierszy, dla których wartości kluczy
obcych stały by się nieaktualne.
Copyright © 2014-2015 E. Busłowska.
• Referencje (związki) - zależności między
relacjami określające wzajemne powiązania
• Typy:
Jednojednoznaczne (jeden do jeden),
Jednoznaczne (wiele do jeden lub jeden do
wiele),
Wieloznaczne (wiele do wiele).
5
• Określenie przeznaczenia bazy danych,
• Określenie relacji, które są potrzebne w bazie
danych,
• Określanie schematów tabel,
• Atrybuty tabeli powinny opisywać obiekt
reprezentowany przez tabelę,
• Przypisanie polom jednoznacznych wartości w
każdym rekordzie,
Copyright © 2014-2015 E. Busłowska.
6
1
Etapy projektowania
relacyjnej bazy danych
Optymalne projektowanie tabel
• Określenie zależności między tabelami,
• Wprowadzenie przykładowych danych i utworzenie
niezbędnych obiektów bazy danych,
• Testowanie projektu i wykrywanie ewentualnych
usterek,
• Utworzenie formularzy, stron dostępu do danych oraz
modułów,
• Sprawdzanie praktyczne projektu u zamawiającego.
Copyright © 2014-2015 E. Busłowska.
• Projektowane tabele baz danych nie mogą zawierać
nadmiarowości,
• Należy wybrać typ danych wymagający możliwie
najmniej pamięci i odpowiedni dla danych
przechowywanych w polu,
• Należy tworzyć indeksy dla pól, które są porządkowane,
7
ZAPYTANIA ZŁOŻONE
• Podzapytanie może być użyta na liście pól
instrukcji:
SELECT
FROM
WHERE
HAVING
9
Zapytania proste zwracające pojedynczą wartości
SELECT
Nazwisko, Imie
FROM Pracownicy
WHERE stanowisko =
(SELECT
stanowisko
FROM Pracownicy
WHERE nazwisko='King'
and imie ='Robert');
8
ZAPYTANIA ZŁOŻONE
• Zapytania w których podzapytanie może
zwrócić dokładnie jedną wartość,
• Zapytania w których podzapytanie może
zwrócić wiele wartości,
• Zapytania skorelowane,
• Zapytania hierarchiczne.
Copyright © 2014-2015 E. Busłowska.
Copyright © 2014-2015 E. Busłowska.
Copyright © 2014-2015 E. Busłowska.
10
Podzapytania w instrukcji WHERE
• W wewnętrznej instrukcji SELECT można
wykorzystywać również funkcje agregujące do
podawania pojedynczej wartości
Zapytanie zewnętrzne
uruchamiane na końcu
Operator porównania
SELECT Model
FROM Samochody
WHERE CenaJednostkowa>(select AVG(cenaJednostkowa)
from Samochody);
Zapytanie wewnętrzne
uruchamiane na początku
Copyright © 2014-2015 E. Busłowska.
11
Copyright © 2014-2015 E. Busłowska.
12
2
Zapytania równoległe
Podzapytania w instrukcji HAVING
SELECT IDUmowy
FROM Umowy
WHERE idKlienta =
(SELECT IDklienta
FROM Klienci
WHERE Kraj =
(SELECT distinct kraj
FROM klienci
WHERE Adres =
'Zwycięstwa 4/5') and miasto=
(SELECT miasto FROM klienci
WHERE Nazwisko like 'Kow%')
);
Zapytanie zewnętrzne
uruchamiane na końcu
Zapytanie
wewnętrzne 1
Zapytanie wewnętrzne
uruchamiane
na początku
Zapytanie
wewnętrzne 2
Copyright © 2014-2015 E. Busłowska.
13
SELECT COUNT(*), Model
FROM Samochody
GROUP BY Model
HAVING COUNT(*)=
(SELECT MAX(COUNT(*))
FROM Samochody
GROUP BY Model);
Copyright © 2014-2015 E. Busłowska.
14
Zapytania parametrycze
SELECT Nazwisko
FROM Klienci
WHERE Kraj = ‘&&KR’ AND Miasto = ‘&MT’;
&& - przy ponownym uruchomieniu następuje podstawienie
wcześniejszych wartości zmiennych
& - nie zapamiętuje wcześniej podanych wartości
Copyright © 2014-2015 E. Busłowska.
15
3