Databases

A.Y. 2025/2026
12
Max ECTS
112
Overall hours
SSD
INF/01
Language
Italian
Learning objectives
The course provides the fundamental knowledge and skills related to relational databases and related systems for database management. The course also provides knowledge and skills featuring non-relational database systems (the so-called NoSQL systems), by also discussing the main differences with relational tools through examples and case studies. A theory part devoted to models, languages, design methodologies, security and transaction aspects of relational systems is provided. An additional theory part is included in the course to present models and languages of non-relational systems. The course is complemented by a laboratory part focused on the use of relational and non-relational database management systems.
Expected learning outcomes
The student will acquire the following knowledge and skills: design of the conceptual and relational schema of a database either starting from an informal description of a reference application domain or starting from an unstructured data set; verify the level of normalization of a relational schema and understand the concepts of functional dependency and normalization; understand and correctly execute complex SQL queries and define their execution plan in terms of relational algebra operations; understand, design and define the different types of indexes to optimize data access; realize active functionalities on a relational database by means of SQL procedures; know the main types of non-relational models; know the main differences between relational and non-relational models and systems; understand and execute queries on the specific non-relational database systems presented during the course.
Single course

This course cannot be attended as a single course. Please check our list of single courses to find the ones available for enrolment.

Course syllabus and organization

Single session

Responsible
Lesson period
Second semester
Course syllabus
The course is organized in two parts, one about the theory and one about the laboratory.

The topics covered in the theory part are:
- Concepts and architecture of a database system
- Relational model and related constraints
- Relational algebra
- SQL (Structured Query Language)
- Data modeling, ER model, and design concepts
- Logical database design
- Normalization of database schemas
- Physical organization of data and indexes
- Security and access control
- Transactions (general concepts)
- Introduction to NoSQL systems
- Document-based NoSQL systems
- The MongoDB data model
- Queries in MongoDB
- The aggregation framework of MongoDB

The topics covered in the laboratory part:
- Conceptual design
- The PostgreSQL DBMS
- Creation, manipulation, and dumping of schemes
- Access control (firewall), user and role management
- Procedural language (PLpgSQL)
- MongoDB
Prerequisites for admission
Principles of procedural programming
Teaching methods
The theory part consists of lectures. There are practice sessions in which students complete exercises that are then corrected and discussed in class. The laboratory part consists of lectures, guided exercises, and practical activities.
Attendance, although not mandatory, is strongly recommended.
Teaching Resources
The bibliography coincides for attending and non-attending students.
About the theory part, choose a book between:
- R. Elmasri, S.B. Navathe, Sistemi di basi di dati - Fondamenti e Complementi (7 ed.), Pearson, 2018.
- P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone, Basi di dati (V ed.), McGraw-Hill, 2018.

About the laboratory part, consider the online handbook of the tools:
- PostgreSQL (https://www.postgresql.org/docs/manuals/)
- MongoDB (https://www.mongodb.com/docs/manual/)


Additional supplementary material is made available on the course website (Ariel platform) throughout the class period.
Assessment methods and Criteria
Attending and non-attending students: The exam consists of two mandatory tests covering the theory part and the laboratory part, respectively. The student may take the theory test and the laboratory test in the order she/he prefers. No more than one year shall elapse between the two tests. If this deadline is not met, the grade of the test already taken is cancelled.

Theory test
It is based on a written test of approximately ninty minutes about the syllabus of the whole theory part. The test consists of open/closed-ended questions and exercises. To take the exam, students must register to one of the exam sessions planned on the official calendar. The written test is evaluated in the range 0-30 (grade S) and it is based on the following parameters: degree of knowledge of topics, ability to apply such knowledge to solving exercises, completeness of answers, correctness of reasoning in carrying out exercises. If a grade of at least 25/30 is achieved, the student can ask for an oral discussion to improve the grade. If the oral discussion is not taken, the grade for the theory test is automatically confirmed. If a grade of less than 25/30 is achieved, the oral discussion is NOT possible.

Laboratory test
It is based on a written test of approximately ninty minutes about the syllabus of the whole laboratory part. The test consists of exercises on the topics covered during the laboratory classes.
To take the lab exam, students must register to one of the exam sessions planned on the official calendar. The overall laboratory test is evaluated in the range 0-30 (grade P) and considers the following parameters: degree of knowledge of topics, ability to apply such knowledge to solving a concrete problem, quality of the developed solutions.

Final grade
After taking both the theory test and the laboratory test, the student receives a grade proposal in thirtieths corresponding to the weighted average of the two tests calculated as follows: grade=(2S+P)/3. The student has the option of rejecting the grade proposal. In this case, the teachers can allow the student to keep the grade received in one of the two tests (theory or lab).
INF/01 - INFORMATICS - University credits: 12
Laboratories: 32 hours
Lessons: 80 hours
Professor(s)
Reception:
On appointment
room 7008
Reception:
By appointment to be arranged by email
Room 7015, Dipartimento di Informatica "Giovanni degli Antoni", Via Celoria 18 - 20133 Milano