{
"cells": [
{
"cell_type": "markdown",
"id": "527dd364",
"metadata": {},
"source": [
"# Organizacja przedmiotu"
]
},
{
"cell_type": "markdown",
"id": "12f57860",
"metadata": {},
"source": [
"## Wykład\n",
" \n",
"- Wojciech Kosior\n",
"- wkosior@agh.edu.pl\n",
"- dla kierunków:\n",
" - Cyberbezpieczeństwo (WIEiT)\n",
" - Informatyka Społeczna (WH)\n",
" - Teleinformatyka (WIEiT)\n",
"\n",
"## Plan wykładu\n",
"\n",
"| | | |\n",
"|:----|:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|:-------------------------------------------------------------------------------------------------------------------------------------------------------:|\n",
"| 1. | Wprowadzenie do baz danych: czym są bazy danych, rodzaje baz danych, systemy bazodanowe wbudowane i działające w architekturze klient-serwer, system zarządzania bazą danych | 2025-10-07 <br> _45 min_ |\n",
"| 2. | Relacyjny model danych: różne modele danych, podstawowe pojęcia dotyczące relacyjnego modelu danych, podstawowe typy danych, przykład komendy SELECT <br><br> **Zrobiony 1 wykład** | 2025-10-07 <br> _45 min_ |\n",
"| 3. | Tworzenie prostych zapytań o dane w SQL: komenda SELECT, klauzula FROM, klauzula WHERE, podstawowe operatory, funkcje wbudowane, operacje mnogościowe, aliasy, nadawanie nazw kolumnom (AS) | 2025-10-14 <br> _70 min_ |\n",
"| 4. | Problem różnych interpretacji NULL: NULL jako nieznana wartość, NULL jako brak wartości, zróżnicowane traktowanie NULL w standardzie SQL <br><br> **Zrobione 2 wykłady** | 2025-10-14 <br> _20 min_ |\n",
"| 5. | Tworzenie zaawansowanych zapytań o dane w SQL: funkcje agregujące, klauzula GROUP BY, klauzula HAVING, klauzula ORDER BY, złączenia, podzapytania, zapytania skorelowane i nieskorelowane <br><br> **Zrobione 3 wykłady** | 2025-10-21 <br> _90 min_ |\n",
"| 6. | Manipulowanie danymi za pomocą SQL: komenda INSERT, komenda UPDATE, komenda DELETE, funkcjonalność UPSERT | 2025-10-28 <br> _45 min_ |\n",
"| 7. | Definiowanie struktur danych za pomocą SQL: tworzenie nowej bazy danych Postgres i MariaDB/MySQL, komenda CREATE TABLE, komenda DROP TABLE, zadawanie kluczy obcych, warunki integralności, komenda ALTER TABLE <br><br> **Zrobione 4 wykłady** | 2025-10-28 <br> _45 min_ |\n",
"| 8. | Projektowanie baz danych: model związków encji, normalizacja struktury bazy danych, zależności funkcjonalne, klucze, postaci normalne 1-3, BCNF (postać normalna Boyce'a-Codda) | 2025-11-04 i 2025-11-12 (**środa**) <br> _135 min_ |\n",
"| 9. | Zaawansowane aspekty normalizacji struktury bazy danych: postaci normalne 4-5 <br><br> **Zrobione 5.5/6 wykładów** | 2025-11-12 (**środa**) <br> _45 min_ <br> _(tylko kierunki WIEiT, studentów WH obowiązuje treść z samej pierwszej połowy tego slotu wykładowego)_ |\n",
"| 10. | Widoki i tabele tymczasowe: komenda CREATE VIEW, komenda DROP VIEW, widoki niezmaterializowane i zmaterializowane, problem manipulowania danymi poprzez widok, komenda SELECT INTO <br><br> **Zrobione 5.5/7 wykładów** | 2025-11-18 <br> _90 min_ <br> _(tylko kierunki WIEiT)_ |\n",
"| 11. | Transakcje: właściwości transakcji, komenda BEGIN TRANSACTION, komenda COMMIT, tryb autocommit, komenda SAVEPOINT, komenda ROLLBACK TRANSACTION, klauzula SELECT FOR UPDATE, poziomy izolacji <br><br> **Zrobione 6.5/8 wykładów** | 2025-11-25 <br> _90 min_ |\n",
"| 12. | Zarządzanie uprawnieniami: komenda CREATE ROLE, komenda DROP ROLE, komenda ALTER ROLE, atrybuty ról, zarządzanie użytkownikami w systemach Postgres i MariaDB/MySQL | 2025-12-02 <br> _45 min_ |\n",
"| 13. | Użycie SQL z poziomu języka programowania: ODBC (Open Database Connectivity), JDBC, Python Database API Specification, prepared statements <br><br> **Zrobione 7.5/9 wykładów** | 2025-12-02 <br> _45 min_ |\n",
"| 14. | Algebra relacyjna: selekcja, rzutowanie, złączenie naturalne, ioczyn kartezjański, suma i różnica zbiorów, równoważność wyrażeń, tłumaczenie między zapytaniem SQL a wyrażeniem algebry relacyjnej | 2025-12-09 <br> _45 min_ <br> _(tylko kierunki WIEiT)_ |\n",
"| 15. | Indeksy i optymalizacja: komenda CREATE INDEX, komenda DROP INDEX, indeksy tworzone automatycznie dla kluczy głównych, skutki utworzenia indeksu, rodzaje indeksów, metody indeksowania, komenda EXPLAIN | 2025-12-09 i 2025-12-16 <br> _90 min_ <br> _(tylko kierunki WIEiT)_ |\n",
"| 16. | Proceduralny SQL: deklaracje, podstawienia, wyrażenia warunkowe, pętle programowe, metody ograniczenia ilości zwracanych wierszy, pojęcie kursora, wyzwalacze (TRIGGERs) i funkcje, argumenty funkcji <br><br> **Zrobione 7.5/12 wykładów** | 2025-12-16 i 2026-01-09 (**piątek**) <br> _135 min_ <br> _(tylko kierunki WIEiT)_ |\n",
"| 17. | Podejście obiektowe: komenda CREATE TYPE, typy nieatomiczne, dziedziczenie w standardzie SQL i w systemie Postgres, mapowanie obiektowo-relacyjne <br><br> **Zrobione 7.5/13 wykładów** | 2026-01-13 <br> _90 min_ <br> _(tylko kierunki WIEiT)_ |\n",
"| 18. | Bazy NoSQL: bazy typu key-value store, bazy grafowe, bazy dokumentowe, bazy szerokokolumnowe, bazy przechowująca dane w pamięci operacyjnej <br><br> **Zrobione 7.5/14 wykładów** | 2026-01-20 <br> _90 min_ <br> _(tylko kierunki WIEiT)_ |\n",
"| 19. | Systemy zarządzania relacyjną bazą danych: przegląd systemów zarządzania bazą danych, tworzenie kopii bezpieczeństwa, migracje między systemami <br><br> **Zrobione 7.5/14.5 wykładów** | 2026-01-27 <br> _45 min_ <br> _(tylko kierunki WIEiT)_ |\n",
"| | W ostatnim slocie zostaje 45 min zapasu na \"wszelki wypadek\" lub na ciekawostki, dyskusje itp. | |"
]
},
{
"cell_type": "markdown",
"id": "41701ab5",
"metadata": {},
"source": [
"## Laboratoria i projekty\n",
"\n",
"Różnie…"
]
},
{
"cell_type": "markdown",
"id": "d9031cc9",
"metadata": {},
"source": [
"## Literatura\n",
"\n",
"### A.Silberschatz, H.F. Korth, S. Sudarshan, \"Database System Concepts\", McGrow Hill, 2019\n",
"\n",
"- obszerna książka\n",
"- solidne podstawy do baz danych\n",
"- tylko część rozdziałów związana z tematyką kursu\n",
"- opisuje również konstrukcje, których obecne systemy bazodanowe nie implementują\n",
"\n",
"### A. Watt, N. Eng, \"Database Design – 2nd Edition\", Victoria, B.C.: BCcampus, 2014\n",
"\n",
"- krótsza pozycja\n",
"- trochę inna kolejność zagadnień, niż w naszym kursie\n",
"- dostępna na wolnej licencji :)\n",
"\n",
"### \"PostgreSQL 17.6 Documentation\", The PostgreSQL Global Development Group, 2025\n",
"\n",
"- do wyszukania informacji o konkretnych konstrukcjach i mechanizmach\n",
"- przydatna w szczególności dla studentów WIEiT\n",
"\n",
"### \"MariaDB Server Documentation\", MariaDB Foundation, 2025\n",
"\n",
"- do wyszukania informacji o konkretnych konstrukcjach i mechanizmach\n",
"- przydatna w szczególności dla studentów WH\n",
"\n",
"### L. Li, R. Rutherfoord, \"Database Design and Applications (Open Course)\", Computer Science and Information Technology Ancillary Materials, 14, 2019\n",
"\n",
"- slajdy, które może będą wykorzystane na którymś wykładzie, a może nie\n",
"\n",
"### G.Harrison, Next Generation Databases NoSQL, NewSQL, and Big Data, Apress 2015\n",
"\n",
"- jedyna na tej liście pozycja poświęcona bazon nierelacyjnym\n",
"- w sylabusie po poprzednim prowadzącym\n",
"\n",
"### Dokumentacja projektu SQLite\n",
"\n",
"- składnia komend przedstawiona na diagramach, np. https://www.sqlite.org/lang_upsert.html"
]
},
{
"cell_type": "markdown",
"id": "04953d6a",
"metadata": {},
"source": [
"## Materiały z wykładów\n",
"\n",
"- https://galaxy.agh.edu.pl/~wkosior/\n",
"- szczegóły: `README.txt`"
]
},
{
"cell_type": "markdown",
"id": "8fc6417c",
"metadata": {},
"source": [
"_notes_\n",
"\n",
"- Jest możliwość\n",
" - pobrania pojedynczych plików lub\n",
" - zklonowania reopzytorium Git.\n",
"- Wśród plików znajduje się `README.txt`, który opisuje\n",
" - jakimi komendami Git można pobierać materiały oraz\n",
" - co jest konieczne do otworzenia zeszytów."
]
},
{
"cell_type": "markdown",
"id": "c7d5ed70",
"metadata": {},
"source": [
"## Zaliczenie przedmiotu\n",
"\n",
"Egzamin, 3 terminy\n",
"\n",
"- data: ???\n",
"- miejsce: ???\n",
"- wymagania:\n",
" - zaliczone ćwiczenia lab\n",
" - (w przypadku studentów WIEiT) zaliczony projekt\n",
"\n",
"### Ocena końcowa\n",
"\n",
"W przypadku zaliczenia w pierwszym terminie:\n",
"\n",
"| | |\n",
"|--|:-:|\n",
"|Cyberbezpieczeństwo| $\\frac{15\\cdot{}ocena\\_lab + 15\\cdot{}ocena\\_proj + 30\\cdot{}ocena\\_egz}{60}$ |\n",
"|Informatyka Społeczna| $\\frac{ocena\\_lab + ocena\\_egz}{2}$ |\n",
"|Teleinformatyka| $\\frac{20\\cdot{}ocena\\_lab + 10\\cdot{}ocena\\_proj + 30\\cdot{}ocena\\_egz}{60}$ |\n",
"\n",
"W przypadku zaliczenia w późniejszym terminie: do średniej wlicza się też niezaliczone terminy."
]
},
{
"cell_type": "markdown",
"id": "245e80c2",
"metadata": {},
"source": [
"## Aktywność i aktywizacja\n",
"\n",
"- <strike>lista obecności</strike>\n",
"- podwyższenie oceny za aktywność?\n",
" - możliwe\n",
" - ale raczej jako bonus dla studentów zainteresowanych wykładem\n",
" - niech to nie będzie cel sam w sobie\n",
"- Teodor (i wariant żeński: Teodora)"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "/gnu/store/q35bxk1i5blx0rcgxphhrq9xqmgha9bz-python-3.11.11/bin/python3",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.11"
}
},
"nbformat": 4,
"nbformat_minor": 5
}