0

I have this code right here: `

DROP TABLE IF EXISTS ‘User’ ;

CREATE TABLE IF NOT EXISTS `User` (
  `userID` INT NOT NULL,
  `UserPass` VARCHAR(45) NOT NULL,
  `department` VARCHAR(45) NOT NULL,
  `majorName` VARCHAR(45) NULL,
  `academicYear` INT(4) NULL,
  `minorName` VARCHAR(45) NULL,
  `userName` VARCHAR(45) NOT NULL,
  `userEmail` VARCHAR(45) NOT NULL,
  `userType` VARCHAR(45) NOT NULL,
  `AdvID` INT NULL,
  PRIMARY KEY (`userID`));
  
 ALTER TABLE `User` ADD FOREIGN KEY (`AdvID`) REFERENCES `User` (`userID`);


DROP TABLE IF EXISTS ‘AdvisorAvailability’ ;

CREATE TABLE IF NOT EXISTS `AdvisorAvailability` (
  `date/timeBegin` DATETIME NOT NULL,
  `date/timeEnd` DATETIME NOT NULL,
  `ID` INT NOT NULL,
  PRIMARY KEY (`date/timeBegin`,`date/timeEnd`, `ID`)
    )
;

ALTER TABLE `AdvisorAvailability` ADD FOREIGN KEY (`ID`) REFERENCES `User` (`userID`);



DROP TABLE IF EXISTS ‘meetingSchedule’ ;

CREATE TABLE IF NOT EXISTS `meetingSchedule` (
  `date/timeBegin` DATETIME NOT NULL,
  `date/timeEnd` DATETIME NOT NULL,
  `AdvID` INT NOT NULL,
  `StuID` INT NOT NULL,
  `location` VARCHAR(45) NULL,
  `meetingNotes` VARCHAR(45) NULL,
  PRIMARY KEY (`date/timeBegin`,`date/timeEnd`, `AdvID`),
  FOREIGN KEY (`AdvID`) REFERENCES User(`userID`),
  FOREIGN KEY (`StuID`) REFERENCES User(`userID`));


DROP TABLE IF EXISTS ‘course’ ;

CREATE TABLE IF NOT EXISTS `course` (
`courseName` VARCHAR(45) NOT NULL,
`classRestriction` VARCHAR(45) NULL,
`majorRestriction` VARCHAR(45) NULL,
PRIMARY KEY (`courseName`)

);

DROP TABLE IF EXISTS `courseListing`;

CREATE TABLE IF NOT EXISTS `courseListing` (
  `CRN` INT NOT NULL,
  `courseName` VARCHAR(45) NOT NULL,
  `numberOfSeats` VARCHAR(45) NULL,
  `DayOfWeek` VARCHAR(45) NULL,
  `TimeOfDayBegin` TIME NULL,
  `TimeOfDayEnd` TIME NULL,
  `location` VARCHAR(45) NULL,
  `professor` VARCHAR(45) NULL,
  PRIMARY KEY (`CRN`),
  FOREIGN KEY (`courseName`) REFERENCES `course`(`courseName`)
)
;

DROP TABLE IF EXISTS ‘courseSchedule’ ;

CREATE TABLE IF NOT EXISTS `courseSchedule` (
  `termID` INT NOT NULL,
  `CRN` INT NOT NULL,
  PRIMARY KEY (`termID`),
  FOREIGN KEY (`CRN`) REFERENCES `courseListing`(`CRN`))
;

DROP TABLE IF EXISTS `Prereq`;

CREATE TABLE IF NOT EXISTS `Prereq` (
  `Course` VARCHAR(45) NOT NULL,
  `PreReqCourse` VARCHAR(45) NOT NULL,
  PRIMARY KEY (`Course`,`PreReqCourse`),
  FOREIGN KEY (`Course`) REFERENCES `course`(`courseName`),
  FOREIGN KEY (`PreReqCourse`) REFERENCES `course`(`courseName`))
;

DROP TABLE IF EXISTS `Coreq`;

CREATE TABLE IF NOT EXISTS `Coreq` (
  `Course` VARCHAR(45) NOT NULL,
  `CoReqCourse` VARCHAR(45) NOT NULL,
  PRIMARY KEY (`Course`,`CoReqCourse`),
  FOREIGN KEY (`Course`) REFERENCES `course`(`courseName`),
  FOREIGN KEY (`CoReqCourse`) REFERENCES `course`(`courseName`))
;


DROP TABLE IF EXISTS ‘Registration’ ;

CREATE TABLE IF NOT EXISTS `Registration` (
  `ID` INT NOT NULL,
  `termID` INT NOT NULL,
  `grade` VARCHAR(45) NULL,
  `className` VARCHAR(45) NULL,
    PRIMARY KEY (`ID`,`termID`)
);

ALTER TABLE `Registration` ADD FOREIGN KEY (`termID`) REFERENCES `courseSchedule` (`termID`);

DROP TABLE IF EXISTS ‘minorRequirements’ ;

CREATE TABLE IF NOT EXISTS `minorRequirements` (
  `minorName` VARCHAR(20) NOT NULL,
  PRIMARY KEY (`minorName`))
;

DROP TABLE IF EXISTS ‘courseMinorReq’ ;

CREATE TABLE IF NOT EXISTS `courseMinorReq` (
  `CRN` INT NOT NULL,
  `catalogYear` VARCHAR(45) NOT NULL,
  `minorName` VARCHAR(20) NOT NULL,
  PRIMARY KEY (`CRN`, `minorName`, `catalogYear`),
  FOREIGN KEY (`CRN`) REFERENCES `courseListing` (`CRN`),
  FOREIGN KEY (`minorName`) REFERENCES `minorRequirements` (`minorName`))
;

DROP TABLE IF EXISTS ‘majorRequirements’ ;

CREATE TABLE IF NOT EXISTS `majorRequirements` (
  `majorName` VARCHAR(20) NOT NULL,
  PRIMARY KEY (`majorName`))
;

DROP TABLE IF EXISTS ‘courseMajorReq’ ;

CREATE TABLE IF NOT EXISTS `courseMajorReq` (
  `catalogYear` INT NOT NULL,
  `CRN` INT NOT NULL,
  `majorName` VARCHAR(20) NOT NULL,
  PRIMARY KEY (`catalogYear`, `CRN`, `majorName`),
  FOREIGN KEY (`CRN`) REFERENCES `courseListing` (`CRN`),
  FOREIGN KEY (`majorName`) REFERENCES `majorRequirements` (`majorName`))
;


DELIMITER ;

and for some reason when I run for a second time (I always make sure I can run my create statements back to back in case I made any mistakes) it errors out with

DROP TABLE IF EXISTS `courseListing`;

MySQL said: Documentation #1217 - Cannot delete or update a parent row: a foreign key constraint fails`

I feel like I've gotten this to work at one point, what am I doing incorrectly now? I know I must have screwed up an FK somewhere, I just don't know where. Thanks for any help, this is my first month or so with SQL so any feedback is appreciated!

RiggsFolly
  • 93,638
  • 21
  • 103
  • 149
gulade47
  • 11
  • 1

0 Answers0