2012-09-22 3 views
1
CREATE TABLE branch_book_list (
     branch_name CHAR(10), 
     book_ISBN CHAR (13), 
     book_name CHAR(40), 
     PRIMARY KEY (branch_name, book_ISBN) 
    ) 

관계에 기본 키가 하나만있을 수 있다고 말하는 블로그가 있지만 MySQL을 실행하면 MySQL이 테이블을 만듭니다.MySQL의 기본 키

+0

거기에는 기본 키가 하나 밖에 없으므로 귀하의 질문에 대한 내용을 실제로 볼 수 없습니다. – Mat

+2

그것은 하나의 기본 키입니다. 단지 두 개의 컬럼이 있습니다. – Ben

+1

@vini [this] (http://stackoverflow.com/review-beta/suggested-edits/687834)는 아주 좋은 제안 사항이 아닙니다. [코드 형식은 코드에만 사용해야합니다] (http://meta.stackexchange.com/questions/137755/reject-an-already-approved-suggested-edit-when-rolling-it-back). – Ben

답변

1

단일 기본 키에는 여러 개의 열이 포함될 수 있습니다. 그것은 여전히 ​​열쇠입니다.

기본 키를 대리 키이라고도하는 단일 열 숫자/자동 값으로 설정하는 것이 좋습니다. Branch_name과 ISBN의 실제 고유 조합의 경우 고유 색인으로 충분할 수 있습니다.

+0

서 있습니다. 감사합니다. –

+0

또한 추가 사항을 확인하십시오. 대답은 아니지만 좋은 근심이라 생각합니다. – GolezTrol

+0

다른 행의 한 행 x x z에서 데이터를 삽입했다고 가정하면 양쪽 리무는 고유 값 right.i를 가져야합니다. 두 열 모두 기본 키입니다. –

0

버전에 하나의 복합 기본 키가 있습니다.이를 피하기 위해 말하는 사람이 있지만 실제 문제는 정규화입니다.

예를 들어 디자인에서 각 지사는 하나의 책 사본 만 가질 수 있습니다. 도서 이름이 복제됩니다.

은 테이블을 정상화 ... 지점 주소, 책 저자 등 거기에 아무 분별있다

그것은 (당신이뿐만 아니라이 차 만들 수있는 ISBN의 고유 키와 책해야하지만 될 수 있습니다 문제) 일부 식별자 예를 들어 BranchID

증권 bookID로서, BranchID, 수량과

지점?

이것은 당신이 몇 가지

를 반전하고 BranchID와 등록 번호가 키가 주식, 이동 및 bookID로서 (ISBN 수 있도록 라이브러리는 다음 종종 책의 각 사본, 등록 번호가있는 경우) 그리고 복합 키를 제거하십시오.

이 문제를 해결하는 데있어 모든 것을 종이에서하고 있다고 상상해보십시오. 모든 지사의 전체 주식 목록을 검토하고, 책의 이름을 바꾸거나, 각 책에 저자를 추가하는 것이 행복할까요? 하나. 아마도 아닌가요? 비효율적 인 일을하는 코드를 작성하면 작업이 적지 만 더 이상 재미는 없습니다.