added l5
This commit is contained in:
162
g11-m3-m5/database_setup.sql
Normal file
162
g11-m3-m5/database_setup.sql
Normal file
@@ -0,0 +1,162 @@
|
||||
-- database_setup.sql
|
||||
-- Core Tables Creation
|
||||
|
||||
-- 1. Students Table
|
||||
CREATE TABLE students (
|
||||
student_id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
full_name TEXT NOT NULL,
|
||||
date_of_birth DATE,
|
||||
class_group TEXT,
|
||||
emergency_contact TEXT,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
-- 2. Teachers Table
|
||||
CREATE TABLE teachers (
|
||||
teacher_id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
full_name TEXT NOT NULL,
|
||||
department TEXT,
|
||||
email TEXT,
|
||||
qualifications TEXT,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
-- 3. Subjects Table
|
||||
CREATE TABLE subjects (
|
||||
subject_id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
subject_name TEXT NOT NULL,
|
||||
department TEXT,
|
||||
credits INTEGER,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
-- 4. Rooms Table
|
||||
CREATE TABLE rooms (
|
||||
room_id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
room_number TEXT NOT NULL,
|
||||
capacity INTEGER,
|
||||
equipment TEXT,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
-- 5. Classes Table
|
||||
CREATE TABLE classes (
|
||||
class_id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
class_name TEXT NOT NULL,
|
||||
homeroom_teacher_id INTEGER,
|
||||
academic_year TEXT,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
FOREIGN KEY (homeroom_teacher_id) REFERENCES teachers(teacher_id)
|
||||
);
|
||||
|
||||
-- 6. Tech Tracks Table
|
||||
CREATE TABLE tech_tracks (
|
||||
track_id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
track_name TEXT NOT NULL,
|
||||
description TEXT,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
-- 7. English Levels Table
|
||||
CREATE TABLE english_levels (
|
||||
level_id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
level_code TEXT NOT NULL,
|
||||
description TEXT,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
-- 8. Special Groups Table
|
||||
CREATE TABLE special_groups (
|
||||
group_id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
group_name TEXT NOT NULL,
|
||||
group_type TEXT,
|
||||
teacher_in_charge_id INTEGER,
|
||||
max_participants INTEGER,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
FOREIGN KEY (teacher_in_charge_id) REFERENCES teachers(teacher_id)
|
||||
);
|
||||
|
||||
-- 9. Timeslots Table
|
||||
CREATE TABLE timeslots (
|
||||
timeslot_id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
day_of_week TEXT NOT NULL,
|
||||
period_number INTEGER,
|
||||
start_time TIME NOT NULL,
|
||||
end_time TIME NOT NULL,
|
||||
academic_module TEXT,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
-- 10. Schedule Entries Table (Core Connection Table)
|
||||
CREATE TABLE schedule_entries (
|
||||
entry_id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
student_id INTEGER NOT NULL,
|
||||
teacher_id INTEGER NOT NULL,
|
||||
subject_id INTEGER NOT NULL,
|
||||
room_id INTEGER,
|
||||
timeslot_id INTEGER NOT NULL,
|
||||
academic_year TEXT NOT NULL,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
FOREIGN KEY (student_id) REFERENCES students(student_id),
|
||||
FOREIGN KEY (teacher_id) REFERENCES teachers(teacher_id),
|
||||
FOREIGN KEY (subject_id) REFERENCES subjects(subject_id),
|
||||
FOREIGN KEY (room_id) REFERENCES rooms(room_id),
|
||||
FOREIGN KEY (timeslot_id) REFERENCES timeslots(timeslot_id)
|
||||
);
|
||||
|
||||
-- 11. Users Table (Security)
|
||||
CREATE TABLE users (
|
||||
user_id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
username TEXT NOT NULL UNIQUE,
|
||||
password_hash TEXT NOT NULL,
|
||||
role TEXT NOT NULL,
|
||||
email TEXT,
|
||||
last_login TIMESTAMP,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
-- 12. Audit Log Table
|
||||
CREATE TABLE audit_log (
|
||||
log_id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
user_id INTEGER,
|
||||
action TEXT NOT NULL,
|
||||
table_name TEXT NOT NULL,
|
||||
record_id INTEGER,
|
||||
old_value TEXT,
|
||||
new_value TEXT,
|
||||
timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
FOREIGN KEY (user_id) REFERENCES users(user_id)
|
||||
);
|
||||
|
||||
-- 13. Relationship Tables
|
||||
CREATE TABLE student_subjects (
|
||||
student_id INTEGER NOT NULL,
|
||||
subject_id INTEGER NOT NULL,
|
||||
PRIMARY KEY (student_id, subject_id),
|
||||
FOREIGN KEY (student_id) REFERENCES students(student_id),
|
||||
FOREIGN KEY (subject_id) REFERENCES subjects(subject_id)
|
||||
);
|
||||
|
||||
CREATE TABLE student_tech_tracks (
|
||||
student_id INTEGER NOT NULL,
|
||||
track_id INTEGER NOT NULL,
|
||||
PRIMARY KEY (student_id, track_id),
|
||||
FOREIGN KEY (student_id) REFERENCES students(student_id),
|
||||
FOREIGN KEY (track_id) REFERENCES tech_tracks(track_id)
|
||||
);
|
||||
|
||||
CREATE TABLE student_english_levels (
|
||||
student_id INTEGER NOT NULL,
|
||||
level_id INTEGER NOT NULL,
|
||||
PRIMARY KEY (student_id, level_id),
|
||||
FOREIGN KEY (student_id) REFERENCES students(student_id),
|
||||
FOREIGN KEY (level_id) REFERENCES english_levels(level_id)
|
||||
);
|
||||
|
||||
CREATE TABLE student_groups (
|
||||
student_id INTEGER NOT NULL,
|
||||
group_id INTEGER NOT NULL,
|
||||
PRIMARY KEY (student_id, group_id),
|
||||
FOREIGN KEY (student_id) REFERENCES students(student_id),
|
||||
FOREIGN KEY (group_id) REFERENCES special_groups(group_id)
|
||||
);
|
||||
Reference in New Issue
Block a user