본문 바로가기

청년취업아카데미/DayLog

[ Database ] Day 07 - ① 동의어(Synonym)

...더보기

TIPS

동의어에 대해 시작하기 전에 동의어는 권한을 받아서 사용할 때 객체 소유자 표시함에 있어 번거로움을 해소하기 위해 사용된다고 합니다. 주로 분업을 하는 실무에서 굉장히 유용하다고 합니다. 

# 동의어

  • 동의어란? 하나의 객체에 대해 다른 이름을 정의하는 방법
  • 동의어의 필요성: 데이터베이스 객체의 소유권은 해당 객체를 생성한 사용자에게 있어, 다른 사용자에게 접근 권한을 부여 받아 사용가능하다. 하지만, 객체를 조회할 때마다 객체의 소유자를 일일이 지정해줘야되어 매우 번거롭다. ex) SELECT * FROM scott.student. 따라서 번거로움을 최소화하기 위해 동의어를 사용한다.
    • 결론 --> 번거로움 해소
  • 동의어와 별명(Alias) 차이: 동의어는 데이터베이스 전체에서 사용가능, 별명은 해당 SQL 명령문에서만 사용가능
  • 동의어의 종류 : 전용 동의어(priavte synonym) VS 공용 동의어(public synonym)

 

# 동의어 SQL 예제

SQL> connect system/oracle;
SQL> grant select on project to scott;

SQL> conncet scott/tiger
SQL> select * from project; (X --> 오류. table 없음으로 나옴) 
SQL> select * from system.project; 

[전용 동의어]
SQL> create synonym my_project for system.project; -- 전용 동의어 생성. 계정안에서만 사용가능

[공용 동의어] 
SQL> create public sysnonym pub_project for project; -- 공용 동의어를 생성하면 어디에서나 쓸수 있음. 
SQL> select * from pub_project;

 

[ 참고 ] 오라클 중심의 SQL 배움터