사용자가 다른 사용자의 객체를 참조할 때 [사용자ID].[테이블명]과 같이 길게 표시해야 하기 때문에 이해하기가 어렵고 코딩이 불편하다.

이러한 문제점을 해결하기 위해서 동의어(SYNONYM)라는 객체를 사용한다.

데이터베이스의 객체에 대한 소유권은 해당 객체를 생성한 사용자에게 있다. 따라서 다른 사용자가 객체에 접근하기 위해서는 소유자에게 접근권한을 부여받아야 한다.

다른 사용자가 소유한 객체에 접근하기 위해서는 소유자의 이름을 객체 앞에 지정해야 한다.

종류

비공개 동의어

객체에 대한 접근 권한을 부여 받은 사용자가 정의한 동의어 이다.

해당 사용자만 사용 가능 하다.

공개 동의어

누구나 사용 가능 하다.

공개 동의어는 DBA 권한을 가진 사용자만이 생성할 수 있다.

SYNONYM 앞에 PUBLIC을 붙여서 정의한다.

create **public** synonym  for sys.systable;

예를들어 DUAL 테이블은 SYS가 소유하는 테이블이므로 다른 사용자가 DUAL 테이블에 접근하려면 SYS.DUAL로 표현해야 하는 것이 원칙이다.

그럼에도 불구하고 모든 사용자가 SYS.을 생략하고, DUAL이라고 간단하게 사용할 수 있었던 것은 공개 동의어로 지정되어 있기 때문이다.