在PHPMyAdmin上设置一对多关系的问题

时间:2015-01-09 18:28:31

标签: mysql foreign-keys

我在PHPMyAdmin上设置我的一对多关系时遇到问题

这是tbl_books

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

这是tbl_bookcat

bookcat_id(主键) bookcat_name

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

我遇到的问题是我收到错误:关键bookcat_id_fk重复输入'1'

这意味着由于这个原因,我无法将更多书籍分配到同一类别,因此我的一对多关系无效。我已经搜索了但我能找到答案,我想知道你是否可以帮助我。

感谢。

1 个答案:

答案 0 :(得分: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`);