keembloo

데이터베이스 기본키(PK), 외래키(FK) 본문

MySQL(DB)

데이터베이스 기본키(PK), 외래키(FK)

keembloo 2023. 8. 2. 11:09
728x90

 

1 . 기본키 식별키 Primary Key (PK)

 

 

  • 테이블의 유일한 값을 가지는 필드
  • 데이터의 중복이 없는 식별가능한 필드를 선정
  • 테이블 1개당 PK필드 1개 이상 (권장)
  • 중복 , null , 공백은 사용불가
  • 해당 PK필드는 다른테이블의 필드에서  참조 당한다
  • ex) 주민번호, 학번, ISBN(책번호) , 상호코드 등등
  • not null + unique 속성을 합쳐놓은 것 

 

2. 참조키 외래키 Foreign Key (FK)

 

 

  • 다른 테이블의 PK필드와 연결
  • FK필드명은 PK필드명과 동일하게 사용 (권장)
  • FK필드의 타입은 PK필드의 타입과 동일 (필수)
  • 참조하는 테이블에서 FK 필드 선언 ( 1:M 관계에서 M쪽이 참조하는 테이블 )
  • ex) 점수테이블(접수자) , 출결(출근한사번) , 각종 서류(주민등록) , 대여(ISBN) , 재고관리(상호코드) 등등
  • 중복 , null 가능 

 


 

- 제약조건


1. pk 

사용방법 : primary key (pk필드명)


2. fk 

사용방법 : foreign key (fk필드명) references pk테이블명(pk필드명) [선택 옵션]

 

3. auto_increment

insert(삽입)할때 해당 필드를 생략하면 자동번호 부여된다

자동으로 1씩 증가된다

auto_increment 사용하려면 무조건 pk필드이면서 숫자만 가능하다

 

4. not null

insert(삽입)할때 해당 필드의 공백 방지

 

5. unique

insert(삽입)할때 해당 필드의 값 중복 방지

 

6. default

insert(삽입)할때 해당 필드의 값 생략하면 자동으로 대입되는 기본값

생략하지 않고 고객이 값을 입력한다면 그 값이 들어감

 

default 숫자

default now()

default '문자열'

 


 

SQL 함수

 

now() 현재날짜/시간 반환해주는 함수
   

 


PK의 변화가 있을때

PK 삭제되었을때 FK는?

 

 

on delete cascade

기본키의 레코드가 삭제되면 참조키의 레코드 같이 삭제

예) 회원탈퇴하면 회원이 작성한 글도 같이 삭제

 

 

on delete restrict

기본값이다.

참조되고 잇는 기본키는 삭제 불가능

 

 

on delete no action 

아무런 변화가 없는 상태 = restrict

 

- 테이블 삭제 순서 : FK테이블 먼저 삭제하고 PK테이블 삭제

-테이블 생성 순서 : PK테이블 먼저 생성하고 FK테이블 생성

예) 게시물의 작성된 글이 있으면 회원탈퇴가 불가능

 

 

on delete set null

기본키의 레코드가 삭제되면 참조키의 값을 null로 변경

예) 회원탈퇴하면 회원이 작성한 글 그대로 존재 작성자는 null

 

 

 

PK 수정되었을때 FK는?

 

 

on update cascade

기본키가 변경되면 참조키도 같이 변경

예) 회원번호가 수정되면 작성자의 번호도 같이 수정된다

 

 

on delete restrict

기본값

728x90

'MySQL(DB)' 카테고리의 다른 글

MySQL Join 정리  (1) 2023.08.13
MySQL select 문법 정리 / 연산자 문법 정리  (0) 2023.08.09
MySQL 워크벤치 안전모드 해제하는 방법  (0) 2023.08.07
SQL 기본 문법 정리  (0) 2023.08.02
MySQL 설치하는 방법  (4) 2023.07.31