[DBMS] 기본키 / 외래키

형이·2023년 7월 26일
0

DBMS

목록 보기
16/17
post-thumbnail

📝 기본키(PK) / 외래키(FK)

🖥️ 1. 컬럼 속성

무결성 제약조건

  • not null : 널 값이 입력되지 못하게 하는 조건
  • unique : 중복된 값이 입력되지 못하게 하는 조건
  • check : 주어진 값만 허용하는 조건
  • primary key : not null + unique + index의 의미
  • foreign key : 다른 테이블의 필드(컬럼)를 참조해서 무결성을 검사하는 조건

1-1. unique

  • unique 제약으로 들어가는 컬럼들은 그들의 조합이 유일해야 한다.
  • 각 컬럼의 데이터의 유일함은 의미가 없고, 조합이 유일해야 한다.
  • constraints 제약명 unique(컬럼1, 컬럼2, ..)
CREATE TABLE unique_test2(
	col1 	varchar2(20),
	col2	varchar2(20),
	CONSTRAINTS temp_unique2 unique(col1, col2)
);

1-2. check

CREATE TABLE check_test(
	gender 	varchar2(10) NOT NULL
		CONSTRAINTS check_gender CHECK (gender IN('M','F'))
);

🖥️ 2. 기본키

PK ; Primary Key

2-1. 기본키란

  • 기본키 역시 기본적인 제약조건들은 테이블을 생성할 때 같이 정의한다.
  • 테이블당 하나만 정의가 가능하다.
    (두개 이상의 PK는 조합키/복합키라고 불리며 묶어서 하나로 봄)
  • 주키 / 기본키 / 식별자 / PK 등으로 불리고 있다.
  • PK는 NOT NULL + UNIQUE + Index
  • 자동 Index가 생성되는데 이는 검색 키로써 검색 속도를 향상시킨다.

2-1. 기본키 선언 방법

방법1)	    create table pkTest(
				pkCol1	varchar2(10) primary key
			);
방법2)		create table pkTest(
				pkCol1	varchar2(10) constraints pk이름 primary key
			);
방법3)		create table pkTest(
				pkCol1	varchar2(10),
				pkCol2	varchar2(10),
				pkCol3	varchar2(10),
				constraints pk이름 primary key(pkCol1)
			);

🖥️ 3. 외래키

FK ; Foreign Key

3-1. 외래키란

  • 외부키 / 외래키 / 참조키 / 외부 식별자 / FK 등으로 불린다.
  • FK가 정의된 테이블을 자식 테이블이라고 칭한다.
  • 참조되는 테이블 즉, PK가 있는 테이블을 부모 테이블이라고 한다.
  • 부모 테이블은 PK 컬럼에 존재하는 데이터만 자식 테이블에 입력할 수 있다.
  • 부모 테이블은 자식의 데이터나 테이블이 삭제 된다고 영향을 받지 않는다.
  • 참조하는 데이터 컬럼과 데이터 타입은 반드시 일치해야 한다.
  • 참조할 수 있는 컬럼은 기본키(PK)이거나 UNIQUE만 가능
  • 보통 PK랑 엮는다.

3-2. 외래키 사용 방법

방법 ex1)	create table fk_test (
		 	  department_id	varchar2(10)
			  constraints fk이름 references departments(department_id)
			);
방법 ex2) 	create table fk_test (
			  department_id	varchar2(10),
			  ...			    ,
			  constraints dept_fk foreign key(department_id)
			  references departments (department_id)
		    );

3-3. 삭제 옵션

📌 ON DELETE CASCADE

 ✔️ 참조되는 부모 테이블의 행에 대한 delete를 허용한다. 즉, 참조되는 부모 테이블 값이 삭제되면 연쇄적으로 자식 테이블값 역시 삭제된다.

      CREATE TABLE daughter(
          idx		number(10) PRIMARY KEY,
          mID		number(10),
          CONSTRAINTS fk_da FOREIGN KEY (mID)
          REFERENCES daddy(mID) ON DELETE CASCADE
      );

📌 ON DELETE SET NULL

 ✔️ 참조되는 부모 테이블의 행에 대한 delete를 허용한다. 즉, 부모테이블 값이 삭제가 되면해당 참조하는 자식 테이블의 값들은 null 값으로 설정된다.

      CREATE TABLE daughter2(
         idx		number(10) PRIMARY KEY,
         mID		number(10),
         CONSTRAINTS fk_da2 FOREIGN KEY (mID)
         REFERENCES daddy2(mID) ON DELETE SET NULL 
      );

0개의 댓글

관련 채용 정보