| Streszczenie | Kurs jest wprowadzeniem do technologii baz danych. Tematyka wykładu obejmuje problematykę modelowania danych, metodykę projektowania i implementacji relacyjnych baz danych (podstawowe zagadnienia), podstawy programowania aplikacji do baz danych i wybrane zagadnienia z zakresu zarządzania bazami danych. Relacyjny model danych jest omawiany zarówno od strony podstaw teoretycznych, jak i od strony praktycznych problemów implementacyjnych. W zakresie programowania aplikacji. Wykład zawiera wprowadzenie do języka SQL oraz omówienie technik konstruowania modułów programowych po stronie serwera i po stronie klienta. Ćwiczenia projektowe polegają na skonstruowaniu prostej bazy danych wraz z programem użytkowym - z wykorzystaniem narzędzi do projektowania i konstruowania baz danych i aplikacji. |
| Treść wykładu | - Baza danych, system zarządzania bazami danych, system bazy danych.Podstawowe własności bazy danych jako zorganizowanego zbioru danych. Dane a informacja: baza danych jako "magazyn informacji". Semantyka danych: obiekty rzeczywistego świata, atrybuty, związki, rekordy b.d. jako reprezentacja faktów. Rola SZBD. Interfejs użytkowy systemu bazy danych. Abstrakcyjny widok b.d. prezentowany na poziomie użytkowym. Model trójpoziomowy. Przegląd podstawowych zadań SZBD.
- Modele danych.Pojęcie modelu danych. Wstępna charakterystyka modelu relacyjnego, porównanie z modelami "przedrelacyjnymi": struktury danych i operacje widziane na poziomie użytkowym. Główne cechy modelu obiektowego. Modele danych w kontekście historii techlogii b.d.
- Model relacyjny w ujęciu nieformalnym. Własności tabeli jako implementacyjnej struktury danych w modelu relacyjnym. Dwa wymiary agregacji,przypisanie dziedzin wartości kolumnom, podstawowe operacje na tabelach, język operacji na tabelach jako język typu "set-at-a-time". Identyfikacja wierszy przez zawartość: pojecie klucza. Reprezentacja związków: pojęcie klucza obcego. Konfiguracja klas związków, min. i maks.krotność uczestnictwa (cardinality). Semantyczne warunki poprawności (Integrity constraints) dotyczące kluczy i kluczy obcych.
- Wprowadzenie do projektowania baz danych. Model ER. Zasady opisu struktury bazy danych w kategoriach klas encji i klas związków. Podstawowe decyzje projektowe na poziomie konceptualnym (przekształcenie klas związków do klas encji, problem atrybutów wielowartościowych, klasy encji o identyfikacji zewnętrznej, problem atrybutów opcjonalnych, itd. Zasady normalizacji (ujęcie nieformalne). Odwzorowanie do modelu relacyjnego. Specyfikacja struktury b.d. w DDL. Definiowanie dziedzin i semantycznych warunków poprawności. Opis struktury b.d. w słowniku danych.
- Język SQL.Konstrukcje DML. Konstrukcje DQL: wyrażenie SELECT jako specyfikacja sekwencji operacji na tabelach. Sładnia i semantyka podstawowych postaci wyrażenia SELECT, pojęciowa kolejność przetwarzania sekcji (klauzul). Wyrażenia akceptowalne w poszczególnych klauzulach. Konstrukcje wielopoziomowe: podzapytania skorelowane i nieskorelowane. Zasady formułowania zapytań w postaci wyrażeń SELECT: postacie równoważne. Semantya deklaratywna i semantyka proceduralna wyrażeń SELECT. Logika trójwartościowa w SQL: problem "wartości brakujących", anomalie związane ze znacznikiem NULL. Tabele wirtualne (tzw. perspektywy), dopuszczlne operacje na tabelach wirtualnych. Specyfikowanie złożonych warunków poprawności (frazy CHECK z podzapytaniami).
- Zarys matematycznych podstaw modelu relacyjnego. Relacja jako matematyczny model zbioru rekordów. Relacja, zmienna relacyjna, schemat relacji. Warunki poprawności w ujęciu formalnym. Przegląd operatorów algebry relacyjnej (z rozszerzeniem Date'a).
- Programowanie aplikacji do baz danych - wprowadzenie. Konstruowanie i programowanie aplikacji po stronie klienta. Poziom wywołań procedur API (CLI, ODBC...) - krótka charakterystyka. Poziom Embedded SQL: przekazywanie danych z/do programu użytkowego, kursory. Poziom wyspecjalizowanych klas obiektów w środowiskach do konstruowania aplikacji-porównanie (SQL* Forms, Visual, Basic, Delphi, Power Builder...).
Programowanie aplikacji po stronie serwera. Rozszerzenia proceduralne SQL. Konstrukcja procedur wbudowanych, procedury wyzwalane zdarzeniami - Ochrona spójności baz danych. Podstawowe problemy spójności bazy danych. Pojęcie transakcji. Mechanizmy zarządzaniam transakcjami w SZBD. Mechanizmy zarządzania współbieżnym dostępem do b.d.
- Wprowadzenie do organizacji fizycznej relacyjnych baz danych. Fizyczne rozmieszczenie tabel w pamięci zewnętrznej. Podział na bloki, adresowanie bloków. Rozwiązania organizacyjne i mechanizmy usprawniające dostęp do danych. Organizacja indeksów. Zasady korzystania z mechanizmów dostępu, podstawy optymalizajci zapytań.
|
| Zakres projektu | - Projektowanie baz danych: zaprojektowanie za pomocą narzędzia CASE struktury bazy danych dla prostego systemu informacyjnego i zdefiniowanie jej implementacji relacyjnej.
- Programowanie aplikacji klienckich do baz danych: opracowanie poleceń w języku SQL realizujących zadane operacje na bazie danych i wbudowanie ich w prosty interakcyjny program użytkowy skonstruowany w środowisku narzędzia do budowy aplikacji
- Programowanie aplikacji po stronie serwera: opracowanie pakietu procedur wbudowanych w bazę danych (w tym również procedur wyzwalanych zdarzeniami), realizujących zadane operacje.
- Podstawy optymalizacji zapytań: zbadanie przebiegu wykonania zapytań w zależności od zdefiniowanych ścieżek dostępu i postaci zapytań.
|
| Literatura | - C.J. Date, Wprowadzenie do systemu baz danych, WNT, Warszawa 2000.
- J.D. Vilman, J.D. Widom, Podstawowy wykład z systemów baz danych, WNT, Warszawa 2001.
- H. Rybiński, M. Muraszkiewicz, Relacyjne bazy danych
- Elmasri, Ramez, Navathe, Shamkant, Fundamentals of database systems, Aodison-Wesley, 2000.
. |