COURSE OUTLINE

Session 9

Database design
 Denormalization for performance. partitioning. Views and materialized views. Semi-structured data in PostgreSQL.

Session 5

Stored procedures and triggers
 Working with a database from Python. psycopg2. Cursors. Database adapters vs ORM. SQL-injection.

Session 6

Transaction
ACID properties. Transaction log. MVCC. Isolation levels. Locking. OLTP workload.

Session 1

Introduction
 Information about course agenda and grading system.
Field overview and motivation. History of databases. DBMS software overview and classification.Getting started with PostgreSQL.

Session 2

SQL language
Data Definition Language (DDL). Data types. NULL values. Constraints. Database schema changes: migration, backward and forward compatibility.

Session 4

Complex select queries
 JOINS, subqueries, aggregation, HAVING, GROUP, ORDER BY, UNION. Procedural Languages. PL/pgSQL. Stored procedures.

Session 3

SQL language continued
Relational algebra. Data Modification Language (DML). CRUD. Select queries. JOINS, subqueries, aggregation, HAVING, GROUP, ORDER BY, UNION, LIMIT.

Session 7

ER data model
 Components of the ER Diagram. ER-Diagram Notations.  Practice example of creating ERD.

Session 8

Relational database design
 Functional dependencies. Database normalisation.

Session 10

Indexes
 B-Tree indexes Hash indexes. Bitmap indexes. Partial and functional indexes. Clustered indexes and covering.

Session 11

Query optimization
 Profiling queries. Query planning and execution. EXPLAIN statement. Benchmarking.

Session 12

Database system maintenance
 Database configuration. Tuning memory and I/O. Connection pooling. Database monitoring. Backup solutions.

Session 13

Practical session
 Discussing database design projects.

Session 14

Database clustering
 High Availability, Load Balancing, and Replication. Physical and logical replication. Failover.

Session 15

Extra topics on non-relational databases. 
Final exam.