MIMINF:Bazy danych: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Diks (dyskusja | edycje)
Diks (dyskusja | edycje)
Nie podano opisu zmian
 
(Nie pokazano 7 pośrednich wersji utworzonych przez tego samego użytkownika)
Linia 4: Linia 4:


== Opis ==
== Opis ==
Podstawowe pojęcia i koncepcje technologii systemów baz danych niezbędne do poprawnego projektowania, korzystania i implementacji systemów baz danych i ich aplikacji. Podstawowe zasady modelowania i projektowania baz danych. Relacyjny model danych, język zapytań SQL. Normalizacja schematów logicznych baz danych. Logiczna organizacja. Podstawowe struktury fizycznymi danych wykorzystywanymi w systemach baz danych.
Funkcje i struktury systemów baz danych oraz przegląd modeli danych. Relacyjne bazy danych. Języki zapytań do relacyjnych baz danych (algebra relacji, logika pierwszego rzędu, SQL i Datalog). Projektowanie baz danych, teoria postaci normalnych i modelowanie encja-związek. Fizyczne aspekty wykonywania zapytań i składowania danych, metody optymalizacji zapytań, przetwarzanie transakcji i rozproszone bazy danych.


== Sylabus ==
== Sylabus ==


=== Autor ===
=== Autor ===
* Tadeusz Morzy — Politechnika Poznańska
* Krzysztof Stencel — Uniwersytet Warszawski, Wydział Matematyki, Informatyki i Mechaniki, Instytut Informatyki


=== Wymagania wstępne ===
=== Wymagania wstępne ===


* Podstawowe wiadomości z zakresu: architektury sprzętowo-programowej komputerów, dowolnych języków programowania, algebry.
* Architektura komputerów i sieci
* Podstawy matematyki
* Programowanie obiektowe


=== Zawartość ===
=== Zawartość ===
* '''Wykłady:'''
* Funkcje i struktura systemów baz danych.
** 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.
* Przegląd różnych modeli danych.
** 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).
* Relacyjny model danych.
** 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.
* Operacje algebry relacji i SQL jako przykłady języków zapytań.
** 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.
* Zależności funkcyjne i postaci normalne.
** 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.
* Modelowanie danych - poziom pojęciowy.
** 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.
* Modelowanie danych - poziom logiczny.
 
* Fizyczna organizacja danych w bazach danych.
* '''Laboratoria:'''
* Fizyczne aspekty wykonywania zapytań.
** 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.
* Modelowanie danych - poziom fizyczny.
** 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).
* Oprogramowanie strony serwera bazy danych.
** 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ą).
* Przetwarzanie transakcji.
** Czwarty moduł (2 godz.) jest poświęcony podzapytaniom. Zostaną tu omówione podzapytania zwykłe i skorelowane.
* Rozproszone bazy danych.
** 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 ===
=== Literatura ===
* '''Wykłady''':
* J. Ulmann, J. Widom, ''Podstawowy wykład z systemów baz danych'', WNT 2000.
**  Date C. J., An Introduction to Database System, vol. II, Adison-Wesley Pub. Comp., również WNT – W-wa, (seria: Klasyka Informatyki), 2000
* K. Stencel, L.Banachowski, ''Bazy danych. Projektowanie aplikacji na serwerze'', EXIT, 2001.
** 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 ==
*[[Bazy danych/Wykład 1| Wykład 1. Wprowadzenie do problematyki baz danych]], [http://elearning.cs.put.poznan.pl/mediawiki/flash_files/bd/BD-2st-1.2-w01.flash-1.1/player.html Flash], [[media:BD-2st-1.2-w01.tresc-1.1.pdf|PDF]], [[media:BD-2st-1.2-w01.tresc-1.1-kolor.pdf|PDF-kolor]], [http://elearning.cs.put.poznan.pl/mediawiki/flash_files/bd/BD-2st-1.2-w01.pytania-1.1/quizmaker.html Pytania]
 
*[[Bazy danych/Wykład 2| Wykład 2. Relacyjny model danych]], [http://elearning.cs.put.poznan.pl/mediawiki/flash_files/bd/BD-2st-1.2-w02.flash-1.1/player.html Flash], [[media:BD-2st-1.2-w02.tresc-1.1.pdf|PDF]], [[media:BD-2st-1.2-w02.tresc-1.1-kolor.pdf|PDF-kolor]], [http://elearning.cs.put.poznan.pl/mediawiki/flash_files/bd/BD-2st-1.2-w02.pytania-1.1/quizmaker.html Pytania]
 
*[[Bazy danych/Wykład 3| Wykład 3. Modelowanie danych: Model związków-encji]], [http://elearning.cs.put.poznan.pl/mediawiki/flash_files/bd/BD-2st-1.2-w03.flash-1.1/player.html Flash], [[media:BD-2st-1.2-w03.tresc-1.1.pdf|PDF]], [[media:BD-2st-1.2-w03.tresc-1.1-kolor.pdf|PDF-kolor]], [http://elearning.cs.put.poznan.pl/mediawiki/flash_files/bd/BD-2st-1.2-w03.pytania-1.1/quizmaker.html Pytania]
 
*[[Bazy danych/Wykład 4| Wykład 4. Transformacja modelu ER do modelu relacyjnego]], [http://elearning.cs.put.poznan.pl/mediawiki/flash_files/bd/BD-2st-1.2-w04.flash-1.1/player.html Flash], [[media:BD-2st-1.2-w04.tresc-1.1.pdf|PDF]], [[media:BD-2st-1.2-w04.tresc-1.1-kolor.pdf|PDF-kolor]], [http://elearning.cs.put.poznan.pl/mediawiki/flash_files/bd/BD-2st-1.2-w04.pytania-1.1/quizmaker.html Pytania]
 
*[[Bazy danych/Wykład 5| Wykład 5. Normalizacja schematów logicznych relacji]], [http://elearning.cs.put.poznan.pl/mediawiki/flash_files/bd/BD-2st-1.2-w05.flash-1.1/player.html Flash], [[media:BD-2st-1.2-w05.tresc-1.1.pdf|PDF]], [[media:BD-2st-1.2-w05.tresc-1.1-kolor.pdf|PDF-kolor]], [http://elearning.cs.put.poznan.pl/mediawiki/flash_files/bd/BD-2st-1.2-w05.pytania-1.1/quizmaker.html Pytania]
 
*[[Bazy danych/Wykład 6| Wykład 6. Organizacja plików]], [http://elearning.cs.put.poznan.pl/mediawiki/flash_files/bd/BD-2st-1.2-w06.flash-1.1/player.html Flash], [[media:BD-2st-1.2-w06.tresc-1.1.pdf|PDF]], [[media:BD-2st-1.2-w06.tresc-1.1-kolor.pdf|PDF-kolor]], [http://elearning.cs.put.poznan.pl/mediawiki/flash_files/bd/BD-2st-1.2-w06.pytania-1.1/quizmaker.html Pytania]
 
*[[Bazy danych/Wykład 7| Wykład 7. Indeksy]], [http://elearning.cs.put.poznan.pl/mediawiki/flash_files/bd/BD-2st-1.2-w07.flash-1.1/player.html Flash], [[media:BD-2st-1.2-w07.tresc-1.1.pdf|PDF]], [[media:BD-2st-1.2-w07.tresc-1.1-kolor.pdf|PDF-kolor]], [http://elearning.cs.put.poznan.pl/mediawiki/flash_files/bd/BD-2st-1.2-w07.pytania-1.1/quizmaker.html Pytania]
 
*[[Bazy danych/Wykład 8| Wykład 8. Przetwarzanie transakcyjne]], [http://elearning.cs.put.poznan.pl/mediawiki/flash_files/bd/BD-2st-1.2-w08.flash-1.1/player.html Flash], [[media:BD-2st-1.2-w08.tresc-1.1.pdf|PDF]], [[media:BD-2st-1.2-w08.tresc-1.1-kolor.pdf|PDF-kolor]], [http://elearning.cs.put.poznan.pl/mediawiki/flash_files/bd/BD-2st-1.2-w08.pytania-1.1/quizmaker.html Pytania]
 
*[[Bazy danych/Wykład 9| Wykład 9. Algorytmy zarządzania współbieżnym wykonywaniem transakcji - część I]], [http://elearning.cs.put.poznan.pl/mediawiki/flash_files/bd/BD-2st-1.2-w09.flash-1.1/player.html Flash], [[media:BD-2st-1.2-w09.tresc-1.1.pdf|PDF]], [[media:BD-2st-1.2-w09.tresc-1.1-kolor.pdf|PDF-kolor]], [http://elearning.cs.put.poznan.pl/mediawiki/flash_files/bd/BD-2st-1.2-w09.pytania-1.1/quizmaker.html Pytania]
 
*[[Bazy danych/Wykład 10| Wykład 10. Algorytmy zarządzania współbieżnym wykonywaniem transakcji - część II]], [http://elearning.cs.put.poznan.pl/mediawiki/flash_files/bd/BD-2st-1.2-w10.flash-1.1/player.html Flash], [[media:BD-2st-1.2-w10.tresc-1.1.pdf|PDF]], [[media:BD-2st-1.2-w10.tresc-1.1-kolor.pdf|PDF-kolor]], [http://elearning.cs.put.poznan.pl/mediawiki/flash_files/bd/BD-2st-1.2-w10.pytania-1.1/quizmaker.html Pytania]
 
*[[Bazy danych/Wykład 11| Wykład 11. Recovery – Transakcyjne odtwarzanie bazy danych po awarii]], [http://elearning.cs.put.poznan.pl/mediawiki/flash_files/bd/BD-2st-1.2-w11.flash-1.1/player.html Flash], [[media:BD-2st-1.2-w11.tresc-1.1.pdf|PDF]], [[media:BD-2st-1.2-w11.tresc-1.1-kolor.pdf|PDF-kolor]], [http://elearning.cs.put.poznan.pl/mediawiki/flash_files/bd/BD-2st-1.2-w11.pytania-1.1/quizmaker.html Pytania]
 
*[[Bazy danych/Wykład 12| Wykład 12. Optymalizacja zapytań - część I]], [http://elearning.cs.put.poznan.pl/mediawiki/flash_files/bd/BD-2st-1.2-w12.flash-1.1/player.html Flash], [[media:BD-2st-1.2-w12.tresc-1.1.pdf|PDF]], [[media:BD-2st-1.2-w12.tresc-1.1-kolor.pdf|PDF-kolor]], [http://elearning.cs.put.poznan.pl/mediawiki/flash_files/bd/BD-2st-1.2-w12.pytania-1.1/quizmaker.html Pytania]
 
*[[Bazy danych/Wykład 13| Wykład 13. Optymalizacja zapytań - część II]], [http://elearning.cs.put.poznan.pl/mediawiki/flash_files/bd/BD-2st-1.2-w13.flash-1.1/player.html Flash], [[media:BD-2st-1.2-w13.tresc-1.1.pdf|PDF]], [[media:BD-2st-1.2-w13.tresc-1.1-kolor.pdf|PDF-kolor]], [http://elearning.cs.put.poznan.pl/mediawiki/flash_files/bd/BD-2st-1.2-w13.pytania-1.1/quizmaker.html Pytania]
 
*[[BD-1st-2.4-lab1.tresc-1.1-toc| Ćwiczenie 1. Podstawy języka zapytań SQL.]], [http://osilek.mimuw.edu.pl/external/bd/BD-1st-2.4-lab1.tresc-1.1/player.html Flash], [[media:BD-1st-2.4-lab1.tresc-1.1.pdf|PDF]], [[media:BD-1st-2.4-lab1.tresc-1.1-kolor.pdf|PDF-kolor]]
 
*[[BD-1st-2.4-lab2.tresc-1.1-toc| Ćwiczenie 2. Funkcje wierszowe.]], [http://osilek.mimuw.edu.pl/external/bd/BD-1st-2.4-lab2.tresc-1.1/player.html Flash], [[media:BD-1st-2.4-lab2.tresc-1.1.pdf|PDF]], [[media:BD-1st-2.4-lab2.tresc-1.1-kolor.pdf|PDF-kolor]]

Aktualna wersja na dzień 14:37, 17 paź 2006

Forma zajęć

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

Opis

Funkcje i struktury systemów baz danych oraz przegląd modeli danych. Relacyjne bazy danych. Języki zapytań do relacyjnych baz danych (algebra relacji, logika pierwszego rzędu, SQL i Datalog). Projektowanie baz danych, teoria postaci normalnych i modelowanie encja-związek. Fizyczne aspekty wykonywania zapytań i składowania danych, metody optymalizacji zapytań, przetwarzanie transakcji i rozproszone bazy danych.

Sylabus

Autor

  • Krzysztof Stencel — Uniwersytet Warszawski, Wydział Matematyki, Informatyki i Mechaniki, Instytut Informatyki

Wymagania wstępne

  • Architektura komputerów i sieci
  • Podstawy matematyki
  • Programowanie obiektowe

Zawartość

  • Funkcje i struktura systemów baz danych.
  • Przegląd różnych modeli danych.
  • Relacyjny model danych.
  • Operacje algebry relacji i SQL jako przykłady języków zapytań.
  • Zależności funkcyjne i postaci normalne.
  • Modelowanie danych - poziom pojęciowy.
  • Modelowanie danych - poziom logiczny.
  • Fizyczna organizacja danych w bazach danych.
  • Fizyczne aspekty wykonywania zapytań.
  • Modelowanie danych - poziom fizyczny.
  • Oprogramowanie strony serwera bazy danych.
  • Przetwarzanie transakcji.
  • Rozproszone bazy danych.

Literatura

  • J. Ulmann, J. Widom, Podstawowy wykład z systemów baz danych, WNT 2000.
  • K. Stencel, L.Banachowski, Bazy danych. Projektowanie aplikacji na serwerze, EXIT, 2001.