El término esquema de base de datos describe una colección de objetos relacionados como tablas, vistas e índices que un usuario o aplicación posee. En Actian Data Platform, cada usuario tiene un esquema implícito creado para él a menos que utilice una sentencia CREATE SCHEMA.
Tipos de esquemas de bases de datos
Los dos tipos principales de esquemas son los lógicos y los físicos. Cuando se diseña una base de datos para almacenar los datos de una aplicación, el desarrollador suele empezar con un modelo entidad-relación que asigna las interrelaciones entre los elementos de negocio. El siguiente paso es crear un diseño de base de datos normalizado que añada detalles sobre cada entidad, sus atributos y claves. Esto se convierte en la base de las sentencias SQL que se utilizan para crear tablas, con sus columnas, relaciones de clave primaria y foránea, y restricciones de integridad referencial.
Además de los esquemas lógicos que soportan las aplicaciones, existe la noción de un esquema que contiene objetos que crea un usuario. Esto se denomina comúnmente esquema de usuario. Por ejemplo, el objeto llamado SCOTT.DEPT es una tabla llamada DEPT en el esquema de usuario SCOTT.
Un esquema físico define cómo se asigna el diseño lógico de la base de datos a dispositivos físicos como dispositivos de almacenamiento de estado sólido (SSD) y discos duros. Muchas bases de datos tienen la noción de un DBSPACE o TABLESPACE que se asigna a un dispositivo de almacenamiento físico o virtual. La sentencia CREATE TABLE puede especificar opcionalmente el DBSPACE o TABLESPACE para asegurar que la tabla reside en un dispositivo específico. Esto se hace normalmente para minimizar la contención IO.
Requisitos de integración de esquemas
La integración de esquemas de bases de datos se refiere a la integración de dos o más esquemas discretos de bases de datos en un único esquema unificado. A continuación se exponen algunas consideraciones importantes para la integración de esquemas:
- Los objetos de la base de datos deben asignarse a la entidad empresarial que representan para poder identificar e integrar solapamientos o conflictos.
- Los tipos de datos deben homogeneizarse. Un esquema puede utilizar un formato de caracteres fijos para optimizar la capacidad de almacenamiento, mientras que otro puede haber estandarizado un formato variable pensando en la flexibilidad.
- Las claves y restricciones pueden diferir de un esquema a otro, ya que sus aplicaciones pueden requerir distintos patrones de acceso.
- Las vistas pueden diferir entre esquemas. El ajuste del rendimiento a menudo hace que las vistas se materialicen.
- Las tablas pueden desnormalizarse y preunirse, lo que crea una elección de diseño que debe rectificarse.
- Los objetos redundantes deben eliminarse a medida que la evolución de la aplicación hace que se utilicen objetos más nuevos, dejando objetos huérfanos.
- Es muy poco probable que dos organizaciones utilicen las mismas normas de denominación, por lo que hay que conciliar los nombres.
Creación de un esquema en Actian Data Platform
La sentencia CREATE SCHEMA crea una colección con nombre de objetos de base de datos. La sentencia CREATE SCHEMA tiene el siguiente formato:
[EXEC SQL] CREATE SCHEMA AUTHORIZATION schema_name [object_definition {object_definition}];
nombre_esquema
Especifica el usuario efectivo para la sesión que emite la sentencia CREATE SCHEMA.
definición_de_objeto
Es una sentencia CREATE TABLE, CREATE VIEW o GRANT. Cada usuario tiene como máximo un esquema por base de datos.
Las sentencias dentro de la sentencia CREATE SCHEMA no deben estar separadas por delimitadores de punto y coma; sin embargo, la sentencia CREATE SCHEMA debe terminar colocando un punto y coma después de la última sentencia de definición de objeto. Si se omiten las definiciones de objetos, se crea un esquema vacío.
Para emitir sentencias grant en una sentencia CREATE SCHEMA, debe disponer de los privilegios necesarios. Específicamente, para otorgar un privilegio sobre un objeto que no es de su propiedad, se le debe haber otorgado el privilegio CON OPCIÓN GRANT (consulte la cláusula OPCIÓN GRANT).
Si se emite una sentencia CREATE SCHEMA especificando un esquema existente (schema_name), Actian Data Platform emite un error. Para añadir objetos a un esquema existente, emita las sentencias CREATE necesarias fuera de una sentencia CREATE SCHEMA.
Si no existe ningún esquema para el identificador de usuario efectivo, se creará uno implícitamente cuando se cree cualquier objeto de base de datos. Si posteriormente se emite una sentencia CREATE SCHEMA para el usuario, Actian Data Platform devuelve un error.
Si dentro de una sentencia CREATE SCHEMA se crean tablas que tienen restricciones referenciales, el orden de las sentencias CREATE TABLE no es significativo. Esto difiere de los requisitos para crear tablas con restricciones referenciales fuera de una sentencia CREATE SCHEMA, donde la tabla referenciada debe existir antes de crear una restricción que haga referencia a ella. Para obtener más información sobre las restricciones referenciales, consulte CREAR TABLA.
Otros usuarios pueden hacer referencia a objetos de su esquema si les ha concedido los permisos necesarios. Para acceder a un objeto de un esquema distinto del esquema del usuario efectivo de la sesión, especifique el nombre del objeto como se indica a continuación:
esquema.objeto
Por ejemplo, el usuario Harry puede seleccionar datos de la tabla de empleados del grupo de contabilidad (si contabilidad ha concedido a Harry permiso de selección). Harry puede emitir la siguiente sentencia SELECT:
SELECT lname, fname from contabilidad.empleados
Bloqueo
La sentencia CREATE SCHEMA toma un bloqueo exclusivo sobre una página del catálogo iischema. Los bloqueos son adquiridos por las sentencias CREATE individuales dentro de la sentencia CREATE SCHEMA, pero sólo se liberan cuando la propia sentencia CREATE SCHEMA se confirma. Si la sentencia CREATE SCHEMA contiene sentencias CREATE que adquieren bloqueos por encima del máximo configurado para Actian Data Platform, la sentencia CREATE SCHEMA finaliza.
El siguiente ejemplo muestra cómo la creación de un esquema Actian para el usuario de contabilidad proporciona contexto para los subobjetos:
CREAR SCHEMA AUTHORIZATION contabilidad CREAR TABLA empleados (lname CHAR(30) NOT NULL, fname CHAR(30) NOT NULL, salario MONEY, dnombre CHAR(10) REFERENCIAS dept(nombredept), PRIMARY KEY (lname, fname)) CREAR TABLA dept(deptname CHAR(10) NOT NULL UNIQUE, ubicación CHAR(15), presupuesto MONEY, gastos MONEY DEFAULT 0) CREAR VISTA mgr(mlname, mfname, mdname) COMO SELECT lname, fname, deptname FROM empleados,dept WHERE dname = deptname GRANT REFERENCES(lname, fname) ON TABLE empleados TO harry;
Ventajas de los esquemas de bases de datos
El uso de esquemas de bases de datos ofrece muchas ventajas, entre ellas las que se enumeran a continuación:
- Asigna el diseño lógico de la base de datos de una aplicación a su diseño físico.
- Permite asignar usuarios a objetos creados por ellos.
- Segrega los catálogos del sistema de los objetos de base de datos específicos del usuario o de la aplicación.
- Aísla por seguridad las aplicaciones que utilizan la misma instancia de base de datos.
- Agrupa una única aplicación o base de datos de departamentos para que puedan copiarse como una unidad lógica.
- Permite asignar objetos relacionados a pools de almacenamiento de segundo nivel o dispositivos específicos.