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.