db
db
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)
);
-- 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
);