The course provides a complete overview of the techniques and tools required for the design and development of databases, applied to real examples using the most common software tools

Syllabus

  1. Requirements analysis. Conceptual databases design. The Entity-Relationship diagrams. (about 12 teaching hours)
  2. Logical database design. Restructuring and optimization of ER diagrams. Switching from conceptual model to logical model. (about 12 teaching hours)
  3. Data types in SQL. Operators and expressions in SQL. User management and permissions in a DBMS. Creating and editing tables in SQL. Table constraints. Referential integrity constraints. (about 10 teaching hours)
  4. Inserting data with SQL. Deleting data with SQL. Updating data with SQL. (about 2 teaching hours)
  5. Basic SQL queries. Advanced queries: internal and external joins between tables. Advanced queries: subqueries. Advanced queries: grouping. Advanced queries: union, intersection, difference. (about 12 teaching hours)
  6. Advanced SQL Concepts: views. Advanced SQL Concepts: procedures. Advanced SQL Concepts: triggers. Interfacing with programming languages: Java /JDBC. Interfacing with programming languages: PHP. (about 12 teaching hours)

Prerequisites

Base knowledge of imperative programming concepts

Teaching methods

Lectures are mainly practical, and include the interactive development of examples; students are encouraged to participate to the lectures by making questions and discussing the solutions adopted in the developed examples

Assessment methods

The final evaluation involves the development of a project (in group) and a possible oral exam (individual). The project to be developed consists of a database, to be designed and implemented together with a series of related queries. The oral exam starts from the discussion of the project and aims to verify the achieved level of teamwork and the individual contribution to the project