2015-01-09 48 views
0
设置一个一对多的关系,我有一个问题设置我的一个一对多的关系上的phpMyAdmin

问题上的phpMyAdmin

这里

是tbl_books

book_id(主键) bookcat_id_fk(外键'上更新的制约,对删除限制') BOOKNAME bookdesc

这里是tbl_bookcat

bookcat_id(主键) bookcat_name

两者之间的关系应该是是有一个类别为MANY的书籍,所以是一对多的关系。

是我得到将是我收到错误的问题:复制关键bookcat_id_fk

进入“1”,这意味着我不能更多的书籍分配到,因为这同一类别,所以我一对多关系不起作用。我已经搜查,但我可以找到答案,我想知道你是否可以帮助我。

谢谢。

回答

0

我怀疑你的密钥定义bookcat_id_fk是独特的,但没有看到完整的转储不知道肯定。无论如何,我相信这是你想要实现的:

CREATE TABLE IF NOT EXISTS `tbl_bookcat` (
    `bookcat_id` int(11) NOT NULL, 
    `bookcat_name` varchar(255) NOT NULL 
) ENGINE=InnoDB DEFAULT CHARSET=latin1; 

CREATE TABLE IF NOT EXISTS `tbl_books` (
    `book_id` int(11) NOT NULL, 
    `bookcat_id_fk` int(11) NOT NULL, 
    `bookname` varchar(255) NOT NULL, 
    `bookdesc` varchar(255) NOT NULL 
) ENGINE=InnoDB DEFAULT CHARSET=latin1; 


ALTER TABLE `tbl_bookcat` 
    ADD PRIMARY KEY (`bookcat_id`); 

ALTER TABLE `tbl_books` 
    ADD PRIMARY KEY (`book_id`), 
    ADD KEY `bookcat_id_fk` (`bookcat_id_fk`); 

ALTER TABLE `tbl_bookcat` 
    MODIFY `bookcat_id` int(11) NOT NULL AUTO_INCREMENT; 

ALTER TABLE `tbl_books` 
    MODIFY `book_id` int(11) NOT NULL AUTO_INCREMENT; 

ALTER TABLE `tbl_books` 
    ADD CONSTRAINT `tbl_books_ibfk_1` FOREIGN KEY (`bookcat_id_fk`) REFERENCES `tbl_bookcat` (`bookcat_id`);