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