0% completed
An online food delivery system connects customers with restaurants, allowing them to browse menus, place orders, and have food delivered to their doorsteps. Efficient database design ensures that these operations are streamlined, scalable, and reliable.
In this case study, we’ll model an online food delivery system using Entity-Relationship (ER) diagrams and then map it to a relational schema.
For our case study, let's outline the key functionalities that the HMS should support:
We will build the ER diagram for the Hospital Management System through the following four steps.
Entities represent objects or concepts in the system that have data stored about them.
1. Customer and Address
2. Restaurant and Menu
3. Menu and Menu_Item
4. Customer and Order
5. Order and Order_Item
6. Order and Payment
7. Order and Delivery
8. Delivery and Delivery_Person
9. Restaurant and Review
10. Customer and Review
11. Menu_Item and Category
12. Order and Coupon
13. Menu_Item and Order_Item
Here is the final ER diagram.
When converting the ER diagram into a relational schema for our Ecommerce Platform, we need to carefully handle various components to ensure data integrity and optimal performance. Here are the key considerations:
Entity Tables and Attributes:
Foreign Keys and Relationships:
Here is the final relational model for the Ecommerce Platform.
Now, let's translate the ER model into SQL tables.
CREATE TABLE Customer ( Customer_ID INT PRIMARY KEY, Full_Name VARCHAR(100), Email VARCHAR(100), Phone_Number VARCHAR(15), Password VARCHAR(50), Date_Joined DATE );
CREATE TABLE Address ( Address_ID INT PRIMARY KEY, Customer_ID INT, Street VARCHAR(255), City VARCHAR(50), State VARCHAR(50), Postal_Code VARCHAR(10), Address_Type VARCHAR(20), FOREIGN KEY (Customer_ID) REFERENCES Customer(Customer_ID) );
CREATE TABLE Restaurant ( Restaurant_ID INT PRIMARY KEY, Name VARCHAR(100), Location VARCHAR(255), Contact_Number VARCHAR(15), Rating DECIMAL(3, 2) );
CREATE TABLE Menu ( Menu_ID INT PRIMARY KEY, Restaurant_ID INT, FOREIGN KEY (Restaurant_ID) REFERENCES Restaurant(Restaurant_ID) );
CREATE TABLE Menu_Item ( Item_ID INT PRIMARY KEY, Menu_ID INT, Name VARCHAR(100), Description TEXT, Price DECIMAL(10, 2), Category_ID INT, FOREIGN KEY (Menu_ID) REFERENCES Menu(Menu_ID), FOREIGN KEY (Category_ID) REFERENCES Category(Category_ID) );
CREATE TABLE Category ( Category_ID INT PRIMARY KEY, Name VARCHAR(50), Description TEXT );
CREATE TABLE Order ( Order_ID INT PRIMARY KEY, Customer_ID INT, Address_ID INT, Order_Date DATE, Total_Amount DECIMAL(10, 2), Status VARCHAR(20), FOREIGN KEY (Customer_ID) REFERENCES Customer(Customer_ID), FOREIGN KEY (Address_ID) REFERENCES Address(Address_ID) );
CREATE TABLE Order_Item ( Order_Item_ID INT PRIMARY KEY, Order_ID INT, Item_ID INT, Quantity INT, Subtotal DECIMAL(10, 2), FOREIGN KEY (Order_ID) REFERENCES Order(Order_ID), FOREIGN KEY (Item_ID) REFERENCES Menu_Item(Item_ID) );
CREATE TABLE Payment ( Payment_ID INT PRIMARY KEY, Order_ID INT, Payment_Date DATE, Payment_Method VARCHAR(50), Payment_Status VARCHAR(20), FOREIGN KEY (Order_ID) REFERENCES Order(Order_ID) );
CREATE TABLE Delivery_Person ( Delivery_Person_ID INT PRIMARY KEY, Full_Name VARCHAR(100), Phone_Number VARCHAR(15), Vehicle_Details VARCHAR(100) );
CREATE TABLE Delivery ( Delivery_ID INT PRIMARY KEY, Order_ID INT, Delivery_Person_ID INT, Delivery_Status VARCHAR(20), Delivery_Date DATE, FOREIGN KEY (Order_ID) REFERENCES Order(Order_ID), FOREIGN KEY (Delivery_Person_ID) REFERENCES Delivery_Person(Delivery_Person_ID) );
CREATE TABLE Review ( Review_ID INT PRIMARY KEY, Customer_ID INT, Restaurant_ID INT, Rating INT, Review_Text TEXT, Review_Date DATE, FOREIGN KEY (Customer_ID) REFERENCES Customer(Customer_ID), FOREIGN KEY (Restaurant_ID) REFERENCES Restaurant(Restaurant_ID) );
CREATE TABLE Coupon ( Coupon_ID INT PRIMARY KEY, Code VARCHAR(50), Discount_Percentage DECIMAL(5, 2), Expiry_Date DATE, Maximum_Usage INT );
.....
.....
.....