Skip to content

Latest commit

 

History

History
80 lines (73 loc) · 3.26 KB

README.md

File metadata and controls

80 lines (73 loc) · 3.26 KB

Database Management Program with C

Version 1.0

🎥 Demo

Project Demo

🌄 Objectives

The aim of this project is to develop a database management program in C that is capable of:

🦔 Features

1. Separation of Concerns


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.

2. SQL-Like Query Parsing

The system can parse and execute SQL-like queries. This allows for a familiar and intuitive interface for database operations.

3. Comprehensive Database Operations

Supported operations include:
  • < SELECT >
  • < WHERE >
  • < ORDER BY >
  • < INSERT >
  • < DELETE >

These operations are efficiently handled within the doubly linked list structure.

4. Optimized Index Management

The index field is separated from the main data structures. This design choice allows for:
  • 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

5. Modular Code Design

The codebase is organized with a clear separation between linked list operations and user interface code.

6. File vs Memory Data Management

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

🚀 Future Improvements

  • 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)