summaryrefslogtreecommitdiff
path: root/00-sprawy-organizacyjne/sprawy-organizacyjne.ipynb
blob: f47382a79cf6caca87729f2e7b2f165fe7d0c108 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
{
 "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",
    "Zeszyty dostępne bezpośrednio, jako pojedyncze pliki pod https://galaxy.agh.edu.pl/~wkosior/db-lectures/."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5a9bf2b5",
   "metadata": {},
   "source": [
    "### Pobieranie zeszytów za pomocą narzędzia Git\n",
    "\n",
    "W przykładach znak `$` poprzedza komendę do wpisania w konsoli.  Pod niektórymi komendami jest pokazany ich przykładowy output.\n",
    "\n",
    "```\n",
    "$ git clone https://galaxy.agh.edu.pl/~wkosior/git.sh/db-lectures\n",
    "Cloning into 'db-lectures'...\n",
    "remote: Enumerating objects: 16, done.\n",
    "remote: Counting objects: 100% (16/16), done.\n",
    "remote: Compressing objects: 100% (12/12), done.\n",
    "remote: Total 16 (delta 4), reused 16 (delta 4), pack-reused 0\n",
    "Receiving objects: 100% (16/16), 17.90 KiB | 8.95 MiB/s, done.\n",
    "Resolving deltas: 100% (4/4), done.\n",
    "```"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "caf543f5",
   "metadata": {},
   "source": [
    "### Aktualizacja pobranych materiałów\n",
    "\n",
    "```\n",
    "$ cd /path/to/cloned/db-lectures\n",
    "$ git reset --hard # opcjonalnie, usuwa lokalne zmiany w plikach\n",
    "HEAD is now at 5675f68 Initial commit.\n",
    "$ git pull\n",
    "remote: Enumerating objects: 12, done.\n",
    "remote: Counting objects: 100% (12/12), done.\n",
    "remote: Compressing objects: 100% (8/8), done.\n",
    "remote: Total 8 (delta 5), reused 0 (delta 0), pack-reused 0\n",
    "Unpacking objects: 100% (8/8), 3.49 KiB | 1.16 MiB/s, done.\n",
    "From https://galaxy.agh.edu.pl/~wkosior/git.sh/db-lectures\n",
    "   5675f68..163170e  magister   -> origin/magister\n",
    "Updating 5675f68..163170e\n",
    "Fast-forward\n",
    " 01-introduction-to-databases/set_students_2.sh |  11 ++-\n",
    " 01-introduction-to-databases/set_students_3.sh |  11 ++-\n",
    " COPYING                                        | 123 +++++++++++++++++++++++++++++++++\n",
    " 3 files changed, 143 insertions(+), 2 deletions(-)\n",
    " create mode 100644 COPYING\n",
    "```"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0275699b",
   "metadata": {},
   "source": [
    "### Uruchamianie pobranych zeszytów\n",
    "\n",
    "Wymagane:\n",
    "- Python3\n",
    "- [jupyter](https://jupyter.org/install#jupyter-notebook)\n",
    "- [ipython-sql](https://github.com/catherinedevlin/ipython-sql) (`pip install ipython-sql`)\n",
    "\n",
    "```\n",
    "$ jupyter notebook\n",
    "```"
   ]
  },
  {
   "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
}