I followed this module during my Erasmus semester (Sep 2024 - Dec 2024) at the University of Limerick. The project is part of the final evaluation.
This module covers the necessary skills for interacting with a relational database system within a software/web development project as well as a database administrator.
- The first part of the module introduces the main SQL statements for schema definition and data manipulation with a special emphasis on constructing complex queries with joins, subqueries, and aggregations.
- The second part of the module introduces the practice behind designing effective relational database schemas.
Once the basic tools for designing and interacting with a relational database system are introduced, the module proceeds with techniques for defining constraints and embedding programming code within a relational schema, as well as with embedding SQL code in a host language environment.
Finally, the module concludes with an overview of some advanced topics such as transaction management, scalable databases, and the NoSQL paradigm.
- Overview of the main data models used in practice: the relational model, the key-value model, the column-family model, the document-based model and the graph model. Comparison between the models and case studies of their practical application.
- SQL statements for data definition and data manipulation.
- SQL integrity constraints, triggers and stored procedures.
- SQL indexes and query optimisation.
- Use of SQL embedded in programming code.
- Relational database design: entity-relationship diagrams, functional dependencies, Boyce-Codd normal form, Third Normal Form (3NF).
- Transaction management: ACID vs BASE.
- Practical use of current relational and NoSQL database management systems.