2014-12-14 2 views
0

데이터베이스에 두 개의 테이블이 있습니다.MySQL - 관계형 테이블 - 다중 관계를 만드는 방법?

Table 1 : book 
book_id (Primary & Auto Increment) 
book_name 
writer_id (Foreign Key from writer table, selected as index) 

Table 2 : writer 
writer_id (Primary & Auto Increment) 
writer_name 

책에 작가를 한 명만 추가 할 수 있지만 둘 이상의 작성자가 책을 쓸 수 있습니다. 어떻게하면 될까요?

필자는 writer_2 및 writer_3이라는 테이블을 만들 수 있다고 생각하여 (대부분의 책은 1,2,3 명의 작성자가 작성했기 때문에) 내 테이블에 외래 키로 추가했지만 대체 솔루션을 공개합니다.

필자는 phpmyadmin을 사용하고 있으며 테이블 스토리지 엔진은 InnoDB입니다.

답변

1

책에 작성자를 지정하는 접합 테이블이 필요합니다. 예를 들어

create table BookWriter (
    Book_Id int not null, 
    Writer_Id int not null, 
    Alias varchar(255), 
    foreign key (Book_id) references book(book_id), 
    foreign key (Writer_Id) references writer(writer_id) 
); 

는 "킬 고어 송어가"라는 책을 썼다 "비너스 : 같은 별칭으로이 표에 추가 정보를 가질 수

create table BookWriter (
    Book_Id int not null, 
    Writer_Id int not null, 
    foreign key (Book_id) references book(book_id), 
    foreign key (Writer_Id) references writer(writer_id) 
); 

참고 :이 같은 일 것입니다 Half-Shell에서 "Kurt Vonnegut이었습니다.

+0

이제 나는 그것을 얻었습니다. 그래서 나는 한 명 이상의 작가를 책에 배정 할 수 있습니다. – salep

+0

@salep. . . 네, 테이블에 여러 개의 행이 있습니다. 하나는 책에 쓰는 각각의 행입니다. –

+0

BookWriter보다는 "book_total"이라는 테이블을 만들고이 테이블의 책과 관련된 다른 테이블 (book_id, writer_id, book_image_id, book_categories_id 등)의 모든 외래 키를 할당하는 것이 좋습니다. 나는 당신이 제안한 것과 같은 구조를 사용할 것입니다. 그러면 SQL 쿼리를 쉽게 수행하고 특정 책과 관련된 모든 결과를 얻을 수 있습니다. – salep

관련 문제