반응형
SQL에서 복합 기본 키를 어떻게 정의 할 수 있습니까?
SQL에서 두 필드로 구성된 복합 기본 키를 어떻게 정의 할 수 있습니까?
나는 PHP를 사용하여 테이블과 모든 것을 만들고 있습니다. 나는 테이블 이름을 만들고 싶어 voting
필드 QuestionID
, MemeberID
및 vote
. 그리고 복합 기본 키는 필드 QuestionID
와 MemberID
.
어떻게해야합니까?
설명을 위해 테이블에는 기본 키가 하나만있을 수 있습니다. 기본 키는 (해당 테이블에서) 하나 이상의 열로 구성됩니다. 기본 키가 둘 이상의 열로 구성된 경우 복합 기본 키 라고합니다 . 다음과 같이 정의됩니다.
CREATE TABLE voting (
QuestionID NUMERIC,
MemberID NUMERIC,
PRIMARY KEY (QuestionID, MemberID)
);
쌍 (QuestionID, MemberID)은 테이블에 대해 고유해야하며 두 값 모두 NULL이 될 수 없습니다. 다음과 같은 쿼리를 수행하는 경우 :
SELECT * FROM voting WHERE QuestionID = 7
기본 키의 색인을 사용합니다. 그러나 이렇게하면 :
SELECT * FROM voting WHERE MemberID = 7
복합 색인을 사용하려면 "왼쪽"의 모든 키를 사용해야하기 때문이 아닙니다. 인덱스가 필드 (A, B, C)에 있고 기준이 B와 C에있는 경우 해당 인덱스는 해당 쿼리에 사용할 수 없습니다. 따라서 (QuestionID, MemberID) 및 (MemberID, QuestionID) 중 테이블 사용 방법에 가장 적합한 것을 선택하십시오.
필요한 경우 다른 인덱스를 추가하십시오.
CREATE UNIQUE INDEX idx1 ON voting (MemberID, QuestionID);
CREATE TABLE `voting` (
`QuestionID` int(10) unsigned NOT NULL,
`MemberId` int(10) unsigned NOT NULL,
`vote` int(10) unsigned NOT NULL,
PRIMARY KEY (`QuestionID`,`MemberId`)
);
참고 URL : https://stackoverflow.com/questions/1110349/how-can-i-define-a-composite-primary-key-in-sql
반응형
'IT박스' 카테고리의 다른 글
다중 레이어 퍼셉트론 (MLP) 아키텍처 : 은닉층 수와 은닉층 크기 선택 기준? (0) | 2020.08.25 |
---|---|
asp.net webapi 2 요청 및 응답 본문을 데이터베이스에 기록해야합니다. (0) | 2020.08.25 |
dapper.net에서 트랜잭션을 사용하는 방법은 무엇입니까? (0) | 2020.08.25 |
Swift readonly 외부, readwrite 내부 속성 (0) | 2020.08.25 |
Java에서 파일 생성 날짜 결정 (0) | 2020.08.25 |