* (asterisk) to denote a primary key field. PKs are unique and do not need to be marked with the ^ character. @ (at sign) to denote a foreign key field. Append [table.field] if the table and field a foreign key points to is not obvious. ^ (caret) to denote a unique field that is not a primary key. UNF: schedule(ClassId*, Class #, Sec, Class Title, Cr, Enr, Max, Meeting Dates, Days, Time, Bldg, Rm, Instructor, Footnotes) Table changes: New field/table name Original name Description of new field/table beginDate Meeting Dates First date endDate Meeting Dates Second date classmeeting New table Links class to multiple meetings. day Days Remove plural beginTime Time First time endTime Time Second time classmeetingId New PK for classmeeting table location Type of location, On Campus, Off Campus, Online Room Rm Room number/name. classmeetingday New table Links days to class meetings. buildingId Unique Id for each building. buildingCode Bldg buildingName UNUSED rmId Unique Id for each room. building New table Keeps building codes and names. rm New table Keeps room number/name (and building). instructor New table Keeps instructor info. instructorId PK for instructor. instructorName Instructor courseNumber Class # classTitle Class Title course New table Keep course number and title. courseId PK 1NF: schedule(ClassId*, Class #, Sec, Class Title, Cr, Enr, Max) classmeeting(ClassId*@, beginDate*, endDate*, day*, beginTime*, endTime*, Bldg*, Rm*, Instructor*, location(oncampus, offcampus, online)) 2NF: classmeeting(classmeetingId*, ClassId@, beginDate, endDate, day, beginTime, endTime, Bldg, Rm, Instructor, location(oncampus, offcampus, online)) 3NF: schedule(ClassId*, courseId@, Sec, Enr, Max) --or-- schedule(ClassId^, courseId@*, Sec*, Cr, Enr, Max) classmeeting(classmeetingId*, ClassId@, beginDate, endDate, beginTime, endTime, rmId@, instructorId@, location(oncampus, offcampus, online)) classmeetingday(classmeetingId*@, day*(M,T,W,H,F,S,U)) building(buildingId*, buildingCode, buildingName) rm(rmId*,buildingId@, Room) instructor(instructorId*, instructorName) course(courseId*, courseNumber, courseTitle, Cr) Three data rows: