i am getting confused with foreign key constraints..
i have the following table:
Expand|Select|Wrap|Line Numbers
- --
- -- Table structure for table `reviewer`
- --
- CREATE TABLE `reviewer` (
- `ReviewerID` varchar(8) NOT NULL,
- `Reviewer_fname` varchar(100) NOT NULL,
- `Reviewer_lname` varchar(100) NOT NULL,
- `Reviewer_address` varchar(300) NOT NULL,
- etc...
- ...
- ...
- PRIMARY KEY (`ReviewerID`)
- ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
- -- Table structure for table `papers`
- --
- CREATE TABLE `papers` (
- `PaperID` varchar(8) NOT NULL,
- `Title` varchar(100) NOT NULL,
- `FileName` varchar(100) NOT NULL,
- `FileType` varchar(50) NOT NULL,
- `FileSize` int(11) NOT NULL,
- `FileContent` mediumblob NOT NULL,
- `FileMime` varchar(50) NOT NULL,
- `AuthorID` varchar(8) NOT NULL,
- ect....
- ...
- PRIMARY KEY (`PaperID`),
- KEY `AuthorID` (`AuthorID`)
- ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Expand|Select|Wrap|Line Numbers
- CREATE TABLE `reviewer_paper` (
- `ReviewerID` varchar(8) NOT NULL,
- `PaperID` varchar(8) NOT NULL,
- `Date_rated` date default NULL,
- etc..
- ...
- PRIMARY KEY (`ReviewerID`,`PaperID`),
- KEY `PaperID` (`PaperID`)
- ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
- ALTER TABLE `reviewer_paper`
- ADD CONSTRAINT `reviewer_paper_ibfk_1` FOREIGN KEY (`PaperID`) REFERENCES `papers` (`PaperID`) ON DELETE CASCADE ON UPDATE CASCADE;
do i need to remove the index i placed on paperID and just put the primary key
PRIMARY KEY (`ReviewerID`,`PaperID`)
also for the foreign key, do i need to add the foreign keys for reviewerID also, i.e
Expand|Select|Wrap|Line Numbers
- ALTER TABLE `reviewer_paper`
- ADD CONSTRAINT `reviewer_paper_ibfk_1` FOREIGN KEY (`ReviewerID`) REFERENCES `reviewer` (`ReviewerID`) ON DELETE CASCADE ON UPDATE CASCADE;