Skip to content

Instantly share code, notes, and snippets.

@SilverRainZ
Created November 2, 2015 14:03
Show Gist options
  • Save SilverRainZ/413f7ad4108cf59ebb0d to your computer and use it in GitHub Desktop.
Save SilverRainZ/413f7ad4108cf59ebb0d to your computer and use it in GitHub Desktop.
create_tables.sql
/* MySQL compatiable */
drop table prereq;
drop table time_slot;
drop table advisor;
drop table takes;
drop table student;
drop table teaches;
drop table section;
drop table instructor;
drop table course;
drop table department;
drop table classroom;
create table classroom ( building varchar(15)
, room_number varchar(7)
, capacity numeric(4,0)
, primary key (building, room_number)
);
create table department ( dept_name varchar(20)
, building varchar(15)
, budget numeric(12,2) check (budget > 0)
, primary key (dept_name)
);
create table course ( course_id varchar(8)
, title varchar(50)
, dept_name varchar(20)
, credits numeric(2,0) check (credits > 0)
, primary key (course_id)
, foreign key (dept_name) references department (dept_name)
on delete set null
);
create table instructor ( ID varchar(5)
, name varchar(20) not null
, dept_name varchar(20)
, salary numeric(8,2) check (salary > 29000)
, primary key (ID)
, foreign key (dept_name) references department(dept_name)
on delete set null
);
create table section ( course_id varchar(8)
, sec_id varchar(8)
, semester varchar(6) check (semester in ('Fall', 'Winter', 'Spring', 'Summer'))
, year numeric(4,0) check (year > 1701 and year < 2100)
, building varchar(15)
, room_number varchar(7)
, time_slot_id varchar(4)
, primary key (course_id, sec_id, semester, year)
, foreign key (course_id) references course (course_id)
on delete cascade
, foreign key (building, room_number) references classroom (building, room_number)
on delete set null
);
create table teaches ( ID varchar(5)
, course_id varchar(8)
, sec_id varchar(8)
, semester varchar(6)
, year numeric(4,0)
, primary key (ID, course_id, sec_id, semester, year)
, foreign key (course_id,sec_id, semester, year) references section (course_id, sec_id, semester, year)
on delete cascade
, foreign key (ID) references instructor (ID)
on delete cascade
);
create table student ( ID varchar(5)
, name varchar(20) not null
, dept_name varchar(20)
, tot_cred numeric(3,0) check (tot_cred >= 0)
, primary key (ID)
, foreign key (dept_name) references department (dept_name)
on delete set null
);
create table takes ( ID varchar(5)
, course_id varchar(8)
, sec_id varchar(8)
, semester varchar(6)
, year numeric(4,0)
, grade varchar(2)
, primary key (ID, course_id, sec_id, semester, year)
, foreign key (course_id,sec_id, semester, year) references section (course_id,sec_id, semester, year)
on delete cascade
, foreign key (ID) references student (ID)
on delete cascade
);
create table advisor ( s_ID varchar(5)
, i_ID varchar(5)
, primary key (s_ID)
, foreign key (i_ID) references instructor (ID)
on delete set null
, foreign key (s_ID) references student (ID)
on delete cascade
);
create table time_slot ( time_slot_id varchar(4)
, day varchar(1)
, start_hr numeric(2) check (start_hr >= 0 and start_hr < 24)
, start_min numeric(2) check (start_min >= 0 and start_min < 60)
, end_hr numeric(2) check (end_hr >= 0 and end_hr < 24)
, end_min numeric(2) check (end_min >= 0 and end_min < 60)
, primary key (time_slot_id, day, start_hr, start_min)
);
create table prereq ( course_id varchar(8)
, prereq_id varchar(8)
, primary key (course_id, prereq_id)
, foreign key (course_id) references course (course_id)
on delete cascade
, foreign key (prereq_id) references course (course_id)
);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment