Schemas - Amazon Redshift

Schemas

Una base de datos contiene uno o más esquemas con nombre. Cada esquema de una base de datos contiene tablas u otros tipos de objetos con nombre. De manera predeterminada, una base de datos tiene un único esquema, que se denomina PUBLIC. Puede usar esquemas para agrupar objetos de la base de datos bajo un nombre común. Los esquemas son similares a los directorios del sistema de archivos, excepto que los esquemas no se pueden anidar.

Se pueden usar nombres de objetos de base de datos idénticos en diferentes esquemas de la misma base de datos sin generar conflictos. Por ejemplo, MY_SCHEMA y YOUR_SCHEMA pueden contener una tabla denominada MYTABLE. Los usuarios con los permisos necesarios pueden acceder a objetos de varios esquemas de una base de datos.

De manera predeterminada, se crea un objeto dentro del primer esquema en la ruta de búsqueda de la base de datos. Para obtener más información, consulte Ruta de búsqueda más adelante en esta sección.

Los esquemas pueden ser de ayuda en los problemas de organización y simultaneidad en un entorno multiusuario de las siguientes maneras:

  • Para permitir que varios desarrolladores trabajen en la misma base de datos sin interferirse.

  • Organizan objetos de base de datos en grupos lógicos para poder administrarlos más fácilmente.

  • Les otorgan a las aplicaciones la capacidad de colocar sus objetos en esquemas separados para que sus nombres no colisionen con los nombres de los objetos utilizados por otras aplicaciones.

Creación, modificación y eliminación de esquemas

Cualquier usuario puede crear o eliminar esquemas de los cuales es propietario.

Puede llevar a cabo las siguientes acciones:

  • Para crear un esquema, use el comando CREATE SCHEMA.

  • Para cambiar el propietario de un esquema, use el comando ALTER SCHEMA.

  • Para eliminar un esquema y sus objetos, use el comando DROP SCHEMA.

  • Para crear una tabla dentro de un esquema, cree la tabla con el formato nombre_de_esquema.nombre_de_tabla.

Consulte la tabla de catálogo del sistema PG_NAMESPACE para ver una lista de todos los esquemas:

select * from pg_namespace;

Consulte la tabla de catálogo del sistema PG_TABLE_DEF para ver una lista de las tablas que pertenecen a un esquema. Por ejemplo, la siguiente consulta devuelve una lista de tablas del esquema PG_CATALOG.

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

Ruta de búsqueda

La ruta de búsqueda se define en el parámetro search_path con una lista de nombres de esquemas separados por comas. La ruta de búsqueda especifica el orden en el que se buscan los esquemas cuando un nombre simple que no incluye un calificador de esquema hace referencia a un objeto, como una tabla o función.

Si se crea un objeto sin especificar un esquema de destino, el objeto se agrega al primer esquema que aparece en la ruta de búsqueda. Cuando hay objetos con nombres idénticos en diferentes esquemas, un nombre de objeto que no especifica un esquema hará referencia al primer esquema de la ruta de búsqueda que contenga un objeto con ese nombre.

Para cambiar el esquema predeterminado para la sesión actual, use el comando SET.

Para obtener más información, consulte la descripción de search_path en la Referencia de configuración.

Permisos basados en esquemas

Los permisos basados en esquemas son determinados por el propietario del esquema:

  • De manera predeterminada, todos los usuarios tienen privilegios CREATE y USAGE para el esquema PUBLIC de una base de datos. Para dejar de permitir a los usuarios crear objetos en el esquema PUBLIC de una base de datos, utilice el comando REVOKE con objeto de eliminar ese permiso.

  • A menos que el propietario del objeto les conceda el permiso USAGE, los usuarios no pueden acceder a ninguno de los objetos de los esquemas de los que no son propietarios.

  • Si los usuarios han recibido el permiso CREATE para un esquema que ha creado otro usuario, esos usuarios pueden crear objetos en ese esquema.