

 Amazon Redshift는 패치 198부터 새 Python UDF 생성을 더 이상 지원하지 않습니다. 기존 Python UDF는 2026년 6월 30일까지 계속 작동합니다. 자세한 내용은 [블로그 게시물](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)을 참조하세요.

# 스키마
<a name="r_Schemas_and_tables"></a>

데이터베이스에는 하나 이상의 명명된 스키마가 포함되어 있습니다. 데이터베이스의 각 스키마에는 테이블과 그 밖의 명명된 객체가 포함됩니다. 기본적으로 데이터베이스에는 PUBLIC이라는 이름의 스키마가 하나 있습니다. 스키마를 사용하여 일반 이름으로 데이터베이스 객체를 그룹화할 수 있습니다. 스키마는 중첩될 수 없다는 점만 빼면 파일 시스템 디렉터리와 비슷합니다.

같은 데이터베이스 내의 다른 스키마에서 동일한 데이터베이스 객체 이름을 충돌 없이 사용할 수 있습니다. 예를 들어 MY\$1SCHEMA와 YOUR\$1SCHEMA에 MYTABLE이라는 이름의 테이블이 모두 포함될 수 있습니다. 필요한 권한이 있는 사용자는 데이터베이스의 여러 스키마에서 객체에 액세스할 수 있습니다.

기본적으로 데이터베이스의 검색 경로의 첫 번째 스키마 내에서 객체가 생성됩니다. 자세한 내용은 이 섹션의 후반부에서 [검색 경로](#c_Search_path) 섹션을 참조하세요.

스키마는 다음과 같은 방법으로 다중 사용자 환경에서 조직 및 동시성 문제에 도움이 될 수 있습니다.
+ 여러 개발자가 서로 간섭 없이 같은 데이터베이스에서 작업이 가능.
+ 보다 관리하기 쉽게 데이터베이스 객체를 논리적 그룹으로 체계화.
+ 다른 애플리케이션에서 사용하는 객체의 이름과 충돌하지 않도록 객체를 별도의 스키마에 넣는 능력을 애플리케이션에 제공.

## 검색 경로
<a name="c_Search_path"></a>

검색 경로는 쉼표로 분리된 스키마 이름 목록을 사용하여 search\$1path 파라미터에서 정의됩니다. 검색 경로는 테이블이나 함수와 같은 객체를 스키마 한정자가 포함되지 않은 단순한 이름으로 참조할 때 스키마가 검색되는 순서를 지정합니다.

대상 스키마를 지정하지 않고 생성된 객체는 검색 경로에 나열되는 첫 번째 스키마에 추가됩니다. 동일한 이름의 객체가 다른 스키마에 존재하는 경우, 스키마를 지정하지 않은 객체 이름은 검색 경로에서 해당 이름의 객체가 포함된 첫 번째 스키마를 참조합니다.

현재 세션의 기본 스키마를 변경하려면 [SET](r_SET.md) 명령을 사용합니다.

자세한 내용은 구성 참조의 [search\$1path](r_search_path.md) 설명을 참조하세요.

# 스키마 생성, 변경 및 삭제
<a name="r_Schemas_and_tables-creating-altering-and-deleting-schemas"></a>

모든 사용자는 직접 스키마를 생성하고 변경하거나 삭제할 수 있습니다.

다음 작업을 수행할 수 있습니다.
+ 스키마를 생성하려면 [CREATE SCHEMA](r_CREATE_SCHEMA.md) 명령을 사용합니다.
+ 스키마의 소유자를 변경하려면 [ALTER SCHEMA](r_ALTER_SCHEMA.md) 명령을 사용합니다.
+ 스키마와 그 객체를 삭제하려면 [DROP SCHEMA](r_DROP_SCHEMA.md) 명령을 사용합니다.
+ 스키마 내에 테이블을 생성하려면 *schema\$1name.table\$1name* 형식으로 테이블을 생성합니다.

모든 스키마 목록을 보려면 PG\$1NAMESPACE 시스템 카탈로그 테이블을 쿼리합니다.

```
select * from pg_namespace;
```

스키마에 속한 테이블의 목록을 보려면 PG\$1TABLE\$1DEF 시스템 카탈로그 테이블을 쿼리합니다. 예를 들어 다음 쿼리는 PG\$1CATALOG 스키마에 있는 테이블의 목록을 반환합니다.

```
select distinct(tablename) from pg_table_def
where schemaname = 'pg_catalog';
```

# 스키마 기반 권한
<a name="r_Schemas_and_tables-schema-based-privileges"></a>

 스키마 기반 권한은 스키마 소유자에 의해 결정됩니다.
+ 기본적으로 모든 사용자는 데이터베이스의 PUBLIC 스키마에서 CREATE 및 USAGE 권한을 갖습니다. 사용자가 데이터베이스의 PUBLIC 스키마에 객체를 생성하는 것을 허용하지 않으려면 [REVOKE](r_REVOKE.md) 명령을 사용하여 해당 권한을 제거하세요.
+ 객체 소유자에 의해 USAGE 권한이 부여되지 않은 경우, 사용자는 소유하지 않은 스키마의 어떤 객체에도 액세스할 수 없습니다.
+ 다른 사용자가 생성한 스키마에 대한 CREATE 권한을 부여받은 사용자는 해당 스키마에서 객체를 만들 수 있습니다.