주니어 기초 코딩공부/Database 기초

19장 데이터베이스 동의어 개념 (SQL 오라클)

jju_developer 2022. 12. 21. 21:19
728x90

✔ 동의어 SYNONYM?

SYNONYM
쉽게 말해서 ALIAS 같이 이름을 줄여주는 역할을 합니다.
시노님(Synonym)은 테이블의 이름을 설정해 주는 것이다.
보통 다른 유저의 객체(테이블, 뷰, 프로시저, 함수, 패키지, 시퀀스 등)를 참조할 때 많이 사용한다.

 

실제로 SYNONYM을 이용하는 이유는 다른 유저의 객체를 사용할 때 

유저의 이름과 객체의 실제 이름을 사용하는데, 

그 두 개를 감춤으로써 데이터베이스의 보안을 개선하기 위해 사용된다.

 

<구문>

CREATE [ PUBLIC ] SYNONYM [ 시노님 이름 ]
FOR [ 객체 이름 ]

* PUBLIC은 모든 사용자가 접근이 가능하도록 설정해주는 것입니다.

* PUBLIC을 선언해주지 않으면 기본값으로 PRIVATE가 선언됩니다.

 

우선 예제에 앞서서 시노님을 사용하는 상세이유에 대해 알아보겠습니다.

시스템 계정과 스콧 계정이 있다고 가정할 때

시스템 계정에서 만든 SYSTBLE 테이블은 SCOTT이 접근할 수 없습니다.

그럴 때에는 시스템 계정이 가지고 있는 테이블에대해 스콧계정에서 접근이 가능하도록 권한을 주어야 합니다.

 

이때,

해당되는 SYSTBLE 이라는 테이블 권한을 줄 때

조작 권한까지 주고 싶으면 ALL을 붙이고 아니다 조회 권한만 주고자 한다

그러면 SELECT만 하시면 됩니다.

GRANT ALL ON SYSTBL TO SCOTT; 
-- GRANT SELECT ON SYSTBL TO SCOTT;

 

 

 동의어 SYNONYM 를 사용하기 위한 권한 부여 예제

 

1. 시스템에서 생성

 

 

 

2. 스콧계정에서는 볼 수 없습니다.

3. 시스템 계정에서 객체 권한을 부여해주어야 합니다.

 

4. 스콧 계정에서 다시 객체 권한을 부여받은 후 쳐보면 테이블이 보입니다.

 

 

 

 동의어 SYNONYM 삭제

CREATE SYNONYM S1 FOR SYSTEM.SYSTBL;

삭제방법
DROP SYNONYM S1;

 

그럼 지금까지

SQL 동의어에 대한 설명이었습니다.

 

감사합니다.

728x90