drop table stud_course;
drop table course;
drop table student;
drop table dept;
drop table account;
drop table address;


create table address (
    addressId NUMERIC(30) NOT NULL,
    street VARCHAR(255),
    code NUMERIC(30),
    city VARCHAR(255),
    state VARCHAR(255),
    constraint addr_ct primary key (addressId)
);

create table account (
    accountId VARCHAR(255) NOT NULL,
    feesPaid NUMERIC(30,2),
    feesDue NUMERIC(30,2),
    dueDate DATE,
    constraint acc_ct primary key (accountId)
);

create table dept (
    deptId NUMERIC(30) NOT NULL,
    deptName VARCHAR(255),
    constraint dept_ct primary key (deptId)
);

create table student (
    studentId NUMERIC(30) NOT NULL,
    studentName VARCHAR(255),
    deptId NUMERIC(30),
    addressId NUMERIC(30),
    accountId VARCHAR(255),
    constraint st_ct primary key (studentId),
    FOREIGN KEY (deptId) REFERENCES dept (deptId),
    FOREIGN KEY (addressId) REFERENCES address (addressId),
    FOREIGN KEY (accountId) REFERENCES account (accountId)
);

create table course (
    courseId NUMERIC(30) NOT NULL,
    deptId NUMERIC(30),
    courseName VARCHAR(255),
    sylabus BLOB,
    constraint course_ct primary key (courseId),
    FOREIGN KEY (deptId) REFERENCES dept (deptId)
);

create table stud_course (
    courseId NUMERIC(30) NOT NULL,
    studentId NUMERIC(30) NOT NULL,
    constraint stco_ct primary key (courseId, studentId),
    FOREIGN KEY (courseId) REFERENCES course (courseId),
    FOREIGN KEY (studentId) REFERENCES student (studentId)
);

