0% found this document useful (0 votes)
6 views

db

The document outlines the SQL schema for a CityConnect database, including the creation of various tables such as User, Role, Permission, and their respective relationships. It also defines tables for managing driver and customer details, bus fleet management, and customer history. The schema incorporates foreign key constraints to maintain data integrity across related tables.

Uploaded by

JF Rahat
Copyright
© © All Rights Reserved
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
6 views

db

The document outlines the SQL schema for a CityConnect database, including the creation of various tables such as User, Role, Permission, and their respective relationships. It also defines tables for managing driver and customer details, bus fleet management, and customer history. The schema incorporates foreign key constraints to maintain data integrity across related tables.

Uploaded by

JF Rahat
Copyright
© © All Rights Reserved
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 3

-- Use CityConnect Database

USE CityConnect;

-- 1. User Table
CREATE TABLE User (
UserID INT AUTO_INCREMENT PRIMARY KEY,
Username VARCHAR(50) UNIQUE NOT NULL,
PasswordHash VARCHAR(255) NOT NULL,
Email VARCHAR(100) UNIQUE NOT NULL,
PhoneNumber VARCHAR(15),
CreatedAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
IsActive ENUM('Y', 'N') DEFAULT 'Y'
);

-- 2. Role Table
CREATE TABLE Role (
RoleID INT AUTO_INCREMENT PRIMARY KEY,
RoleName VARCHAR(50) UNIQUE NOT NULL,
Description VARCHAR(255)
);

-- 3. Permission Table
CREATE TABLE Permission (
PermissionID INT AUTO_INCREMENT PRIMARY KEY,
PermissionName VARCHAR(50) UNIQUE NOT NULL,
Description VARCHAR(255)
);

-- 4. UserRole Pivot Table


CREATE TABLE UserRole (
UserID INT NOT NULL,
RoleID INT NOT NULL,
PRIMARY KEY (UserID, RoleID),
FOREIGN KEY (UserID) REFERENCES User(UserID) ON DELETE CASCADE,
FOREIGN KEY (RoleID) REFERENCES Role(RoleID) ON DELETE CASCADE
);

-- 5. RolePermission Pivot Table


CREATE TABLE RolePermission (
RoleID INT NOT NULL,
PermissionID INT NOT NULL,
PRIMARY KEY (RoleID, PermissionID),
FOREIGN KEY (RoleID) REFERENCES Role(RoleID) ON DELETE CASCADE,
FOREIGN KEY (PermissionID) REFERENCES Permission(PermissionID) ON DELETE
CASCADE
);
-- 4. Driver Details Table
CREATE TABLE DriverDetails (
UserID INT PRIMARY KEY,
LicenseNumber VARCHAR(20) UNIQUE NOT NULL,
ExperienceYears INT NOT NULL,
FOREIGN KEY (UserID) REFERENCES User(UserID) ON DELETE CASCADE
);

-- 5. Customer Details Table


CREATE TABLE CustomerDetails (
UserID INT PRIMARY KEY,
LoyaltyPoints INT DEFAULT 0,
FOREIGN KEY (UserID) REFERENCES User(UserID) ON DELETE CASCADE
);
-- 6. Station Table
CREATE TABLE Station (
StationID INT AUTO_INCREMENT PRIMARY KEY,
Name VARCHAR(20) NOT NULL
);

-- 7. Route Table
CREATE TABLE Route (
RouteID INT AUTO_INCREMENT PRIMARY KEY,
Name VARCHAR(20) NOT NULL,
OriginID INT NOT NULL,
DestinationID INT NOT NULL,
FOREIGN KEY (OriginID) REFERENCES Station(StationID) ON DELETE CASCADE,
FOREIGN KEY (DestinationID) REFERENCES Station(StationID) ON DELETE CASCADE
);

-- 8. Stop Table
CREATE TABLE Stop (
StationID INT NOT NULL,
RouteID INT NOT NULL,
StopNumber INT NOT NULL,
PRIMARY KEY (StationID, RouteID, StopNumber),
FOREIGN KEY (StationID) REFERENCES Station(StationID) ON DELETE CASCADE,
FOREIGN KEY (RouteID) REFERENCES Route(RouteID) ON DELETE CASCADE
);

-- 9. Timetable Table
CREATE TABLE Timetable (
TimetableID INT AUTO_INCREMENT PRIMARY KEY,
RouteID INT NOT NULL,
BusID INT NOT NULL,
DriverID INT NOT NULL,
St1_Time DATETIME,
St2_Time DATETIME,
St3_Time DATETIME,
St4_Time DATETIME,
St5_Time DATETIME,
St6_Time DATETIME,
St7_Time DATETIME,
FOREIGN KEY (RouteID) REFERENCES Route(RouteID) ON DELETE CASCADE,
FOREIGN KEY (BusID) REFERENCES Bus(BusID) ON DELETE CASCADE,
FOREIGN KEY (DriverID) REFERENCES Driver(DriverID) ON DELETE CASCADE
);

-- 10. Driver Table


CREATE TABLE Driver (
DriverID INT AUTO_INCREMENT PRIMARY KEY,
Name VARCHAR(30) NOT NULL
);

-- 11. DriverSalary Table


CREATE TABLE DriverSalary (
SalaryID INT AUTO_INCREMENT PRIMARY KEY,
Year INT NOT NULL,
Month ENUM('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',
'Oct', 'Nov', 'Dec') NOT NULL,
DriverID INT NOT NULL,
Hourly DECIMAL(10, 2) NOT NULL,
HoursWorked INT NOT NULL,
Salary DECIMAL(10, 2) NOT NULL,
FOREIGN KEY (DriverID) REFERENCES Driver(DriverID) ON DELETE CASCADE
);

-- 12. Bus Table


CREATE TABLE Bus (
BusID INT AUTO_INCREMENT PRIMARY KEY,
Make VARCHAR(30) NOT NULL,
Model VARCHAR(30) NOT NULL,
Year INT NOT NULL
);

-- 13. BusFleetManagement Table


CREATE TABLE BusFleetManagement (
FleetID INT AUTO_INCREMENT PRIMARY KEY,
BusID INT NOT NULL,
MaintenanceDate DATE NOT NULL,
FOREIGN KEY (BusID) REFERENCES Bus(BusID) ON DELETE CASCADE
);

-- 14. Customer Table


CREATE TABLE Customer (
CustomerID INT AUTO_INCREMENT PRIMARY KEY,
Name VARCHAR(30) NOT NULL
);

-- 15. CustomerHistory Table


CREATE TABLE CustomerHistory (
HistoryID INT AUTO_INCREMENT PRIMARY KEY,
CustomerID INT NOT NULL,
Datetime DATETIME NOT NULL,
EnterStationID INT NOT NULL,
ExitStationID INT NOT NULL,
Charges DECIMAL(10, 2) NOT NULL,
Credits DECIMAL(10, 2) NOT NULL,
Balance DECIMAL(10, 2) NOT NULL,
FOREIGN KEY (CustomerID) REFERENCES Customer(CustomerID) ON DELETE CASCADE,
FOREIGN KEY (EnterStationID) REFERENCES Station(StationID) ON DELETE CASCADE,
FOREIGN KEY (ExitStationID) REFERENCES Station(StationID) ON DELETE CASCADE
);

You might also like