MySQL에서 외래 키를 정의 하는 방법

출처: 인터넷
작성자: 사용자
키워드: 웹 프로그래밍 MySQL 자습서

경우 컴퓨터 제조업체의 데이터베이스 보유 기계 및 액세서리 제품 정보. 전체 제품 정보를 유지 하는 데 사용 하는 테이블, PC 라고 하며 액세서리 공급의 정보를 유지 하는 데 사용 하는 테이블 부분 이라고.

PC 테이블 컴퓨터에 의해 사용 되는 CPU 모델을 설명 하는 필드와 우리 모든 Cpu의 모델 목록으로 생각할 수 있는 CPU의 모델을 설명 하는 부품 테이블에서 필드입니다.

물론,이 공장 생산 컴퓨터, 사용 CPU 공급 정보 테이블 (부품) 모델에 존재 해야 합니다. 이 경우 두 테이블-pc 테이블에서 CPU 모델 부품 테이블에는 모델에 의해 제약은 제약 조건 관계 (제약 조건) 있다.

먼저 우리는 부품 테이블을 만듭니다.

만들 테이블 (부품

... 필드 정의...,

모델 VARCHAR NULL이 아닌

... 필드 정의...

);

다음은 PC 테이블이입니다.

테이블 PC 만들기 (

... 필드 정의...,

Cpumodel VARCHAR NULL이

... 필드 정의...

};

인덱스 설정

외래 키를 설정 하려면 해당 두 개의 필드 (참조 테이블, PC 테이블) 참조 테이블에 있는 인덱스 (색인) 하며 테이블 (참조 되는 테이블, 부품 테이블)을 참조.

부품 테이블:

ALTER TABLE 부품 추가 인덱스 Idx_model (모델);

인덱스를 추가 부품 테이블에는 인덱스 기반 모델 필드, 케이블에 이름을 Idx_model 라고.

PC 테이블을 비슷한:

ALTER 테이블 pc 추가 인덱스 Idx_cpumodel (Cpumodel);

사실, 이러한 두 인덱스는 테이블을 만들 때 설정할 수 있습니다. 단지 그것의 필요성을 강조 하는 여기.

외래 키 정의

다음은 두 테이블 사이의 위에서 설명한 "제약 조건"입니다. 이후 PC의 CPU 모델 부품 테이블에서 해당 모델을 참조 해야 합니다, 우리는 PC 테이블의 Cpumodel 필드를 외국 설정 키 (외래 키), 키 즉, 참조 값은 다른 테이블에서.

ALTER 테이블 pc 추가 제약 조건 Fk_cpu_model

외래 키 (Cpumodel)

참조 부품 (모델);

PC 테이블에 대 한 외래 키, 외래 키의 이름을 Fk_cpu_model 라고 하는 첫 번째 줄, 두 번째 줄이 외래 키이 테이블에서 Cpumodel 필드를 설정 하 이며 세 번째 라인은 모델 필드 부품 테이블의 외래 키 제한 됩니다 말.

이 방법에서는, 우리의 외래 키가 이루어집니다! 우리가 부품 테이블에 존재 하지 않는 CPU 모델을 사용 하는 PC를 만들려고 하는 경우 MySQL 만들어지지 않도록 PC을 금지 됩니다.

캐스케이드 작업

다음 사항을 고려:

기술자 개월 전 부품 테이블 하나에 입력 된 Cpu 시리즈의 모델 한 편지, 잃 었 었 다 발견 하 고 이제 수정 해야 합니다. 우리는 참조 테이블의 열에 해당 부품 테이블에서 참조 되는 열이 변경 될 때 자동으로 수정 해야 할.

외래 키를 정의할 때 끝에 키워드를 추가 하면:

업데이트 캐스케이드;에

즉, 기본 테이블을 업데이트 하는 경우 (그들은) 체인을 생산 하는 자식 테이블 업데이트 작업, 그것은 어떤 사람들이 "계단식" 작업을 전화 처럼 보인다.

문장 전체에 면 그것은:

ALTER 테이블 pc 추가 제약 조건 Fk_cpu_model

외래 키 (Cpumodel)

참조 부품 (모델)

업데이트 캐스케이드;에

캐스케이드, 이외에 있다 (마스터 테이블 변경 방지) 제한, NULL 설정

텍스트 뿐만 아니라:

기본 테이블에서 레코드를 삭제, 삭제에 추가 해야 하는 경우 자식 테이블에 해당 레코드 삭제를 허용 하지 않는 경우를 제한 합니다. 완전 한 경우는 다음과 같습니다.

두 테이블, 국가 및 도시, COUNTRY_ID의 도시는 외래 키입니다.

테이블 생성 국가 (

country_id smallint 서명 하지 NULL auto_increment

국가 varchar NULL이

Last_update 타임 스탬프 NOT NULL,

기본 키 (COUNTRY_ID)

) 엔진 innodb 기본 Charset = utf8; =

표 시 (만들기

city_id smallint 서명 하지 NULL auto_increment

도시 varchar NULL이

country_id smallint 서명 되지 않은 NOT NULL,

Last_update 타임 스탬프 NOT NULL 기본 current_timestamp 업데이트 Curren_timestamp에

기본 키 (city_id)

키 idx_fk_country_id (country_id)

업데이트 캐스케이드에 제한 하는 제약 조건 fk_city_country 삭제에 외래 키 (country_id) 참조 국가 (country_id)

) 엔진 innodb 기본 Charset = utf8; =

외래 키 삭제:

외래 키 정의 삭제
--
외국인 정의 때 키 articles.member_id 외래 키 제약 조건 fk_member 보다 articles.category_id 절 보다?
이 fk_member는 다음과 같이 외래 키 정의 삭제 하는 데 사용 됩니다.
mysql > ALTER TABLE 기사 드롭 외래 키 fk_member;
검색어 좋아, 1 행의 영향을 (0.25 초)
레코드: 1 중복: 0 경고: 0

그러면 삭제 됩니다 ARTICLES.MEMBER_ID 외래 키 정의 하지만 정의 제약 Fk_symbol (즉, 외래 키 기호)를 지정 하지 않는 경우? 걱정 하지 마세요, 지정 하지 않으면, MySQL 자체, 다음 명령을 사용 하 여 볼 수 있는 하나 만듭니다:

Mysql > 보기 만들 테이블 기사;
+----+--+
| 테이블 | 테이블 만들기 |
+----+--+
| 기사 | CREATE TABLE '기사' (
'article_id' int (1) 서명 하지 NULL auto_increment
'category_id' tinyint (3) 서명 되지 않은 not NULL,
'member_id' int (1) 서명 되지 않은 not NULL,
'제목' varchar (255) NULL이 아닌
기본 키 (이 하 ' article_id'),
키 'category_id' ('category_id')
키 'member_id' ('member_id')
제약 'Articles_ibfk_1' 외래 키 ('category_id') 참조 '카테고리' (이 하 ' ID')
) 엔진 innodb 기본 charset = = latin1 |
+----+--+
1 행 집합 (0.01 초)

다음 명령을 실행 하 여 외래 키 정의 삭제할 수 있기 때문에 ARTICLES.CATEGORY_ID에 대 한 외래 키 기호는 articles_ibfk_1, 그를 볼 수 있습니다.

mysql > ALTER TABLE 기사 드롭 외래 키 articles_ibfk_1;
검색어 좋아, 1 행 (0.66 초)의 영향을
레코드: 1 중복: 0 경고: 0

6입니다. 요약
--
소개 하는 외래 키의 단점은 속도 성능, 감속 하 고 물론 외래 키의 장점은 많습니다.

관련 문서

연락처

이 페이지의 내용은 인터넷에서 가져온 것이므로 Alibaba Cloud의 공식 의견이 아닙니다.이 페이지에서 언급 된 제품 및 서비스는 Alibaba Cloud와는 관련이 없으므로이 페이지의 내용이 골칫거리 인 경우 저희에게 알려주십시오. 우리는 5 일 근무일 이내에 이메일을 처리 할 것입니다.

커뮤니티에서 표절 사례를 발견한 경우 info-contact@alibabacloud.com 으로 관련 증거를 첨부하여 이메일을 보내주시기 바랍니다. 당사 직원이 영업일 기준 5일 내에 연락 드리도록 하겠습니다.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.