오라클 기본키, 외래키 예시 - Oracle Primary Key, Foreign key example

Oracle Primary Key, Foreign key

오라클에서 기본키와 외래키에 대한 정의와 ALTER TALE 명령에 의한 키 생성 예시 자료 안내문서입니다. 우선 기본키와 외래키의 정의는 다음과 같이 표현할 수 있습니다.

기본키는 레코드를 고유하게 식별할 수 있는 후보 키 집합 중 선택한 유일 키입니다.

기본키의 예시는 다음과 같습니다. EMP 테이블에서는 EMPNO만으로 유일하게 사원 정보를 식별할 수 있기에 기본키가 1개입니다.

외래키는 컬럼 중 다른 테이블에서 참조하여 식별이 가능하게 하는 키입니다.

예시 자료에서는 EMP 테이블의 DEPTNO와 DEPT 테이블의 DEPTNO가 참조 식별이 가능한 후보이므로 DEPTNO가 외래키입니다.

기본키, Primary Key

기본키는 테이블에 추가를 하는 것이므로 ALTER TABLE 명령어를 활용합니다. 제약조건 ~ 프라이머리 키 ~ 기본키에 해당하는 컬럼, 사용하는 인덱스를 명시합니다.

ALTER TABLE owner.tableName ADD (
    CONSTRAINT constraintName
    PRIMARY KEY
    (col1, col2, ..., colN)
    USING INDEX owner.indexName);

기본키 생성 예시 자료

ALTER TABLE USERNAME.EMP ADD (
  CONSTRAINT PK_EMP
  PRIMARY KEY
  (EMPNO)
  USING INDEX USERNAME.PK_EMP);

외래키, Foreign key

외래키 또한 기본키와 마찬가지로 테이블에 추가하는 것이므로 ALTER TABLE 명령어를 동일하게 이용합니다.

제약조건 ~ 포런 키 ~ 포런 키에 해당하는 컬럼, 리퍼런스 ~ 리퍼런싱 테이블(해당 컬럼)

ALTER TABLE owner.tableName ADD (
    CONSTRAINT constraintName
    FOREIGN KEY
    (fkCol1, fkCol2, ..., fkColN)
    REFERENCES owner.tableName (rfCol1, rfCol2, ..., rfColN));

외래키 생성 예제 자료

ALTER TABLE USERNAME.EMP ADD (
  CONSTRAINT FK_DEPTNO 
  FOREIGN KEY (DEPTNO) 
  REFERENCES USERNAME.DEPT (DEPTNO));

기본키 추가 예시

기본키 추가 삭제 예시

Oracle 데이터베이스에서 기본키를 추가하고 삭제하는 방법에 대한 예시 자료입니다. 기본키 추가와 삭제는 ALTER TABLE 데이터 정의어를 사용합니다.

기본키를 추가할 때에는 ALTER TABLE 명령어 및 제약조건으로 추가하는 방식입니다. 프라이머리 키 다음 문장에 컬럼 조합을 명시하여 추가합니다. 예시자료는 COLUMN_NAME 컬럼을 단독으로 설정하였습니다.

ALTER TABLE USER_NAME.TABLE_NAME ADD (
  CONSTRAINT CN_TABLE_NAME
  PRIMARY KEY
  (COLUMN_NAME));

별도의 인덱스 없이 기본키를 설정하면 오라클에서 해당 제약조건을 명칭으로 하는 인덱스를 자동으로 생성합니다. 별도의 CREATE UNIQUE INDEX 없이 기본키 제약조건만 추가하였으나, 다음과 같이 스크립트에서 유니크 인덱스가 추가된 것을 확인할 수 있습니다.

CREATE UNIQUE INDEX USER_NAME.CN_TABLE_NAME ON USER_NAME.TABLE_NAME
(COLUMN_NAME)
LOGGING
TABLESPACE TABLESPACE_NAME
PCTFREE    10
INITRANS   2
MAXTRANS   255
STORAGE    (
            INITIAL          64K
            NEXT             1M
            MINEXTENTS       1
            MAXEXTENTS       UNLIMITED
            PCTINCREASE      0
            BUFFER_POOL      DEFAULT
           )
NOPARALLEL;

기본키 삭제 예시

기본키를 삭제할 때에는 ALTER TABLE 명령어로 DROP을 진행합니다. 예시 자료는 CASCADE를 포함하였습니다.

ALTER TABLE USER_NAME.TABLE_NAME
 DROP PRIMARY KEY CASCADE;

댓글