2014-06-07 4 views
0

나는 이렇게 유효합니까? MySql 기본 키의 일부로 외래 키를 사용할 수 있습니까?

내 ACCOUNTS 테이블의 열은 다음과 같습니다

user_id (Primary Key) 
user_name 
user_pass 
user_email 
user_date 

계정은 여러 문자를 가질 수 있습니다. Heres는 내가 그 테이블 작성하는 방법 : CHARACTERS 테이블 :

character_ID 
user_ID (foreign key) 
character_name 
...(random columns) 

내가 내 PRIMARY KEY (character_ID 용할 user_ID) 만들 수 있습니까? 또는 이것을 구별하는 더 좋은 방법이 있습니까?

편집 :이 허용 복합 키하지만 foreign key된다

CREATE TABLE characters(
    -> char_id INT(8) NOT NULL AUTO_INCREMENT, 
    -> char_name VARCHAR(50) NOT NULL, 
    -> user_id INT(8) 
    -> PRIMARY KEY(char_id, user_id), 
    -> FOREIGN KEY (user_id) REFERENCES users(user_id) 
    ->) 
    -> ; 
+0

쇼를 위해 테이블을 생성 PK로 을 만들 것입니다 다른 모든 필드를 결정할 수 있다면 그것은 귀하의 경우

그래서, "사회 보장 번호"등과 같은 일반/일반 될 수 있습니다 '문자 '. –

+0

가능합니다. 그러면 복합 키가됩니다. – Rahul

+0

@Ravinder 나는 그것을 아직 끝내지 않았다. 그러나 나는 내가 그것을 할 것이라고 생각하는 방법을 추가하기 위해 나의 작전을 편집했다. – user3521471

답변

1

예 모두 (char_id, USER_ID를) 만들 수 차 문자 테이블에서 키를 누른 다음 같은 : 여기 내가 테이블을 만드는 것 어떻게 중복 된 것이므로 은 기본 키로 사용하지 않는 것이 좋습니다.

일반적으로 은 레코드의 다른 모든 필드를 확인하고 primary key으로 지정할 수있는 필드를 사용하는 것이 가장 좋습니다.

synthetic (MySQL의 경우 auto_increment, SQL Server의 경우 IDENTITY)과 같을 수 있습니다. 또는 char_id 혼자 유일하게 그때 char_id INT NOT NULL AUTO_INCREMENT primary key

+0

내 예제의 외래 키는 다른 테이블의 기본 키. 그래서 아무 속임수가 : P – user3521471

+0

@ user3521471, 이들은 일반적인 지침입니다. – Rahul

관련 문제