aboutsummaryrefslogtreecommitdiff
{
 "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&nbsp;działające w&nbsp;architekturze klient-serwer, system zarządzania bazą danych                                                               | 2025-10-07 <br>  _45&nbsp;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&nbsp;min_                                                                                                                          |\n",
    "| 3.  | Tworzenie prostych zapytań o dane w&nbsp;SQL: komenda SELECT, klauzula FROM, klauzula WHERE, podstawowe operatory, funkcje wbudowane, operacje mnogościowe, aliasy, nadawanie nazw kolumnom (AS)                                                     | 2025-10-14 <br>  _70&nbsp;min_                                                                                                                          |\n",
    "| 4.  | Problem różnych interpretacji NULL: NULL jako nieznana wartość, NULL jako brak wartości, zróżnicowane traktowanie NULL w&nbsp;standardzie SQL <br><br> **Zrobione 2 wykłady**                                                                        | 2025-10-14 <br>  _20&nbsp;min_                                                                                                                          |\n",
    "| 5.  | Tworzenie zaawansowanych zapytań o dane w&nbsp;SQL: funkcje agregujące, klauzula GROUP BY, klauzula HAVING, klauzula ORDER BY, złączenia, podzapytania, zapytania skorelowane i&nbsp;nieskorelowane <br><br> **Zrobione 3 wykłady**                  | 2025-10-21 <br>  _90&nbsp;min_                                                                                                                          |\n",
    "| 6.  | Manipulowanie danymi za pomocą SQL: komenda INSERT, komenda UPDATE, komenda DELETE, funkcjonalność UPSERT                                                                                                                                            | 2025-10-28 <br>  _45&nbsp;min_                                                                                                                          |\n",
    "| 7.  | Definiowanie struktur danych za pomocą SQL: tworzenie nowej bazy danych Postgres i&nbsp;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&nbsp;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&nbsp;2025-11-12 (**środa**) <br>  _135&nbsp;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&nbsp;min_ <br> _(tylko kierunki WIEiT, studentów WH obowiązuje treść z samej pierwszej połowy tego slotu wykładowego)_ |\n",
    "| 10. | Widoki i&nbsp;tabele tymczasowe: komenda CREATE VIEW, komenda DROP VIEW, widoki  niezmaterializowane i&nbsp;zmaterializowane, problem manipulowania danymi poprzez  widok, komenda SELECT INTO <br><br> **Zrobione 5.5/7 wykładów**                  | 2025-11-18 <br>  _90&nbsp;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&nbsp;min_                                                                                                                          |\n",
    "| 12. | Zarządzanie uprawnieniami: komenda CREATE ROLE, komenda DROP ROLE, komenda  ALTER ROLE, atrybuty ról, zarządzanie użytkownikami w&nbsp;systemach Postgres i&nbsp;MariaDB/MySQL                                                                       | 2025-12-02 <br>  _45&nbsp;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&nbsp;min_                                                                                                                          |\n",
    "| 14. | Algebra relacyjna: selekcja, rzutowanie, złączenie naturalne, ioczyn  kartezjański, suma i&nbsp;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&nbsp;min_ <br> _(tylko kierunki WIEiT)_                                                                                            |\n",
    "| 15. | Indeksy i&nbsp;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&nbsp;2025-12-16 <br>  _90&nbsp;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&nbsp;funkcje, argumenty funkcji <br><br> **Zrobione 7.5/12 wykładów**     | 2025-12-16 i&nbsp;2026-01-09 (**piątek**) <br>  _135&nbsp;min_ <br> _(tylko kierunki WIEiT)_                                                            |\n",
    "| 17. | Podejście obiektowe: komenda CREATE TYPE, typy nieatomiczne, dziedziczenie w&nbsp; standardzie SQL i&nbsp;w systemie Postgres, mapowanie obiektowo-relacyjne <br><br> **Zrobione 7.5/13 wykładów**                                                   | 2026-01-13 <br>  _90&nbsp;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&nbsp;pamięci operacyjnej <br><br> **Zrobione 7.5/14 wykładów**                                                               | 2026-01-20 <br>  _90&nbsp;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&nbsp;min_ <br> _(tylko kierunki WIEiT)_                                                                                            |\n",
    "|     | W&nbsp;ostatnim slocie zostaje 45&nbsp;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
}