This project implements a simple relational database system for a fast food restaurant called Burger Plus. It includes schema creation, synthetic data generation, advanced test queries, and a command-line interface (CLI) to manage operations.
The following steps are required to initialize the database and application environment using SQLite and Python 3. Ensure SQLite is installed and accessible from your PATH, or place sqlite3.exe in the project root.
git clone https://github.com/kmanche4675/Database-Systems-Project.gitcd database-systems-project-
Install Requirements
- Only the built-in sqlite3 and argparse modules are used. No external libraries required.
-
Create and Populate the Database
- DELETE previous database file to ensure a clean start (CRITICAL)
rm -f db/burgerplus.db
- CREATE the new schema
sqlite3 db/burgerplus.db < db/schema.sql- LOAD the synthetic data (Uses Python script)
python seed/seed_data.py
Run any of the following from the Root Directory:
- Add a Menu Item
- Creates a new item for the menu
python main.py add_menu_item --item_id 999 --name "Spicy Burger" --category Burger --price 10.99 --description "Hot and Juicy"Parameter Instructions
| Parameter | Description |
|---|---|
| --item_id | Unique integer ID for the item |
| --name | Name of the menu item (Unique) |
| --category | Choices: Burger, Side, Drink, Dessert |
| --price | Price as a decimal |
| --description | Optional text description |
| --available | Add this flag to mark the item as available/unavailable |
- List All Menu Items
- Display all menu items currently in the database
python main.py list_menu_items- Add a Customer
- Register a new customer to the system
python main.py add_customer --id 1 --first John --last Doe --phone 1234567890 --email john@example.comParameter Instructions
| Parameter | Description |
|---|---|
| --id | Unique integer ID for the customer |
| --first | First Name |
| --last | Last Name |
| --phone | Phone Number |
| Email Address |
- Create an Order
- Creates a new order with one or more items (the items are passed in as pairs)
python main.py create_order --order_id 1001 --customer_id 1 --employee_id 1255 --item 1 1 --item 2 2Parameter Instructions
| Parameter | Description |
|---|---|
| --order_id | Unique integer ID for the order |
| --customer_id | ID of the customer |
| --employee_id | ID of the employee who took the order |
| --items | One or more pairs of item_id quantity: (item_id, quantity) |
- List Customers
- Display registered customers
python main.py list_customers- Testing
sqlite3 db/burgerplus.db < test_queries.sql| Name | Responsibility |
|---|---|
| Austin McBurney | Wrote CLI code, readme, organized repository, testing & instructions |
| Kendrick Manchester | Managed team dynamics ensuring effective colaboration |
| Dennis Garay | Wrote the descriptive content for the relational schema and the data population process |
| Jakobe Allen | Created E-R Diagram for the database. Defined entities & attributes |
| Dillon Davis | Wrote up report specificiations for entire project |