Integralność encji
Każda tabela musi mieć klucz główny.
BAZY DANYCH
Kolumna lub kolumny wybrane jako klucz główny
powinny być jednoznaczne i nie zawierać wartości
WYKAAD 5
NULL.
Etapy projektowania relacyjnej bazy danych.
Zapytania zagnieżdżone.
(Wybrane materiały)
Dr inż. E. Busłowska
Copyright © 2009-2010 E. BusÅ‚owska. All rights reserved. 1 Copyright © 2009-2010 E. BusÅ‚owska. All rights reserved. 2
Integralność referencyjna Referencje
Referencje (związki) - zależności między
Referencja - zgodność wartości klucza głównego jednej
relacjami określające wzajemne powiązania
relacji z wartościami klucza obcego innej relacji,
Typy:
Integralność referencyjna pomaga zapewnić poprawność
danych,
Jednojednoznaczne (jeden do jeden),
Pozwala uniknąć przypadkowego usunięcia powiązanych
Jednoznaczne (wiele do jeden lub jeden do
danych.
wiele),
Wieloznaczne (wiele do wiele).
Copyright © 2009-2010 E. BusÅ‚owska. All rights reserved. 3 Copyright © 2009-2010 E. BusÅ‚owska. All rights reserved. 4
Etapy projektowania
Usuwanie wierszy z tabeli powiÄ…zanej
relacyjnej bazy danych
Określenie przeznaczenia bazy danych,
Usunięcie wiersza tabeli klucza głównego jest zabronione,
Określenie relacji, które są potrzebne w bazie
dopóki nie zostaną usunięte (lub zmodyfikowane) wiersze z
tabel, których wartości kluczy obcych stałyby się wskutek tej
danych,
operacji nieaktualne.
Określanie schematów tabel,
Usuwanie kaskadowe powoduje że, usunięcie wiersza z
tabeli po stronie klucza głównego powoduje automatyczne
Atrybuty tabeli powinny opisywać obiekt
usunięcie z tabel powiązanych wszystkich wierszy, dla
reprezentowany przez tabelÄ™,
których wartości kluczy obcych stały by się nieaktualne.
Przypisanie polom jednoznacznych wartości
w każdym rekordzie,
Copyright © 2009-2010 E. BusÅ‚owska. All rights reserved. 5 Copyright © 2009-2010 E. BusÅ‚owska. All rights reserved. 6
1
Etapy projektowania
Optymalne projektowanie tabel
relacyjnej bazy danych
Projektowane tabele baz danych nie mogÄ…
Określenie zależności między tabelami,
zawierać nadmiarowości,
Wprowadzenie przykładowych danych i utworzenie
Należy wybrać typ danych wymagający możliwie
niezbędnych obiektów bazy danych,
najmniej pamięci i odpowiedni dla danych
Testowanie projektu i wykrywanie ewentualnych
przechowywanych w polu,
usterek,
Należy tworzyć indeksy dla pól, które są
Utworzenie formularzy, stron dostępu do danych
porzÄ…dkowane,
oraz modułów,
Sprawdzanie praktyczne projektu u zamawiajÄ…cego.
Copyright © 2009-2010 E. BusÅ‚owska. All rights reserved. 7 Copyright © 2009-2010 E. BusÅ‚owska. All rights reserved. 8
ZAPYTANIA ZAOŻONE
ZAPYTANIA ZAOŻONE
Zapytania w których podzapytanie może Podzapytanie może być użyta na liście pól
zwrócić dokładnie jedną wartość, instrukcji:
Zapytania w których podzapytanie może SELECT
zwrócić wiele wartości,
FROM
Zapytania skorelowane,
WHERE
Zapytania hierarchiczne.
HAVING
Copyright © 2009-2010 E. BusÅ‚owska. All rights reserved. 9 Copyright © 2009-2010 E. BusÅ‚owska. All rights reserved. 10
Zapytania proste zwracające pojedynczą wartości
Podzapytania w instrukcji WHERE
SELECT
Zapytanie zewnętrzne
W wewnętrznej instrukcji SELECT można
Nazwisko, Imie
uruchamiane na końcu
FROM Pracownicy wykorzystywać również funkcje agregujące
WHERE stanowisko =
do podawania pojedynczej wartości
Operator porównania
(SELECT
stanowisko
SELECT Model
Zapytanie wewnętrzne
FROM Pracownicy
FROM Samochody
uruchamiane na poczÄ…tku
WHERE
WHERE CenaJednostkowa>(select AVG(cenaJednostkowa)
nazwisko='King' and
from Samochody);
imie ='Robert');
Copyright © 2009-2010 E. BusÅ‚owska. All rights reserved. 11 Copyright © 2009-2010 E. BusÅ‚owska. All rights reserved. 12
2
Zapytania równoległe
Podkwerenda w instrukcji HAVING
Zapytanie zewnętrzne
SELECT IDUmowy
uruchamiane na końcu
SELECT COUNT(*), Model
FROM Umowy
WHERE idKlienta =
FROM Samochody
(SELECT IDklienta
FROM Klienci
GROUP BY Model
WHERE Kraj =
(SELECT distinct kraj HAVING COUNT(*)=
Zapytanie
Zapytanie wewnętrzne
FROM klienci
wewnętrzne 1
uruchamiane
(SELECT MAX(COUNT(*))
WHERE Adres =
na poczÄ…tku
'Zwycięstwa 4/5') and miasto=
FROM Samochody
(SELECT miasto FROM klienci Zapytanie
wewnętrzne 2
WHERE Nazwisko like 'Kow%')
GROUP BY Model);
);
Copyright © 2009-2010 E. BusÅ‚owska. All rights reserved. 13 Copyright © 2009-2010 E. BusÅ‚owska. All rights reserved. 14
Wielowartościowe operatory porównania
IN - równy dowolnej wartości podawanej przez wewnętrzną instrukcję SELECT
Zapytania proste zwracające wiele wartości
Not IN - różny od wszystkich wartości podawanych przez wewnętrzną instrukcję
SELECT
SELECT Model
=ANY działa tak jak IN odpowiednik logicznego or
Zapytanie zewnętrzne
> ANY, >= ANY większy bądz większy-równy dowolnej wartości podawanej
FROM Samochody uruchamiane na końcu
przez wewnętrzną instrukcję SELECT
< ANY, <= ANY - mniejszy bądz mniejszy-równy dowolnej wartości podawanej
WHERE IdDealera In
przez wewnętrzną instrukcję SELECT
Wielowartościowy
operator porównania
= ALL - równy wszystkich wartości podawanych przez wewnętrzną instrukcję
(Select IdDealera
SELECT
> ALL, >= ALL - większy bądz większy-równy wszystkim wartościom podawanym
Zapytanie wewnętrzne
FROM Dealerzy
przez wewnętrzną instrukcję SELECT uruchamiane na początku
< ALL, <= ALL - mniejszy bądz mniejszy-równy wszystkim wartościom
WHERE miasto='Warszawa');
podawanym przez wewnętrzną instrukcję SELECT
Copyright © 2009-2010 E. BusÅ‚owska. All rights reserved. 15 Copyright © 2009-2010 E. BusÅ‚owska. All rights reserved. 16
SÅ‚owo kluczowe ALL
SÅ‚owo kluczowe ANY
SELECT Model SELECT Model
FROM Samochody FROM Samochody
WHERE CenaJednostkowa)>ANY (SELECT WHERE CenaJednostkowa)
CenaJednostkowa CenaJednostkowa
FROM SAMOCHODY S, DEALERZY D FROM SAMOCHODY S, DEALERZY D
WHERE S.IdDealera=D.IdDealera AND WHERE S.IdDealera=D.IdDealera AND
NazwaFirmy= Honda ); NazwaFirmy= Honda );
Copyright © 2009-2010 E. BusÅ‚owska. All rights reserved. 17 Copyright © 2009-2010 E. BusÅ‚owska. All rights reserved. 18
3
SÅ‚owo kluczowe ALL w klauzuli HAVING Zapytania wielokrotne
SELECT Nazwisko, Count(*) liczba, Stanowisko SELECT Nazwisko, Count(*) Ile
FROM Pracownicy P, Umowy U
FROM Pracownicy p, Umowy U
WHERE P.IDpracownika = U.IDpracownika
WHERE P.IDpracownika = U.IDpracownika
GROUP BY P.Idpracownika, Nazwisko
GROUP BY Nazwisko, Stanowisko
HAVING COUNT(*) >=ALL
HAVING Count(*) >= ALL
(SELECT Count(*)
(SELECT Count(*) FROM Umowy
WHERE idPracownika IN
FROM Pracownicy pr,Umowy Um
(SELECT IdPracownika
WHERE Pr.IDpracownika = Um.IDpracownika AND
FROM Pracownicy WHERE kraj = Francja )
stanowisko= Przedstawiciel handlowy
GROUP BY idpracownika);
GROUP BY Pr.IdPracownika, Nazwisko);
Copyright © 2009-2010 E. BusÅ‚owska. All rights reserved. 19 Copyright © 2009-2010 E. BusÅ‚owska. All rights reserved. 20
Zapytania skorelowane (współzależne)
Zapytania z predykatem EXISTS
SELECT Nazwisko,Imię, Stanowisko, EXISTS czy zapytanie podrzędne przekazało
chociażby jedną wartość
Wynagrodzenie
NOT EXISTS czy zapytanie podrzędne nie
FROM Pracownicy P1
przekazało żadnej wartość
WHERE Wynagrodzenie >=
SELECT NazwaFirmy
(SELECT Avg(Wynagrodzenie)
FROM Dealerzy D
WHERE EXISTS
FROM Pracownicy P2
(SELECT *
WHERE
FROM Samochody S
P2.Stanowisko=P1.Stanowisko)
WHERE D.IdDealera =S.IdDealera
Order by Stanowisko; AND PojSilnika=2500);
Copyright © 2009-2010 E. BusÅ‚owska. All rights reserved. 21 Copyright © 2009-2010 E. BusÅ‚owska. All rights reserved. 22
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 © 2009-2010 E. BusÅ‚owska. All rights reserved. 23
4
Wyszukiwarka
Podobne podstrony:
SGE s3 II nst w08
s3 5 3
W5 Tranzystor
w5 PSYCH
mdi s3 prd3
Zaopatrzenie w wod kan W5
biologia 02 s3
s3 5 4
PK W5
KC K W5
mdi s3 prd2
S3
4OS 11 w5
W5 Rodzina jako system
OBWODY ELEKTRYCZNE i MAGNETYCZNE w5
Trimble S3 str11
więcej podobnych podstron