Bazy danych

From Studia Informatyczne

Spis treści

Forma zajęć

Wykład (30 godzin) + laboratorium (30 godzin).

Opis

Celem przedmiotu jest zapoznanie studentów z podstawowymi pojęciami i koncepcjami technologii systemów baz danych, niezbędnymi do poprawnego projektowania, korzystania i implementacji systemów baz danych i ich aplikacji. W ramach tego przedmiotu studenci zapoznają się przede wszystkim z podstawowymi zasadami modelowania i projektowania baz danych, relacyjnym modelem danych, standardowym językiem baz danych SQL, normalizacją schematów logicznych baz danych oraz logiczną organizacją i podstawowymi strukturami fizycznymi danych wykorzystywanymi w systemach baz danych.

Sylabus

Autor

  • Tadeusz Morzy — Politechnika Poznańska

Wymagania wstępne

  • Podstawowe wiadomości z zakresu: architektury sprzętowo-programowej komputerów, dowolnych języków programowania, algebry.

Zawartość

  • Wykłady:
    • Pierwszą część kursu stanowią dwa moduły (4 godz.) poświęcone wprowadzeniu do problematyki baz danych i relacyjnemu modelowi danych. W ramach tej części kursu zostaną omówione następujące zagadnienia: podstawowa terminologia stosowana w czasie kursu, charakterystyka baz danych, wymagania stawiane bazom danych, cechy technologii baz danych, cechy systemu zarządzania bazą danych, wprowadzenie do modeli danych, charakterystyka użytkowników baz danych, charakterystyka sposobów korzystania z bazy danych, architektury: wewnętrzna i komunikacyjna baz danych, ogólny podział baz danych, relacyjny model danych z uwzględnieniem struktur danych tego modelu, operacji modelu i ograniczeń integralnościowych.
    • Kolejny moduł kursu (7 godz.) jest poświęcony modelowaniu schematów pojęciowych i schematów implementacyjnych w modelu relacyjnym. W ramach tej części kursu zostaną omówione następujące zagadnienia: wprowadzenie do modelowania i projektowania systemów informatycznych; model związków-encji (jako jeden z fundamentalnych modeli wykorzystywanych przy projektowaniu relacyjnych baz danych) z uwzględnieniem encji i ich atrybutów, różnego typu związków pomiędzy encjami oraz hierarchii encji; techniki transformacji modelu związków-encji do modelu relacyjnego (transformacje encji, transformacje związków i transformacje hierarchii encji); proces normalizacji schematu logicznego poprzedzony przykładem ilustrującym problem, zależności funkcyjne stanowiące punkt wyjścia procesu normalizacji, postaci normalne (pierwsza, druga, trzecia i czwarta).
    • Trzeci moduł kursu (5 godz.) jest poświęcony fizycznej organizacji danych. W ramach tej części kursu zostaną omówione następujące zagadnienia: struktura przechowywania danych i organizacja rekordów w blokach, rodzaje organizacji plików, czyli pliki nieuporządkowane, uporządkowane i haszowe, mechanizmy i koszty dostępu do różnych organizacji plikowych, techniki rozwiązywania kolizji; wprowadzenie do problematyki indeksowania danych, charakterystyka różnego rodzaju indeksów (podstawowy, zgrupowany, wtórny, rzadki i gęsty), indeks wielopoziomowy statyczny (ISAM), indeks wielopoziomowy dynamiczny (B+-drzewo), algorytm wstawiania danych do indeksu B+-drzewo.
    • Czwarty moduł kursu (7 godz.) jest poświęcony problematyce zarządzania transakcjami w bazie danych. W ramach tej części kursu zostaną omówione następujące zagadnienia: transakcja i jej własności, formalny model transakcji, sekwencyjne i współbieżne realizacje zbioru transakcji, uszeregowalność transakcji, podstawowe algorytmy zarządzania współbieżnym wykonywaniem transakcji, tj. algorytm blokowania dwufazowego, zjawisko zakleszczenia i algorytmy jego rozwiązywania, problem duchów, hierarchiczny algorytm blokowania dwufazowego (będący podstawowym algorytmem zarządzania współbieżnym wykonywaniem transakcji w komercyjnych systemach baz danych), algorytm porządkowania transakcji według etykiet czasowych i algorytm optymistyczny.
    • Piąty moduł kursu (2 godz.) jest poświęcony mechanizmom odtwarzania bazy danych po awarii. W ramach tej części kursu zostaną omówione następujące zagadnienia: wprowadzenie do modeli awarii, ogólna architektura modułu odtwarzania, mechanizmy generowanie rekordów logu oraz procedury Rollback oraz Roll Forward algorytmu odtwarzania spójnego stanu bazy danych, problem poprawności przedstawionych procedur, strategia Write-Ahead-Log (WAL), gwarantującą poprawność algorytmu odtwarzania, punkty kontrolne pliku logu.
    • Ostatni moduł kursu (4 godz.) jest poświęcony problemom wykonywania i optymalizacji zapytań w systemach baz danych. W ramach tej części kursu zostaną omówione następujące zagadnienia: poszczególne fazy przetwarzania zapytań (analiza, normalizacja, analiza semantyczna, upraszczanie, restrukturyzacja), algebraiczne reguły transformacji zapytań, technika przepisywania zapytań jako ważny mechanizm optymalizacji wykonywania zapytań, kosztowa optymalizacja zapytań, problematyka szacowania rozmiarów wyników pośrednich wykonania podstawowych operacji w systemie bazy danych, koncepcja histogramów i ich wykorzystanie w szacowaniu wyników operacji, typy drzew zapytań i zagadnienie określania porządku wykonywania operacji połączenia.
  • Laboratoria:
    • Pierwszą część zajęć laboratoryjnych kursu stanowi moduł (2 godz.) poświęcony wprowadzeniu do języka SQL. Zostaną tu omówione m.in.: grupy poleceń SQL, ogólna składnia poleceń, podstawowe polecenie wyszukiwania danych, czyli SELECT, wybór wierszy za pomocą klauzuli WHERE, porządkowanie wyników zapytania za pomocą klauzuli ORDER BY.
    • Drugi moduł (4 godz.) jest poświęcony funkcjom SQL. Zostaną tu omówione podstawowe funkcje operujące na pojedynczych wierszach (funkcje znakowe, numeryczne i daty), funkcje obliczające agregaty (SUM, MIN, MAX, AVG, COUNT).
    • Trzeci moduł (3 godz.) jest poświęcony łączeniu tabel. W ramach modułu zostaną przedstawione: połączenia równościowe, nierównościowe, połączenia zewnętrzne i połączenia rekursywne (tabeli samej z sobą).
    • Czwarty moduł (2 godz.) jest poświęcony podzapytaniom. Zostaną tu omówione podzapytania zwykłe i skorelowane.
    • Piąty moduł (2 godz.) jest poświęcony tzw. językowi manipulowania danych (DML), umożliwiającemu wstawianie, modyfikowanie i usuwanie danych z tabel. Odpowiednio, zostaną tu omówione polecenia INSERT, UPDATE i DELETE.
    • Szósty moduł (4 godz.) jest przeznaczony na tzw. język definiowania danych (DDL), w ramach którego zostaną omówione polecenia tworzenia, modyfikowania i usuwania tabel oraz polecenia tworzenia i zarządzania ograniczeniami integralnościowymi.
    • Siódmy moduł (3 godz.) ilustruje mechanizm zarządzania współbieżnym wykonywaniem transakcji, opierający się na blokowaniu. W ramach modułu zostaną omówione różnego typu blokady i ich kompatybilność. Zilustrowany przykładem zostanie również problem zakleszczenia i sposób jego rozwiązania.
    • Ósmy moduł (2 godz.) wprowadza do projektowania aplikacji baz danych z wykorzystaniem sterowników JDBC. Zostanie tu omówiony sposób dostępu do bazy danych z poziomu programów w Java.
    • Dziewiąty moduł (6 godz.) jest poświęcony językowi PL/SQL, będącemu rozszerzeniem języka SQL o mechanizmy programowania proceduralnego. W ramach modułu zostaną omówione następujące zagadnienia: składnia programów w języku PL/SQL, definiowanie zmiennych i stałych, podstawowe konstrukcje sterujące (pętle, instrukcje warunkowe), mechanizmy kursorów i wyjątków, programowanie procedur, funkcji i pakietów składowanych w bazie danych.
    • Dziesiąty moduł (2 godz.) ilustruje mechanizmy autoryzacji dostępu do bazy danych. Zostaną tu omówione m.in.: uprawnienia systemowe użytkowników, uprawnienia obiektowe użytkowników i polecenia zarządzania tymi uprawnieniami.

Literatura

  • Wykłady:
    • Date C. J., An Introduction to Database System, vol. II, Adison-Wesley Pub. Comp., również WNT – W-wa, (seria: Klasyka Informatyki), 2000
    • Elmasri R., Navathe S., Fundamentals of Database Systems, Adison-Wesley Pub. Comp.,(4th Edition), 2002
    • Garcia-Molina H., Ullman J.D., Widom J., Implementacja systemów baz danych, WNT, 2003 (seria: Klasyka Informatyki)
    • Ullman J.D., Principles of database and knowledge base systems, Vol. I and II, Computer Science Press, Rockville, Maryland, 1989
    • J.D. Ullman, J. Widom, Podstawowy wykład z systemów baz danych, WNT, W-wa, 2000 (seria: Klasyka Informatyki)
    • Elmasri R., Navathe S., Wprowadzenie do systemów baz danych, Wyd. Helion, (4th Edition), 2005
    • R. Ramakrishnan, J. Gehrke, Database Management Systems, 2nd edition, WCB/McGraw-Hill, 2001
  • Laboratoria:
    • M. Szeliga: ABC języka SQL. HELION.
    • A. Jakubowski: Podstawy SQL. Ćwiczenia praktyczne. HELION.
    • M. Gruber: SQL. HELION.
    • R. Coburn: SQL dla każdego. HELION.
    • D. C. Kreines: Oracle SQL: The Essential Reference. O'REILLY.
    • R. Wrembel, W. Wieczerzycki: Projektowanie aplikacji bazy danych Oracle. NAKOM.
    • R. Wrembel, J. Jezierski, M. Zakrzewicz: Oracle 7 i 8. NAKOM.
    • S. Feuerstein, A. Odewahn: Oracle PL/SQL Developer's Workbook. O'REILLY.
    • S. Mishra, A. Beaulieu: Mastering Oracle SQL. O'REILLY.
    • B. Pribyl, S. Feuerstein: Oracle PL/SQL. Wprowadzenie. HELION.
    • S. Feuerstein, B. Pribyl, C. Dawes: Język Oracle PL/SQL. Leksykon podstawowy. HELION.
    • D. Bates: JDBC: Leksykon kieszonkowy. O'REILLY.
    • B. Lakshman: Oracle i Java. Programowanie. MIKOM.

Moduły