General Information
- University: Salahaddin University-Erbil
- Department: Software Engineering Dept.
- My Status: Lecturer
- Level: BSc
- Year: 2018-Current
Course Description
This course aims to provide a thorough understanding of the underlying mechanisms and components that modern database management systems rely on to deliver efficient and reliable performance.
The curriculum covers a range of fundamental concepts that are essential to both high-performance transaction processing systems (OLTP) and large-scale analytical systems (OLAP). Students will be exposed to a variety of topics, including database design, query processing and optimization, indexing, concurrency control, and recovery management.
Furthermore, the course emphasizes the importance of both efficiency and correctness in the implementation of these ideas. To facilitate a more hands-on learning experience, all class projects will be centered on real-world in-memory, multi-core database systems, which will enable students to apply the concepts and principles covered in the course to practical scenarios.
Overall, this course is designed for advanced undergraduate students in software engineering who are looking to deepen their understanding of database management principles. Through a rigorous and scholarly examination of these core concepts, students will gain the knowledge and skills necessary to develop and optimize high-performance, reliable database management systems.
Course Objectives
At the end of the course, students will be able to:
- Understand SQL Performance Tuning
- ER Diagram analysis and design and implementation
- Security and Data Integrity
- Data Analysis
- Transactions and concurrency
- Replications
- Backups
Course Content
- Week 1 Th: Introduction to the course
- Week 1 Pr: Installing PostgreSql and Dbeaver
- Week 2 Th: Physical Storage Systems
- Week 2 Pr: Revisiting SQL I
- Week 3 Th: Data Storage Structures
- Week 3 Pr: Revisiting SQL II
- Week 4 Th: Indexing
- Week 4 Pr: Creating Indexes Using Java
- Week 5 Th: Query Processing
- Week 5 Pr: Advanced Data Types
- Week 6 Th: Query Optimisation
- Week 6 Pr: Practical Understanding of Query Optimisation
- Week 7 Th: Transactions
- Week 7 Pr: Understanding Transaction Practically
- Week 8 Th: Midterm Exam
- Week 8 Pr: Practical Quiz
- Week 9 Th: Concurrency Control
- Week 9 Pr: Installing a concurrent System
- Week 10 Th: Recovery System
- Week 10 Pr: Practical Aspects of Recovery System
- Week 11 Th: Database-System Architectures
- Week 11 Pr: Looking into Some database Architectures
- Week 12 Th: Big Data
- Week 12 Pr: Introduction to Apache Hadoop
- Week 13 Th: Data Analytics
- Week 13 Pr: OLAP in Practice Using PostgreSql
- Week 14 Th: Review
- Week 14 Pr: Review
- Week 15 Th: Final Exam
- Week 15 Pr: Final Exam
References
- Reference Book for this Course
- Alternative Book
- Alternative Lectures
Grade Distribution
The Grade is generated from the examination result(s) with the following:
- 20% Group Project
- 30% Practical weekly exams + Quizzes
- 30% Final Theoretical Exam
- 20% Final Practical Exam
Group Project Description
The group project should be completed by two students working together. You will be using PostgreSQL to fulfill the following requirements:
- Requirement gathering: Collect and analyze the requirements for your project.
- Normalization and ER diagrams: Design and create Entity-Relationship diagrams, ensuring proper normalization of the database schema.
- Creating proper tables and inserting data: Implement the schema in PostgreSQL by creating tables and inserting sample data.
- Creating User roles and users: Set up user roles and users with appropriate permissions for database access and management.
- Select queries for data retrieval: Based on the gathered requirements, create SQL SELECT queries to retrieve relevant data from the database.
- Using transactions for data integrity: Ensure data integrity by implementing transactions for critical operations.
- Creating a Replication for the database: Set up database replication to maintain a consistent, synchronized copy of the database.
- Using OLAP to generate reports: Utilize Online Analytical Processing (OLAP) techniques to generate informative reports from the database.
Suggestions for the database systems(Not Mandatory):
-
Library Management System: Create a system to manage book loans, reservations, and returns in a library. The system should be able to handle information about books, authors, publishers, library members, and loan history.
-
Inventory Management System: Develop a system to manage the inventory of a small business, such as a retail store or a warehouse. The system should handle products, suppliers, customers, sales, and purchase orders.
-
Hospital Management System: Design a system to manage patient records, doctor appointments, medical staff, and billing information for a hospital or clinic.
-
University Management System: Create a system to manage student enrollment, course registration, instructor information, and class schedules for a university.
-
Employee Management System: Develop a system for managing employee records, including personal information, job titles, departments, and salary information.
-
Online Ticket Booking System: Design a system for booking tickets for events like concerts, movies, or sports. The system should handle event information, venue details, ticket pricing, and user registration.
-
Real Estate Management System: Create a system for managing property listings, client information, and transactions for a real estate agency.
-
Restaurant Reservation System: Develop a system for managing table reservations and customer information for a restaurant.
-
Hotel Booking System: Design a system for managing room reservations, guest information, and billing for a hotel.
-
Fitness Club Membership System: Create a system for managing memberships, class schedules, and instructor information for a fitness club.
Make sure to collaborate effectively and divide the tasks evenly between both team members.