Database

[Oracle/SQL] 13. 동의어 | SYNONYM | 공개 동의어 | 비공개 동의어

@reminder 2022. 1. 28. 01:20

목차

  1. 동의어(SYNONYM)
    1-1. 동의어 생성 권한 부여
    1-2. 동의어 생성
  2. 동의어 구분
    2-1. 비공개 동의어
    2-2. 공개 동의어

 

학습점검

✅ SYNONYM 객체의 사용 목적에 대해 이해할 수 있다.
✅ SYNONYM 객체에 대해 이해할 수 있다.
CREATE SYNONYM문을 이용하여 SYNONYM 객체를 생성할 수 있다.
✅ 공개동의어와 비공개동의어에 대해 이해할 수 있다.

 


 

1. 동의어(SYNONYM)

  • 동의어(SYNONYM)은 다른 데이터베이스가 가진 객체(OBJECT)의 별명 혹은 줄임말을 뜻한다.
  • 여러 사용자가 테이블을 공유하는 경우에는 사용자가 다른 사용자의 객체에 접근하려거든 '사용자명.테이블명'을 명시해야 한다.
  • 자칫 길게 표현될 수 있는 것을 동의어(SYNONYM) 설정해 간단히 쓸 수 있다.

 

1-1. 동의어 생성 권한 부여 SYSTEM 계정

GRANT CREATE SYNONYM TO 사용자명;
  • CREATE SYNONYM 하기 위해서는 반드시 권한 부여(GRANT)가 선행되어야 한다.
  • 이때 권한 부여는 SYSTEM 계정만이 수행할 수 있다.

 


 

1-2. 동의어 생성

CREATE SYNONYM 줄임말 FOR 사용자명.객체명;
CREATE SYNONYM EMP FOR EMPLOYEE; -- 비공개 동의어, 자신의 계정에서 사용자명 생략
  • 자신의 계정에서 줄임말 생성할 때는 C##EMPLOYEE.EMPLOYEE 라고 적지 않고, 예시에서처럼 객체명만 작성할 수 있다.
  • 이는 비공개 동의어로서 자기 계정에서만 쓸 수 있는 줄임말로 정의된다.
SELECT E.*
 FROM EMP E;
  • 동의어 등록한 뒤에는 위처럼 EMPLOYEE라는 테이블명 대신 짧은 줄임말로 대신 사용할 수 있다.

 


 

2. 동의어 구분

2-1. 비공개 동의어 객체 접근 권한을 부여 받은 사용자

CREATE SYNONYM EMP FOR EMPLOYEE; -- 자신의 계정에서 사용자명 생략
  • 객체 접근 권한을 부여 받은 사용자가 스스로 정의한 동의어이다.
SELECT E.*
 FROM EMP E;
  • SELECT 조회 또한 자신의 계정에서 한정적으로 수행 가능하다. 접근 시도한 SYSTEM 계정 포함 타 사용자에게는 '테이블 또는 뷰가 존재하지 않습니다'라는 오류가 발생한다.

 


 

2-2. 공개 동의어 SYSTEM 계정

CREATE PUBLIC SYNONYM DEPT FOR C##EMPLOYEE.DEPARTMENT;
  • 생성(CREATE SYNONYM) 과정 자체를 SYSTEM 계정으로 실행한다.
  • 모든 권한을 주는 사용자인 SYSTEM 계정이 정의한 동의어가 바로 공개 동의어이다.
  • 이렇게 정의된 공개 동의어는 모든 사용자가 쓸 수 있다.
  • PUBLIC 개념이다. CREATE 생성 구문에서도 PUBLIC SYNONYM임을 명시한다.
SELECT D.*
 FROM DEPT D;
  • SYSTEM 계정 포함 모든 계정에서 동의어 DEPT 사용해 조회가 가능하다.