MySQL 5의 다중 열 기본 키
하는 법을 , 꼭 키를 가지고 하고 있습니다.SERIAL
모든 테이블의 모든 행에 대한 ID를 입력합니다.동시에, 저는 다대다 관계도 하고 있기 때문에, 관계를 조정하는 표의 두 열 중 하나에 고유한 값을 요구하는 것은 그것을 방해가 될 수 있습니다.
모든 열에 걸쳐 값의 조합이 정확하게 반복되지 않는 한 주어진 값이 어떤 열에서도 반복될 수 있도록 테이블의 기본 키를 어떻게 정의할 수 있습니까?
CREATE TABLE 구문 페이지에서 인용:
기본 키는 다중 열 인덱스일 수 있습니다.그러나 열 지정의 주 키 속성을 사용하여 다중 열 인덱스를 생성할 수는 없습니다.이렇게 하면 해당 단일 열만 주 열로 표시됩니다.별도의 기본 키(index_col_name, ...) 절을 사용해야 합니다.
다중 열 기본 키에는 다음과 같은 방법을 사용할 수 있습니다.
CREATE TABLE
product (
category INT NOT NULL,
id INT NOT NULL,
price DECIMAL,
PRIMARY KEY(category, id)
);
기본 키는 유사한 엔티티 중에서 고유하게(필요하고 충분히) 엔티티를 식별하는 도메인 개념입니다.복합(다중 열) 기본 키는 키의 일부가 다른 도메인 엔터티의 특정 인스턴스를 참조하는 경우에만 의미가 있습니다.
여러분이 개인적인 책들을 소장하고 있다고 가정해 보겠습니다.당신이 혼자인 한, 당신은 그것들을 세고 각각 번호를 할당할 수 있습니다.번호는 라이브러리 도메인의 기본 키입니다.
이제 라이브러리를 이웃의 라이브러리와 병합하지만 책이 속한 사용자를 구별할 수 있습니다.이제 도메인이 더 넓어지고 기본 키는 (owner, book_id)입니다.
따라서 각 기본 키 복합 재료를 만드는 것이 전략이 아니라 필요할 때 사용해야 합니다.
이제 MySQL에 대한 몇 가지 사실을 소개합니다.복합 기본 키를 정의하고 RDBSM에서 ID를 자동으로 증가시키려면 MyISAM과 InnoDB 동작의 차이를 알아야 합니다.
parent_id, child_id 두 개의 필드가 있는 테이블을 원한다고 가정해 보겠습니다.그리고 child_id를 자동으로 증분합니다.
MyISAM은 parent_id가 동일한 레코드 내에서 고유하게 자동 증가하고 InnoDB는 전체 테이블 내에서 고유하게 자동 증가합니다.
MyISAM에서는 기본 키를 (parent_id, child_id)로 정의하고 InnoDB에서는 (child_id, parent_id)로 정의해야 합니다. 자동 증분 필드는 InnoDB의 기본 키에서 가장 왼쪽에 있는 구성 요소여야 하기 때문입니다.
기본 키는 행의 고유한 값입니다.변경될 수 있는 값인 가격을 포함하는 것은 말이 안 됩니다.만약 당신이 많은 범위의 가격을 변경해야 한다면, 그 모든 주요한 가치들이 바뀔 것이라고 상상해 보세요.정말 엉망진창이 되겠군요!
언급URL : https://stackoverflow.com/questions/2642778/multi-column-primary-key-in-mysql-5
'programing' 카테고리의 다른 글
도커에서 명명된 태그와 최신 태그를 만드는 방법은 무엇입니까? (0) | 2023.09.03 |
---|---|
Spring의 "자동 프록시 자격 없음" 원인 추적 (0) | 2023.09.03 |
큰 MySQL 제품 내역 테이블 파티셔닝? (0) | 2023.09.03 |
점이 없는 파일(확장자가 없는 모든 파일)을 gitignore 파일에 추가하려면 어떻게 해야 합니까? (0) | 2023.09.03 |
내 발을 어떻게 가려요? (0) | 2023.08.29 |