Advanced Database Systems COM519

COM519 Advanced Database develops the knowledge and practical skills required to analyse, design, implement and secure database-driven applications. Using SQLite, Python and Tkinter, students progress from database theory and modelling through to the development of a fully functional software solution. The module combines database development, software engineering, user interface design, security, data exchange and data visualisation within a project-based assessment.

Students select a business scenario and develop a complete database application, beginning with requirements analysis and progressing through design, implementation, testing and evaluation. Throughout the module they consider user needs, business objectives, project constraints and system quality requirements.

Database Design and Development

The module begins by introducing the concepts of data, information and database systems, alongside the differences between relational and non-relational databases. Students explore relational database design using SQLite and are introduced to alternative NoSQL approaches including document, graph, key-value and columnar databases.

Students learn to model relationships between entities, including one-to-one, one-to-many and many-to-many relationships, before implementing these structures using SQL. The module covers database creation, querying and administration, enabling students to create, retrieve, update and delete data efficiently.

A significant focus is placed on database normalisation. Students apply First, Second and Third Normal Form (1NF, 2NF and 3NF) to reduce redundancy and improve data integrity. They also create Entity Relationship Diagrams (ERDs) and implement primary and foreign key relationships to ensure consistency across database systems.

Advanced Database Features

Once core database structures have been implemented, students explore advanced SQLite functionality including triggers and views. Triggers are used to automate processes and enforce business rules within the database, such as automatically updating stock levels or validating transactions. Views are introduced as virtual tables that simplify complex queries, support reporting requirements and provide controlled access to data.

These features encourage students to move beyond simple data storage and develop databases capable of supporting real-world business processes.

Python and GUI Development

The module then focuses on integrating SQLite with Python to create user-facing applications. Students develop graphical user interfaces using Tkinter, incorporating controls such as buttons, labels, text fields, message boxes and form elements to create professional front-end systems.

Python is used to perform CRUD operations (Create, Read, Update and Delete), validate user input and implement user authentication. Through practical examples such as registration systems, login screens and order management applications, students learn how databases and software applications interact to provide complete business solutions.

Object-Oriented Software Development

As applications increase in complexity, students are introduced to Object-Oriented Programming (OOP). The module covers encapsulation, inheritance, abstraction and polymorphism, using classes to organise application components and separate responsibilities.

Students redesign GUI applications using multiple classes, improving code maintainability, scalability and reusability while adopting software development practices commonly used in industry.

Security and Data Protection

Security is an important theme throughout the second half of the module. Students explore cryptographic techniques including symmetric encryption, asymmetric encryption and hashing. Encryption and decryption processes are implemented within Python applications, while Secure Hash Algorithms (SHA) are used to secure passwords and authentication systems.

The module demonstrates how security controls can be integrated into SQLite and Python solutions to protect sensitive information and improve overall system resilience.

XML and Data Exchange

Students are introduced to XML as a platform-independent method of storing and exchanging structured data between systems. Practical activities include reading, writing and parsing XML files, as well as exporting data from SQLite and recovering information from XML documents.

This provides experience of data integration techniques and demonstrates how relational databases can exchange information with external systems and technologies.

Data Visualisation

The module explores techniques for presenting database information visually using Tkinter Canvas and the Matplotlib library. Students create dynamic visualisations including bar charts, column charts, line graphs and pie charts, generated directly from SQLite data.

These activities demonstrate how stored data can be transformed into meaningful information that supports analysis and decision-making.

Multimedia and BLOB Data

Students extend database functionality through the use of Binary Large Objects (BLOBs) to store and retrieve multimedia content such as images and audio files. They learn how to convert files into binary data, store them within SQLite databases and display media through Python applications.

This enables the development of richer systems, such as online shopping platforms that incorporate product images and multimedia assets.

Reliability and Secure Development

The final part of the module focuses on software reliability and security. Students implement exception handling using Python’s try-except mechanisms to manage errors, improve robustness and provide meaningful feedback to users.

Database security is further reinforced through the study of SQL Injection attacks. Students examine how insecure input handling can compromise database systems and learn techniques for preventing attacks through validation, input checking and defensive programming practices.

Overall Learning

By the end of the module, students are able to take a client requirement from initial analysis through to a fully functioning database application. They gain experience in database modelling, normalisation, SQL development, SQLite implementation, Python and Tkinter programming, Object-Oriented Programming, security, XML integration, data visualisation, multimedia data management and secure software development practices.

The module provides a comprehensive introduction to the design, implementation, security and evaluation of modern database-driven software systems while giving students practical experience of developing a substantial, client-focused application using industry-relevant technologies and development processes.

By the end of the module, students can:

  • Gather and analyse client requirements
  • Design and normalise databases
  • Create ERDs
  • Implement databases using SQLite
  • Write SQL queries, views and triggers
  • Develop Python/Tkinter front ends
  • Apply Object-Oriented Programming
  • Implement encryption and hashing
  • Exchange data using XML
  • Create data visualisations
  • Store multimedia using BLOBs
  • Implement error handling
  • Protect systems against SQL Injection and other common vulnerabilities

Overall, COM519 provides a complete introduction to the design, implementation, security and evaluation of modern database-driven software systems using SQLite, Python, Tkinter, XML, Matplotlib and Object-Oriented Programming techniques.


This site uses Just the Docs, a documentation theme for Jekyll.