Creation of Database and Related Tables Sequence Order
Creation of Database and Related Tables Sequence Order
-- 1. Hostels table
-- No foreign key dependencies (warden_id references Wardens, which can be
created later)
CREATE TABLE Hostels (
hostel_id INT PRIMARY KEY AUTO_INCREMENT,
hostel_name VARCHAR(50) NOT NULL,
total_rooms INT,
warden_id INT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
-- Note: Foreign key for warden_id is omitted temporarily to avoid dependency
on Wardens
);
-- 2. Students table
-- Depends on Hostels (hostel_id) and Rooms (room_id), but Rooms depends on
Students, so we handle circularity
CREATE TABLE Students (
student_id INT PRIMARY KEY,
student_name VARCHAR(100) NOT NULL,
roll_number VARCHAR(20) UNIQUE NOT NULL,
branch ENUM('CS', 'ME', 'EE', 'CE') NOT NULL,
year ENUM('1', '2', '3', '4') NOT NULL,
hostel_id INT,
room_id INT,
date_of_birth DATE,
gender VARCHAR(10) DEFAULT 'FEMALE',
contact_number VARCHAR(10) UNIQUE,
email_address VARCHAR(100) UNIQUE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (hostel_id) REFERENCES Hostels(hostel_id) ON DELETE SET NULL
-- Note: Foreign key for room_id is omitted temporarily to avoid dependency
on Rooms
);
-- 3. Rooms table
-- Depends on Hostels (hostel_id) and Students (student_id)
CREATE TABLE Rooms (
room_id INT PRIMARY KEY AUTO_INCREMENT,
hostel_id INT,
room_number VARCHAR(10) NOT NULL,
floor VARCHAR(20),
capacity INT DEFAULT 2,
room_type ENUM('AC', 'Non-AC') DEFAULT 'Non-AC',
status ENUM('Vacant', 'Occupied', 'Maintenance') DEFAULT 'Vacant',
maintenance_issue TEXT,
maintenance_est_completion DATE,
student_id INT,
FOREIGN KEY (hostel_id) REFERENCES Hostels(hostel_id) ON DELETE
CASCADE,
FOREIGN KEY (student_id) REFERENCES Students(student_id) ON DELETE SET
NULL
);
-- 4. Students_Login table
-- Depends on Students (student_id), corrected foreign key
CREATE TABLE Students_Login (
login_id INT PRIMARY KEY AUTO_INCREMENT,
student_id INT UNIQUE,
username VARCHAR(50) UNIQUE NOT NULL,
password VARCHAR(255) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (student_id) REFERENCES Students(student_id) ON DELETE
CASCADE
);
-- Add missing foreign key constraints after all tables are created
ALTER TABLE Hostels
ADD FOREIGN KEY (warden_id) REFERENCES Wardens(warden_id) ON DELETE
SET NULL;
-- 1. Students table
CREATE TABLE Students (
student_id INT PRIMARY KEY,
student_name VARCHAR(100) NOT NULL,
roll_number VARCHAR(20) UNIQUE NOT NULL,
date_of_birth DATE,
gender VARCHAR(10) DEFAULT 'FEMALE',
contact_number VARCHAR(10) UNIQUE,
email_address VARCHAR(100) UNIQUE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Insert data into Students (adjusted to include all columns after ALTER)
INSERT INTO Students (student_id, student_name, roll_number, branch, year,
hostel_id, room_id, date_of_birth, gender, contact_number, email_address,
created_at) VALUES
(1, 'Aarushi Sharma', '2021001', 'CS', '2', 1, NULL, '2002-05-15', 'FEMALE',
'9876543211', '[email protected]', '2021-01-01'),
(2, 'Bhavya Patel', '2021002', 'ME', '2', 1, NULL, '2002-08-20', 'FEMALE',
'9876543212', '[email protected]', '2021-01-01'),
(3, 'Chitra Reddy', '2021003', 'EE', '1', 1, NULL, '2003-03-10', 'FEMALE',
'9876543213', '[email protected]', '2021-01-01'),
(4, 'Divya Nair', '2021004', 'CE', '4', 1, NULL, '2000-11-25', 'FEMALE',
'9876543214', '[email protected]', '2021-01-01'),
(5, 'Esha Gupta', '2021005', 'CS', '2', 1, NULL, '2002-07-12', 'FEMALE',
'9876543215', '[email protected]', '2021-01-01'),
(6, 'Falguni Singh', '2021006', 'ME', '3', 1, NULL, '2001-09-30', 'FEMALE',
'9876543216', '[email protected]', '2021-01-01'),
(7, 'Gauri Desai', '2021007', 'EE', '1', 1, NULL, '2003-01-18', 'FEMALE',
'9876543217', '[email protected]', '2021-01-01'),
(8, 'Hina Kapoor', '2021008', 'CE', '4', 1, NULL, '2000-12-05', 'FEMALE',
'9876543218', '[email protected]', '2021-01-01'),
(9, 'Isha Verma', '2021009', 'CS', '2', 1, NULL, '2002-06-22', 'FEMALE',
'9876543219', '[email protected]', '2021-01-01'),
(10, 'Jaya Menon', '2021010', 'ME', '3', 1, NULL, '2001-10-15', 'FEMALE',
'9876543220', '[email protected]', '2021-01-01'),
-- (Continuing for all 100 students, abbreviated for brevity; ensure all rows match
this structure)
(100, 'Hina Sen', '2021100', 'CS', '2', 4, NULL, '2002-05-15', 'FEMALE',
'9876543310', '[email protected]', '2021-01-01');
-- 2. Wardens table
CREATE TABLE Wardens (
warden_id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100) NOT NULL,
username VARCHAR(50) UNIQUE NOT NULL,
password VARCHAR(255) NOT NULL,
email_address VARCHAR(100) UNIQUE,
phone VARCHAR(15),
hostel_assigned VARCHAR(50),
experience_years INT,
joining_date DATE,
address TEXT,
emergency_contact_name VARCHAR(100),
emergency_contact_relation VARCHAR(50),
emergency_contact_phone VARCHAR(15),
emergency_contact_address TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- 3. Hostels table
CREATE TABLE Hostels (
hostel_id INT PRIMARY KEY AUTO_INCREMENT,
hostel_name VARCHAR(50) NOT NULL,
total_rooms INT,
warden_id INT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (warden_id) REFERENCES Wardens(warden_id) ON DELETE SET
NULL
);
-- 4. Rooms table
CREATE TABLE Rooms (
room_id INT PRIMARY KEY AUTO_INCREMENT,
hostel_id INT,
room_number VARCHAR(10) NOT NULL,
floor VARCHAR(20),
is_occupied BOOLEAN DEFAULT FALSE,
student_id INT NULL,
FOREIGN KEY (hostel_id) REFERENCES Hostels(hostel_id) ON DELETE
CASCADE,
FOREIGN KEY (student_id) REFERENCES Students(student_id) ON DELETE SET
NULL
);
-- 5. Students_Login table
CREATE TABLE Students_Login (
login_id INT PRIMARY KEY AUTO_INCREMENT,
student_id INT UNIQUE,
username VARCHAR(50) UNIQUE NOT NULL,
password VARCHAR(255) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (student_id) REFERENCES Students(student_id) ON DELETE
CASCADE
);
-- 6. Parents table
CREATE TABLE Parents (
parent_id INT PRIMARY KEY AUTO_INCREMENT,
student_id INT,
father_name VARCHAR(100),
mother_name VARCHAR(100),
contact_number VARCHAR(15),
alternate_number VARCHAR(15),
address TEXT,
FOREIGN KEY (student_id) REFERENCES Students(student_id) ON DELETE
CASCADE
);
-- 7. Admins table
CREATE TABLE Admins (
admin_id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100) NOT NULL,
email VARCHAR(100) UNIQUE NOT NULL,
password VARCHAR(255) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE
CURRENT_TIMESTAMP
);
-- 8. Student_Room_Allocation table
CREATE TABLE Student_Room_Allocation (
allocation_id INT PRIMARY KEY AUTO_INCREMENT,
student_id INT,
room_id INT,
allocation_date DATE NOT NULL,
FOREIGN KEY (student_id) REFERENCES Students(student_id) ON DELETE
CASCADE,
FOREIGN KEY (room_id) REFERENCES Rooms(room_id) ON DELETE CASCADE
);
-- Add foreign keys to Students and Rooms after all tables are created
ALTER TABLE Students
ADD FOREIGN KEY (hostel_id) REFERENCES Hostels(hostel_id) ON DELETE SET
NULL,
ADD FOREIGN KEY (room_id) REFERENCES Rooms(room_id) ON DELETE SET
NULL;