Unified Service Items Table
A ServiceItems table consolidates all available services in a booking system, reducing redundancy and making operations more efficient. This table stores attributes like item name, type, category, unit type, and price per unit.
Example table structure:
ServiceItems
-------------------------------------------------------
| Id | Name | Type | Category | UnitType | PricePerUnit |
-------------------------------------------------------
| 1 | Luxury Car | VIP | Vehicle | Unit | 200 |
| 2 | Standard Car | Normal | Vehicle | Unit | 100 |
| 3 | Elite Guard | VIP | Security | Person | 150 |
| 4 | Basic Guard | Normal | Security | Person | 80 |
-------------------------------------------------------
- Category: Groups services into Vehicles, Security Personnel, or other types.
- Type: Defines whether the service is VIP or Normal.
- UnitType: Indicates measurement—e.g., “Unit” for vehicles, “Person” for security personnel.
UserBookings Table
To record user selections efficiently, a UserBookings table links booked items with users and allows for billing calculations.
Example table structure:
UserBookings
-----------------------------------------------------------
| Id | UserId | ServiceItemId | Quantity | TotalPrice |
-----------------------------------------------------------
| 1 | 101 | 1 | 2 | 400 |
| 2 | 102 | 3 | 3 | 450 |
-----------------------------------------------------------
- UserId: Identifies the user making the booking.
- ServiceItemId: References the booked service item.
- Quantity: Number of units booked.
- TotalPrice: Computed based on price per unit.
SQL Script for Implementation
CREATE TABLE ServiceItems (
Id INT PRIMARY KEY AUTO_INCREMENT,
Name VARCHAR(255) NOT NULL,
Type ENUM('VIP', 'Normal') NOT NULL,
Category ENUM('Vehicle', 'Security') NOT NULL,
UnitType ENUM('Unit', 'Person') NOT NULL,
PricePerUnit DECIMAL(10,2) NOT NULL
);
CREATE TABLE UserBookings (
Id INT PRIMARY KEY AUTO_INCREMENT,
UserId INT NOT NULL,
ServiceItemId INT NOT NULL,
Quantity INT NOT NULL,
TotalPrice DECIMAL(10,2) NOT NULL,
FOREIGN KEY (ServiceItemId) REFERENCES ServiceItems(Id)
);
Benefits of This Approach
- Scalability: Easily expand with new item types.
- Data Integrity: Ensures consistency through foreign key relationships.
- Simplified Queries: Streamlines database interactions.
- Efficient Cost Calculations: Facilitates invoice generation.
Conclusion
Using a single ServiceItems table improves booking system design, ensuring flexibility and efficiency. The structured approach simplifies maintenance while supporting complex service offerings.
This method provides a robust foundation for managing bookings efficiently.
Happy Coding, guys!