{"Addresses": {"columns": [[0, "address_id", "INTEGER", 0, null, 1], [1, "line_1", "VARCHAR(255)", 0, null, 0], [2, "line_2", "VARCHAR(255)", 0, null, 0], [3, "line_3", "VARCHAR(255)", 0, null, 0], [4, "city", "VARCHAR(255)", 0, null, 0], [5, "zip_postcode", "VARCHAR(20)", 0, null, 0], [6, "state_province_county", "VARCHAR(255)", 0, null, 0], [7, "country", "VARCHAR(255)", 0, null, 0], [8, "other_address_details", "VARCHAR(255)", 0, null, 0]], "primary_keys": ["address_id"], "foreign_keys": [], "unique_constraints": [], "check_constraints": []}, "Courses": {"columns": [[0, "course_id", "INTEGER", 0, null, 1], [1, "course_name", "VARCHAR(255)", 0, null, 0], [2, "course_description", "VARCHAR(255)", 0, null, 0], [3, "other_details", "VARCHAR(255)", 0, null, 0]], "primary_keys": ["course_id"], "foreign_keys": [], "unique_constraints": [], "check_constraints": []}, "Departments": {"columns": [[0, "department_id", "INTEGER", 0, null, 1], [1, "department_name", "VARCHAR(255)", 0, null, 0], [2, "department_description", "VARCHAR(255)", 0, null, 0], [3, "other_details", "VARCHAR(255)", 0, null, 0]], "primary_keys": ["department_id"], "foreign_keys": [], "unique_constraints": [], "check_constraints": []}, "Degree_Programs": {"columns": [[0, "degree_program_id", "INTEGER", 0, null, 1], [1, "department_id", "INTEGER", 1, null, 0], [2, "degree_summary_name", "VARCHAR(255)", 0, null, 0], [3, "degree_summary_description", "VARCHAR(255)", 0, null, 0], [4, "other_details", "VARCHAR(255)", 0, null, 0]], "primary_keys": ["degree_program_id"], "foreign_keys": [[0, 0, "Departments", "department_id", "department_id", "NO ACTION", "NO ACTION", "NONE"]], "unique_constraints": [], "check_constraints": []}, "Sections": {"columns": [[0, "section_id", "INTEGER", 0, null, 1], [1, "course_id", "INTEGER", 1, null, 0], [2, "section_name", "VARCHAR(255)", 0, null, 0], [3, "section_description", "VARCHAR(255)", 0, null, 0], [4, "other_details", "VARCHAR(255)", 0, null, 0]], "primary_keys": ["section_id"], "foreign_keys": [[0, 0, "Courses", "course_id", "course_id", "NO ACTION", "NO ACTION", "NONE"]], "unique_constraints": [], "check_constraints": []}, "Semesters": {"columns": [[0, "semester_id", "INTEGER", 0, null, 1], [1, "semester_name", "VARCHAR(255)", 0, null, 0], [2, "semester_description", "VARCHAR(255)", 0, null, 0], [3, "other_details", "VARCHAR(255)", 0, null, 0]], "primary_keys": ["semester_id"], "foreign_keys": [], "unique_constraints": [], "check_constraints": []}, "Students": {"columns": [[0, "student_id", "INTEGER", 0, null, 1], [1, "current_address_id", "INTEGER", 1, null, 0], [2, "permanent_address_id", "INTEGER", 1, null, 0], [3, "first_name", "VARCHAR(80)", 0, null, 0], [4, "middle_name", "VARCHAR(40)", 0, null, 0], [5, "last_name", "VARCHAR(40)", 0, null, 0], [6, "cell_mobile_number", "VARCHAR(40)", 0, null, 0], [7, "email_address", "VARCHAR(40)", 0, null, 0], [8, "ssn", "VARCHAR(40)", 0, null, 0], [9, "date_first_registered", "DATETIME", 0, null, 0], [10, "date_left", "DATETIME", 0, null, 0], [11, "other_student_details", "VARCHAR(255)", 0, null, 0]], "primary_keys": ["student_id"], "foreign_keys": [[0, 0, "Addresses", "permanent_address_id", "address_id", "NO ACTION", "NO ACTION", "NONE"], [1, 0, "Addresses", "current_address_id", "address_id", "NO ACTION", "NO ACTION", "NONE"]], "unique_constraints": [], "check_constraints": []}, "Student_Enrolment": {"columns": [[0, "student_enrolment_id", "INTEGER", 0, null, 1], [1, "degree_program_id", "INTEGER", 1, null, 0], [2, "semester_id", "INTEGER", 1, null, 0], [3, "student_id", "INTEGER", 1, null, 0], [4, "other_details", "VARCHAR(255)", 0, null, 0]], "primary_keys": ["student_enrolment_id"], "foreign_keys": [[0, 0, "Students", "student_id", "student_id", "NO ACTION", "NO ACTION", "NONE"], [1, 0, "Semesters", "semester_id", "semester_id", "NO ACTION", "NO ACTION", "NONE"], [2, 0, "Degree_Programs", "degree_program_id", "degree_program_id", "NO ACTION", "NO ACTION", "NONE"]], "unique_constraints": [], "check_constraints": []}, "Student_Enrolment_Courses": {"columns": [[0, "student_course_id", "INTEGER", 0, null, 1], [1, "course_id", "INTEGER", 1, null, 0], [2, "student_enrolment_id", "INTEGER", 1, null, 0]], "primary_keys": ["student_course_id"], "foreign_keys": [[0, 0, "Student_Enrolment", "student_enrolment_id", "student_enrolment_id", "NO ACTION", "NO ACTION", "NONE"], [1, 0, "Courses", "course_id", "course_id", "NO ACTION", "NO ACTION", "NONE"]], "unique_constraints": [], "check_constraints": []}, "Transcripts": {"columns": [[0, "transcript_id", "INTEGER", 0, null, 1], [1, "transcript_date", "DATETIME", 0, null, 0], [2, "other_details", "VARCHAR(255)", 0, null, 0]], "primary_keys": ["transcript_id"], "foreign_keys": [], "unique_constraints": [], "check_constraints": []}, "Transcript_Contents": {"columns": [[0, "student_course_id", "INTEGER", 1, null, 0], [1, "transcript_id", "INTEGER", 1, null, 0]], "primary_keys": [], "foreign_keys": [[0, 0, "Transcripts", "transcript_id", "transcript_id", "NO ACTION", "NO ACTION", "NONE"], [1, 0, "Student_Enrolment_Courses", "student_course_id", "student_course_id", "NO ACTION", "NO ACTION", "NONE"]], "unique_constraints": [], "check_constraints": []}}
CREATE TABLE Addresses (
    address_id INTEGER   PRIMARY KEY,
    line_1 VARCHAR(255),
    line_2 VARCHAR(255),
    line_3 VARCHAR(255),
    city VARCHAR(255),
    zip_postcode VARCHAR(20),
    state_province_county VARCHAR(255),
    country VARCHAR(255),
    other_address_details VARCHAR(255)
);

CREATE TABLE Courses (
    course_id INTEGER   PRIMARY KEY,
    course_name VARCHAR(255),
    course_description VARCHAR(255),
    other_details VARCHAR(255)
);

CREATE TABLE Departments (
    department_id INTEGER   PRIMARY KEY,
    department_name VARCHAR(255),
    department_description VARCHAR(255),
    other_details VARCHAR(255)
);

CREATE TABLE Degree_Programs (
    degree_program_id INTEGER   PRIMARY KEY,
    department_id INTEGER NOT NULL,
    degree_summary_name VARCHAR(255),
    degree_summary_description VARCHAR(255),
    other_details VARCHAR(255),
    FOREIGN KEY (department_id) REFERENCES Departments(department_id)
);

CREATE TABLE Sections (
    section_id INTEGER   PRIMARY KEY,
    course_id INTEGER NOT NULL,
    section_name VARCHAR(255),
    section_description VARCHAR(255),
    other_details VARCHAR(255),
    FOREIGN KEY (course_id) REFERENCES Courses(course_id)
);

CREATE TABLE Semesters (
    semester_id INTEGER   PRIMARY KEY,
    semester_name VARCHAR(255),
    semester_description VARCHAR(255),
    other_details VARCHAR(255)
);

CREATE TABLE Students (
    student_id INTEGER   PRIMARY KEY,
    current_address_id INTEGER NOT NULL,
    permanent_address_id INTEGER NOT NULL,
    first_name VARCHAR(80),
    middle_name VARCHAR(40),
    last_name VARCHAR(40),
    cell_mobile_number VARCHAR(40),
    email_address VARCHAR(40),
    ssn VARCHAR(40),
    date_first_registered DATETIME,
    date_left DATETIME,
    other_student_details VARCHAR(255),
    FOREIGN KEY (permanent_address_id) REFERENCES Addresses(address_id),
    FOREIGN KEY (current_address_id) REFERENCES Addresses(address_id)
);

CREATE TABLE Student_Enrolment (
    student_enrolment_id INTEGER   PRIMARY KEY,
    degree_program_id INTEGER NOT NULL,
    semester_id INTEGER NOT NULL,
    student_id INTEGER NOT NULL,
    other_details VARCHAR(255),
    FOREIGN KEY (student_id) REFERENCES Students(student_id),
    FOREIGN KEY (semester_id) REFERENCES Semesters(semester_id),
    FOREIGN KEY (degree_program_id) REFERENCES Degree_Programs(degree_program_id)
);

CREATE TABLE Student_Enrolment_Courses (
    student_course_id INTEGER   PRIMARY KEY,
    course_id INTEGER NOT NULL,
    student_enrolment_id INTEGER NOT NULL,
    FOREIGN KEY (student_enrolment_id) REFERENCES Student_Enrolment(student_enrolment_id),
    FOREIGN KEY (course_id) REFERENCES Courses(course_id)
);

CREATE TABLE Transcripts (
    transcript_id INTEGER   PRIMARY KEY,
    transcript_date DATETIME,
    other_details VARCHAR(255)
);

CREATE TABLE Transcript_Contents (
    student_course_id INTEGER NOT NULL,
    transcript_id INTEGER NOT NULL,
    FOREIGN KEY (transcript_id) REFERENCES Transcripts(transcript_id),
    FOREIGN KEY (student_course_id) REFERENCES Student_Enrolment_Courses(student_course_id)
);