스키마
데이터베이스에는 하나 이상의 명명된 스키마가 포함되어 있습니다. 데이터베이스의 각 스키마에는 테이블과 그 밖의 명명된 객체가 포함됩니다. 기본적으로 데이터베이스에는 PUBLIC이라는 이름의 스키마가 하나 있습니다. 스키마를 사용하여 일반 이름으로 데이터베이스 객체를 그룹화할 수 있습니다. 스키마는 중첩될 수 없다는 점만 빼면 파일 시스템 디렉터리와 비슷합니다.
같은 데이터베이스 내의 다른 스키마에서 동일한 데이터베이스 객체 이름을 충돌 없이 사용할 수 있습니다. 예를 들어 MY_SCHEMA와 YOUR_SCHEMA에 MYTABLE이라는 이름의 테이블이 모두 포함될 수 있습니다. 필요한 권한이 있는 사용자는 데이터베이스의 여러 스키마에서 객체에 액세스할 수 있습니다.
기본적으로 데이터베이스의 검색 경로의 첫 번째 스키마 내에서 객체가 생성됩니다. 자세한 내용은 이 섹션의 후반부에서 검색 경로 섹션을 참조하세요.
스키마는 다음과 같은 방법으로 다중 사용자 환경에서 조직 및 동시성 문제에 도움이 될 수 있습니다.
-
여러 개발자가 서로 간섭 없이 같은 데이터베이스에서 작업이 가능.
-
보다 관리하기 쉽게 데이터베이스 객체를 논리적 그룹으로 체계화.
-
다른 애플리케이션에서 사용하는 객체의 이름과 충돌하지 않도록 객체를 별도의 스키마에 넣는 능력을 애플리케이션에 제공.
검색 경로
검색 경로는 쉼표로 분리된 스키마 이름 목록을 사용하여 search_path 파라미터에서 정의됩니다. 검색 경로는 테이블이나 함수와 같은 객체를 스키마 한정자가 포함되지 않은 단순한 이름으로 참조할 때 스키마가 검색되는 순서를 지정합니다.
대상 스키마를 지정하지 않고 생성된 객체는 검색 경로에 나열되는 첫 번째 스키마에 추가됩니다. 동일한 이름의 객체가 다른 스키마에 존재하는 경우, 스키마를 지정하지 않은 객체 이름은 검색 경로에서 해당 이름의 객체가 포함된 첫 번째 스키마를 참조합니다.
현재 세션의 기본 스키마를 변경하려면 SET 명령을 사용합니다.
자세한 내용은 구성 참조의 search_path 설명을 참조하세요.