The aim of this project is to develop a database management program in C that is capable of:
- Separation of Data Structure and Data
- SQL Syntax Parsing and Execution
- Database Operations in a Doubly Linked List
- Separation of Index and Data Structure
- Separation of Linked List and UI Code
- Distinction Between Data Stored in Files and Data Loaded in Memory
The
Node
structure handles the linked list functionality, while the USERDATA
structure contains the actual data. This approach enhances modularity and makes the code easier to maintain.
The system can parse and execute SQL-like queries. This allows for a familiar and intuitive interface for database operations.
Supported operations include:
These operations are efficiently handled within the doubly linked list structure.
- Efficient range searches on integer fields
- Avoiding the need to sort the entire data structure for searches
- Generating and sorting an array of indices for optimized operations
The system operates primarily on in-memory data, but interacts with files in the following ways:
- Loads the initial database from a file into memory
- Allows users to make changes to the in-memory database
- Gives users the option to save their changes back to the file
- Implement data caching for improved efficiency with large datasets, allowing for partial loading and updates, modifying only changed portions of the file
- Add roll-back functionality for operations, allowing users to undo recent changes
- Enhance input validation and error handling to implement more thorough checks for user input
- Upgrade to a more robust data structure such as tree structure instead of a doubly linked list
- Implementation of more complex SQL operations (e.g., JOINs, GROUP BY)