Suppose we have the following requirements for a university database
that is used to keep track of students transcripts:
The university keeps track of each student's name (SNAME), student number (SNUM), social security number (SSSN), current address (SCADDR) and phone (SCPHONE), permanent address (SPADDR) and phone (SPPHONE), birthdate (BDATE), sex (SEX), class (CLASS) (freshman, sophomore, ..., graduate), major department (MAJORDEPTCODE), minor department (MINORDEPTCODE) (if any), and degree program (PROG) (B.A., B.S., ..., Ph.D.). Both SSN and Student Number have unique values for each student.
Each department is described by a name (DEPTNAME), department code (DEPTCODE), office number (DEPTOFFICE), office phone (DEPTPHONE), and college (DEPTCOLLEGE). Both name and code have unique values for each department.
Each course has a course name (CNAME), description (CDESC), code number (CNUM), number of semester hours (CREDIT), level (LEVEL), and offering department (CDEPT). The value of code number is unique for each course.
Each section has an instructor (INSTUCTORNAME), semester (SEMESTER), year (YEAR), course (SECCOURSE), and section number (SECNUM). Section numbers distinguish different sections of the same course that are taught during
the same semester/year; its values are 1, 2, 3, ...; up to the number of sections taught during each semester.
A transcript refers to a student (SSSN), refers to a particular section, and grade (GRADE).
Using above information and the schema shown below;
(a) Show all the functional dependencies that should hold among the attributes.
(b) Design schemas (Relational) for each relation of the database, detailed above, that are each in 3NF. Specify the key attributes and foreign keys for of each relation.
(c) Note any unspecified requirements, and make (Write) appropriate assumptions to make the specification complete.