100
Curso de SQL Fundamentos y Práctica Por Byron Quisquinay.

Apuntes de Bd

Embed Size (px)

DESCRIPTION

base de datos

Citation preview

Curso de SQLFundamentos y Prctica

Por Byron Quisquinay.

ContenidoBases de Datos Relacionales5Sistema de Administracin de Base de Datos (DMBS)5Modelo Relacional6Sistema de Administracin de Base de Datos Relacional (RDBMS)6Esquema7Tablas7ndices8Acceso a la Informacin8Lenguaje Estructurado de Consulta (Estructured Query Language [SQL])8Administracin de las Transacciones9Concurrencia9Consistencia de la Informacin10Arquitectura de la Base de Datos Oracle10Base de Datos e instancia11Estructuras de Almacenamiento de la Base de Datos12Estructuras fsicas de almacenamiento12Estructuras lgicas de almacenamiento12Estructura de una Instancia de Base de Datos13Procesos de la Base de Datos Oracle13Estructuras de Memoria de la Instancia14Arquitectura de Aplicacin y de Red14Arquitectura de Aplicacin14Arquitectura de Red15Diseo de la Base de Datos15Qu es un usuario de Base de Datos?16Diseo conceptual16Sentencias SQL tipo DDL17CREATE18CREATE TABLE18Sintaxis de Create Table19Global Temporary Tables21Teora de la normalizacin22Comentarios24Comentarios de documentacin24Hints24COMMENT ON25Agregando comentarios26Comentarios sobre Tabla26Comentarios sobre Campos26Qu es un ndice?29CREATE INDEX30Sintaxis de CREATE INDEX31Semntica31Creando ndices32CREATE SEQUECE33DROP40DROP TABLE40DROP SEQUENCE43DROP INDEX44TRUNCATE TABLE45Sintaxis de TRUNCATE TABLE45Semntica de la Sintaxis45Sentencias SQL tipo DML47Sentencia Insert47Sintaxis de la sentencia Insert48Insertando informacin49Sentencia Select55Sintaxis de Select55Semntica de la Sintaxis55Seleccionando informacin56Consultas con Relaciones59EQUIJOINS60SELF JOINS60PRODUCTOS CARTESIANOS60INNER JOINS61OUTER JOINS61Realizando consultas con relacin63EXPLAIN PLAN64Sintaxis de EXPLAIN PLAN65Creando un Plan de Ejecucin66Consultas jerrquicas66Sintaxis66Semntica de la sintaxis67Proceso de una consulta jerrquica67Operadores de consultas jerrquicas69PRIOR69CONNECT_BY_ROOT69Seudo columnas69Seudo columnas de queries jerrquicos69UPDATE71Sintaxis de UPDATE71Semntica de la sintaxis71Modificando la Informacin72DELETE72Sintaxis de DELETE72Semntica de la sintaxis72Eliminando informacin73Procesamiento de las sentencias SQL73Transacciones73Sentencias de Control de Transaccin73COMMIT74ROLLBACK74Estado de los datos durante la transaccin74

Bases de Datos Relacionales[footnoteRef:1] [1: Tomado de: Oracle Database - Concepts - 12c Release 1 (12.1) - E17633-21.]

Cada organizacin empresarial necesita informacin que deber almacenar y manejar para cumplir con sus requerimientos de operacin y administracin. Por ejemplo, una empresa deber recolectar y mantener la informacin de su Capital Humano, ello conlleva la necesidad de registros para sus colaboradores. Esta informacin deber estar disponible para aquellos que la necesiten. Todo ello conlleva a la necesidad de contar con procesos y procedimientos para recolectar y administrar esa informacin. Entonces, un Sistema de informacin es un Sistema formal para almacenar y procesar la informacin.

Un Sistema de Informacin podra ser el conjunto de mobiliario que contiene carpetas y habrn reglas que rijan el almacenamiento y extraccin de estas carpetas. Ms sin embargo en la actualidad muchas empresas emplean las Bases de Datos para automatizar sus Sistemas de Informacin. Una Base de Datos es una coleccin organizada de informacin que es tratada como una unidad. El propsito de una Base de Datos es recolectar, almacenar y retraer informacin relacionada para ser usada a travs de aplicaciones de Base de Datos.

Sistema de Administracin de Base de Datos (DMBS)Un Sistema de Administracin de Base de Datos (DMBS) es software que controla el almacenamiento, organizacin y recuperacin de la informacin. Tpicamente un DBMS tiene los siguientes elementos: Cdigo Kernel. Repositorio de metadata. Usualmente llamado Diccionario de Datos. Lenguaje de Consulta. Este lenguaje le permite a las aplicaciones acceder a la informacin.

Una Aplicacin de Base de Datos es software que interacta con la base de datos para acceder y manipular la informacin.

La primera generacin de Sistemas de Administracin de Base de Datos incluyen los siguientes tipos: Jerrquico: Una Base de Datos jerrquica organiza la informacin en una estructura de rbol. Cada registro padre tiene uno o ms registros hijos, similar a un Sistema de Archivos. Red: Una Base de Datos de Red es similar a una Base de Datos jerrquica, con la excepcin de que los registros tienen una relacin de muchos a muchos en lugar de uno a muchos.

Las bases de Datos anteriores almacenaban la informacin en una relacin rgida predeterminada. Dado que no exista un lenguaje de definicin de datos, cambiar la estructura de la informacin era difcil. Tambin estos Sistemas adolecan de un lenguaje simple de consulta, lo que significaba un desarrollo de aplicaciones.

Modelo RelacionalEn su trabajo de seminario de 1970 titulado: "Un Modelo Relacional de Informacin para Grandes Bancos de Informacin Compartida", E. F. Codd defini el modelo relacional basado en teora matemtica. Hoy en da es modelo de Bases de Datos ms aceptados es el Modelo Relacional.

Una Base de Datos Relacional es una Base de Datos que adopta el modelo relacional. El modelo relacional tiene estos aspectos definidos a grandes razgos: Estructuras: Objetos bien definidos de almacenamiento o acceso a la informacin de la Base de Datos. Operaciones: Acciones claramente definidas que permitan a las aplicaciones manipular la informacin y sus estructuras de la Base de Datos. Reglas de Integridad: Reglas de integridad que gobiernen las operaciones sobre la informacin y las estructuras de la Base de Datos.

Una Base de Datos Relacional almacena la informacin en un conjunto simple de relaciones. Una relacin es un conjunto de tuplas. Una tupla es un conjunto ordenado de valores de un atributo.

Una tabla es una representacin de dos dimensiones de la relacin en forma de registros (tuplas) y columnas (atributos). Cada registro en una tabla tiene el mismo conjunto de columnas. Una Base de Datos Relacional es una Base de Datos que almacena la informacin en relacin (tablas). Por ejemplo, una Base de Datos Relacional puede almacenar informacin de sus colaboradores una tabla colaboradores, una tabla de departamento y en una tabla de salarios.

Sistema de Administracin de Base de Datos Relacional (RDBMS)El modelo relacional es la base para un Sistema de Administracin de Base de Datos Relacional. Esencialmente un RDBMS mueve la informacin a la Base de Datos, almacena la informacin y la extrae de manera que las aplicaciones puedan manipularla. Un RDBMS realiza una distincin entre los siguientes tipos de operaciones:

Operaciones lgicas: En ese caso una aplicacin especifica qu contenido es requerido por ella. Por ejemplo una aplicacin solicita el nombre de un Colaborador o el agregado de un registro de un Colaborador a una Tabla. Operaciones fsicas: En este caso el RDBMS determina que se deber realizar para llevar a cabo la operacin. Por ejemplo, cuando una aplicacin consulta una tabla, la Base de Datos quiz emplee un ndice para encontrar los registros solicitados, leer la data en la memoria y ejecutar otros pasos antes de retornar el resultado al usuario. El RDBMS almacena y recupera la informacin de manera tal que las operaciones fsicas sean transparentes para la aplicacin.

Oracle es un RDBMS que implementa funcionalidades Orientadas a Objetos, tales como tipos definidos por el usuario, herencia y polimorfismo, por ello es llamada Sistema de Administracin de Base de Datos Objeto - Relacional (ORDBMS). La Base de Datos Oracle ha extendido el modelo relacional a un modelo objeto relacional, haciendo posible almacenar modelos complejos de negocios en una Base de Datos Relacional.

EsquemaUna caracterstica de un RDBMS es la independencia del almacenamiento fsico de la informacin de la estructura lgica de ella misma. En la Base de Datos Oracle, un Esquema (Schema) de Base de Datos es una coleccin de estructuras lgicas de informacin u Objetos del Esquema. Un usuario de Base de Datos posee su propio Esquema de Base de Datos, que tiene el mismo nombre que el usuario.

Los Objetos del Esquema son estructuras creadas por el usuario, estas estructuras se refieren de forma directa a la informacin en la Base de Datos. La Base de Datos soporta varios tipos de Objetos de los cuales los ms importantes son las Tablas y los ndices.

Un Esquema en s mismo en un Objeto de la Base de Datos. Algunos objetos de la Base de Datos, como los perfiles y roles no residen en los Esquemas.

TablasUna Tabla describe una entidad tal como Colaboradores. Usted define una Tabla con un Nombre de Tabla, as como colaboradores y un conjunto de columnas. En general usted define a cada columna un nombre, un tipo de dato y un acho cuando la crea.

Una Tabla es un conjunto de registros. Una columna identifica un atributo de una entidad descrita por la Tabla. Mientras que un registro identifica una instancia de la entidad. Por ejemplo, los atributos de la entidad Colaborador corresponden a columnas para el ID de Colaborador y su apellido. Un registro identifica a un Colaborador en especfico.

Usted puede opcionalmente especificar reglas para cada columna o una Tabla. Esas reglas son llamadas Restricciones de Integridad (Integrity Constraints). Un ejemplo la restriccin de integridad No Nulo, esta restriccin obliga a que la columna tenga valores para cada registro.

ndicesUn ndice es una estructura de informacin opcional, usted puede crear uno o ms ndices sobre una o ms columnas de una tabla. Los ndices pueden incrementar la eficiencia en la recuperacin de la informacin. Cuando se procesa una peticin, la Base de Datos puede utilizar los ndices disponibles para localizar de forma eficiente los registros solicitados. Los ndices son tiles cuando las aplicaciones a menudo consultan un registro o un conjunto de ellos.

Los ndices son lgica y fsicamente independientes de la informacin. De esa manera usted puede eliminar y crear ndices sin sobre las tablas u otros ndices. Todas las aplicaciones siguen funcionando an si usted elimina un ndice.

Acceso a la InformacinUn requerimiento general para un DBMS es adherirse a los estndares aceptados por la Industria para un Lenguaje de Acceso a la Informacin.

Lenguaje Estructurado de Consulta (Estructured Query Language [SQL])SQL es un lenguaje declarativo basado en un conjunto de sentencias que provee una interfaz para el RDBMS tal como Oracle. En contraste con lenguajes por procedimientos, tales como el Lenguaje C; que describe cmo las cosas deben ser realizadas, SQL no es de procedimientos, ms bien describe qu se debe hacer. Los usuarios especifican el resultado que ellos desean (por ejemplo: el nombre de un colaborador) y no cmo obtenerlo. SQL es lenguaje estndar ANSI para Bases de Datos Relacionales.

Todas las operaciones en la Base de Datos Oracle son ejecutadas empleando sentencias SQL. Por ejemplo usted emplea SQL para crear tablas, consultar o modificar la informacin. Una sentencia SQL puede ser pensada como muy simple, pero un poderosa programa de computadora o instruccin.

Con las Sentencias SQL usted puede ejecutar estas tareas:

Consultar la informacin. Insertar (agregar), modificar (actualizar) o eliminar (borrar) registros de una tabla. Crear, reemplazar, alterar y eliminar objetos. Controlar el acceso a la Base de Datos y sus objetos. Garantizar la consistencia e integridad de la Base de Datos.

Administracin de las TransaccionesUn RDBMS debera ser capaz de agrupar las Sentencias SQL, de manera que todas ellas puedan ser confirmadas (COMMIT) en la Base de Datos o bien desechadas (ROLLBACK). Una transaccin es una unidad lgica y atmica de trabajo que contiene una o ms sentencias SQL.Una ilustracin que contiene la necesidad de una transaccin, es el de una transferencia de fondos de una cuenta de ahorros a una de monetarios. La transferencia consiste en las siguientes operaciones separadas:1. Disminuir el saldo de la cuenta de ahorros.2. Aumentar el saldo de la cuenta de monetarios.3. Registrar la transaccin en el diario de transacciones.La Base de Datos Oracle, garantiza que esas tres operaciones se realizan con xito o fallan todas como una unidad. Por ejemplo: si una falla de hardware impide que se realice una de las sentencias, entonces las otras debern ser desechadas.Las transacciones son una de las caractersticas que la Base de Datos Oracle asigna aparte del Sistema de Archivos. Si usted ejecuta una operacin atmica que actualiza varios archivos, y el Sistema de Archivos falla en medio de la actualizacin, entonces los archivos no sern consistentes. En contraste una transaccin se realiza en una Base de Datos de un estado consistente a otro. El principio bsico de una transaccin es: todo o nada: una operacin atmica es exitosa del todo o nada.ConcurrenciaUn requerimiento de un RDBMS multiusuario es el control de la concurrencia sobre la informacin, que consiste en el acceso simultaneo por varios usuarios, a la misma informacin. Sin controles de concurrencia, los usuarios podran actualizar la informacin de manera inadecuada, comprometiendo la integridad de la informacin. Por ejemplo: un usuario puede actualizar un registro cuando un usuario diferente de forma simultnea tambin actualiza el mismo registro.Si mltiples usuarios acceden a la misma informacin, entonces una manera de administrar dicha concurrencia es hacer que los usuarios esperen. Sin embargo, el objetivo de un DBMS es reducir el tiempo de espera de manera tal que este no sea inexistente o negligente. Todas las sentencias SQL que modifican informacin debern proceder con la menor interferencia posible. Interacciones destructivas, que son interacciones que modifican informacin o estructuras subyacentes, de forma incorrecta, debern ser evitadas.La Base de Datos Oracle emplea bloqueos (locks) para controlar el acceso concurrente a la informacin. Un bloqueo es un mecanismo que previene interacciones destructivas entre transacciones que acceden a recursos compartidos. Los bloqueos se aseguran la integridad de la informacin mientras que permite el mximo de accesos a la informacin.

Consistencia de la InformacinEn la Base de Datos Oracle, cada usuario deber tener una visualizacin consistente de la informacin, incluyendo los cambios visibles realizados por el mismo y aquellos cambios confirmados por otros usuarios. Por ejemplo, la Base de Datos previene las lecturas sucias, las cuales ocurren cuando una transaccin visualiza cambios que no han sido confirmados por otra transaccin concurrente.La Base de Datos Oracle hace cumplir siempre lecturas consistentes en el nivel de la transaccin, lo que garantiza que la informacin que una consulta simple retorna es confirmada y consistente para un periodo de tiempo determinado. Dependiendo del nivel de aislamiento de la transaccin, ese perodo de tiempo en que la sentencia fue abierta o en el tiempo en que la transaccin inicia. La caracterstica Flashback Query le permite especificar este perodo de tiempo en especfico.La Base de Datos tambin puede proveer consistencia en las lecturas a todas las consultas en una transaccin, esto es conocido como consistencia de la lectura a nivel de transaccin. En este caso, cada sentencia en una transaccin puede visualizar la informacin en el mismo perodo de tiempo, que es el tiempo en el que la transaccin inicia.Arquitectura de la Base de Datos OracleEl servidor de la Base de Datos es la llave de la administracin de la informacin. En general, un servidor administra una gran cantidad de informacin de manera fiable en un ambiente multi usuario, de manera que puedan acceder de forma concurrente a la misma informacin. Un servidor de Base de Datos tambin previene accesos no autorizados y provee soluciones eficientes para la recuperacin ante fallas.Base de Datos e instanciaUn servidor de Base de Datos Oracle consiste en una Base de Datos y al menos una instancia de Base de Datos (comn mente referida solo como instancia). Dado que una Instancia y una Base de Datos estn tan estrechamente conectadas, el trmino Base de Datos Oracle es muchas veces usado para referirse a ambos. En el estricto sentido de los trminos, stos tienen el siguiente significado: Base de Datos: una base de datos es un conjunto de archivos, alojados en el disco que almacena la informacin. Esos archivos pueden existir de forma independiente de una Instancia de Base de Datos. Instancia de Base de Datos: Una Instancia es un conjunto de estructuras en memoria que administran los archivos de la Base de Datos. La Instancia consiste en un rea de memoria compartida, llamada Area Global del Sistema (SGA) y un conjunto de procesos de fondo (background). Una instancia puede existir de forma independiente con respecto de la Base de Datos.

Por cada conexin de usuario a la instancia, un proceso cliente ejecuta la aplicacin. Cada cliente es asociado a su propio proceso servidor. El proceso servidor tiene su memoria privada de sesin, conocida como el rea Global de Programa (PGA).

Una Base de Datos puede ser considerada tanto desde una perspectiva fsica, as como de una perspectiva lgica. La informacin fsica es visible a nivel del Sistema Operativo. Por ejemplo, las herramientas tales como el ls de Linux y el ps pueden listar los archivos y procesos de la Base de Datos. La informacin lgica tal como una tabla es nicamente significativa para la Base de Datos. Una sentencia SQL puede listar las tablas en una Base de Datos Oracle, pero una herramienta del Sistema Operativo no.

La Base de Datos tiene estructuras fsicas y lgicas. Debido a que las estructuras fsicas y lgicas son separadas. El almacenamiento fsico de la informacin puede ser administrado sin afectar el acceso a las estructuras lgicas de almacenamiento. Por ejemplo: al renombrar un archivo fsico de la Base de Datos no renombra las tablas cuya informacin est almacenada en ese archivo.

Estructuras de Almacenamiento de la Base de DatosUna tarea especial de una Base de Datos Relacional es el almacenamiento de la informacin. Para ello necesita estructuras que le permitan el almacenamiento de dicha informacin.

Estructuras fsicas de almacenamientoLas estructuras fsicas de almacenamiento de la Base de Datos son los archivos que almacenan la informacin. Cuando usted ejecuta el comando SQL CREATE DATABASE los siguientes archivos son creados: Data Files: Cada Base de Datos Oracle tiene uno o ms archivos fsicos de Data Files, mismos que contienen toda la informacin de la Base de Datos. La informacin de las estructuras lgicas de informacin, tales como las tablas e ndices son almacenados fsicamente en los Data Files. Control Files: Cada Base de Datos Oracle tiene un Control Files. Un Control Files contiene metadata especificando la estructura fsica de la Base de Datos, incluyendo el nombre de la Base de Datos el nombre y ubicacin de los archivos de la Base de Datos. Online redo log Files: Cada Base de Datos Oracle tiene un Online redo log, que es un conjunto de dos o ms Online redo log Files. Un redo log est constituido de entradas redo (tambin llamados redo records), este archivo registra todos los cambios realizados a la informacin.Muchos otros archivos son importantes para el funcionamiento de un Servidor de Base de Datos Oracle. Estos son offline files importantes para los respaldos y la recuperacin.

Estructuras lgicas de almacenamientoLas siguientes estructuras lgicas de almacenamiento le permiten a la Base de Datos Oracle tener un control de granularidad fina sobre el espacio de disco utilizado: Data Blocks: Al ms fino nivel de granularidad, la informacin de la Base de Datos Oracle es almacenada en Data Blocks. Un Data Block corresponde a un nmero especfico de bytes en el disco. Extents: Un Extent es un nmero especfico de Data Blocks contiguos, obtenido en una misma ubicacin, empleado para almacenar un tipo especfico de informacin. Segment: un segmento es un conjunto de Extents ubicados para un objeto de usuario (por ejemplo: Una tabla o un ndice), o bien para un Undo Data o un Temporary Data. Tablespaces: una Base de Datos es dividida en unidades de almacenamiento lgico llamada Tablespace. Un Tablespace es el contenedor lgico para un segmento. Cada Tablespace consiste en al menos un Data File.

Estructura de una Instancia de Base de DatosUna Base de Datos Oracle utiliza estructuras de memoria y procesos para administrar y acceder a la Base de Datos. Todas las estructuras de memoria existen en la memoria principal de la computadora que constituye el RDBMS.Cuando las aplicaciones se conectan a una Base de Datos Oracle, ellas se conectan a la Instancia de Base de Datos. Y los servicios de instancia de aplicacin al alojarse en otras reas de memoria distintos al SGA e iniciar otros procesos distintos a los background processes (procesos de fondo o segundo plano) de la Base de Datos.

Procesos de la Base de Datos OracleUn proceso es un mecanismo en un Sistema Operativo que puede ejecutar una serie de pasos. Algunos Sistemas Operativos usan el trmino job, task o thread. Para el propsito de esta discusin un thread es equivalente a un proceso. Una Instancia de Base de Datos Oracle tiene los siguientes tipos de procedimientos: Proceso Cliente: Estos procesos son creados y mantenidos para ejecutar software de un programa de aplicacin o una herramienta de Oracle. Muchos ambientes tienen computadoras separadas para los procesos cliente. Procesos de fondo: Estos procesos consolidan funciones que de otra manera seran manejados por mltiples programas de la Base de Datos Oracle ejecutndose para cada proceso cliente. Los procesos de fondo de forma asncrona realizan I/O y monitorean otros procesos de la Base de Datos Oracle para proveer paralelismo para brindar un mejor rendimiento y confiabilidad. Procesos servidor: Estos procesos se comunican con los procesos cliente e interactan con la Base de Datos Oracle para cumplir con las solicitudes.Los procesos de Oracle incluyen procesos servidores y procesos de fondo. En la mayora de ambientes, los procesos de Oracle y los procesos cliente se ejecutan en computadoras separadas.

Estructuras de Memoria de la InstanciaLa Base de Datos Oracle crea y utiliza estructuras de memoria para programas de software, informacin compartida entre los usuarios y reas privadas de informacin para cada usuario conectado. Las siguientes estructuras de memoria estn asociadas a una Instancia: System Global Area (SGA): La SGA es un grupo de estructuras de memoria compartida que contienen informacin e informacin de control para una Instancia de Base de Datos. Un ejemplo de los componentes del SGA incluyen los buffers de la Base de Datos, el cache y las reas compartidas de SQL. Program Global Area (PGA): Una PGA es una regin de memoria que contiene informacin e informacin de control para un proceso servidor o de fondo. El acceso a la PGA es exclusivo para el proceso. Cada proceso servidor o de fondo tiene so propio PGA.Arquitectura de Aplicacin y de RedPara el aprovechamiento de un Sistema de Computadora o de Red, la Base de Datos Oracle permite dividir el procesamiento entre el servidor y los programas cliente. La computadora que ejecuta el RDBMS manipula la interpretacin y despliegue de la informacin.

Arquitectura de AplicacinLa arquitectura de aplicacin se refiere al ambiente computacional en el cual una Aplicacin de Base de Datos se conecta con una Base de Datos Oracle. Las dos arquitecturas de Base de Datos ms comunes son cliente/servidor y multiusuario.

En una estructura cliente/servidor, la aplicacin cliente inicia la solicitud para una operacin para que sea ejecutada en el servidor de la Base de Datos. El servidor ejecuta software de la Base de Datos Oracle y maneja las funciones requeridas para un acceso compartido y concurrente. El Servidor recibe y procesa las peticiones que origina cada cliente.

En una arquitectura tradicional de varios niveles (o capas), uno o ms servidores de aplicacin ejecutan parte de la operacin. Un servidor de aplicacin contiene una gran parte de la lgica de la aplicacin, provee acceso a la informacin para el cliente y ejecuta algn procesamiento de consultas, disminuyendo as la carga de la Base de Datos. El servidor de aplicacin puede servir como interface entre clientes y mltiples Bases de Datos y proveer un nivel adicional de seguridad.

Una arquitectura orientada a los servicios (SOA) es una arquitectura de varios niveles (o capas) en donde la funcionalidad de la aplicacin se encuentra encapsulada en servicios. Los servicios SOA usualmente son implementados como Web Services. Los Web Services son accesibles a travs de un protocolo HTTP y estn basados en estndares XML, tales como el Web Services Description Language (WSDL) y SOAP.

Oracle puede actuar como un proveedor de Web Services en un ambiente tradicional de varias capas o un ambiente SOA.

Arquitectura de RedOracle Net Services es la interface entre la Base de Datos y los protocolos de comunicacin de la Red que facilitan el procesamiento distribuido y Bases de Datos Distribuidas. Los protocolos de comunicacin definen la manera en que la informacin es transmitida y recibida en la red. Oracle Net Services soporta las comunicaciones en la mayor parte de protocolos de red, incluyendo: TCP/IP, HTTP, FTP y WebDAV.

Oracle Net, que es un componente de Oracle Net Services, entabla y mantiene una sesin desde un cliente de aplicacin hacia la Base de Datos. Despus de que una sesin es establecida, Oracle Net acta como con transportador de informacin entre el cliente de aplicacin y el servidor de la Base de Datos, intercambiando mensajes entre ellos. Oracle puede realizar esto debido a que est localizado en cada computadora en la red.

Un componente importante de Net Services es el Oracle Net Listener (llamado el listener), que es un proceso que se ejecuta en la Base de Datos o en cualquier parte de la red. El cliente de aplicacin enva una solicitud de conexin al listener, que se encarga de manejar el trfico de esas solicitudes hacia la Base de Datos. Cuando una conexin es establecida, el cliente y la Base de Datos se comunican directamente.

La forma ms comn de configurar una Base de Datos Oracle a solicitudes del cliente servidor son: Arquitectura de servidor dedicado: Cada proceso cliente se conecta a un proceso servidor dedicado. El proceso servidor no es compartido por otro cliente durante la sesin del cliente. Cada nueva sesin es asignada a un proceso servidor dedicado. Arquitectura de servidor compartido: La Base de Datos utiliza un pool de procesos servidores para mltiples sesiones. Un proceso cliente se comunica con un despachador, que es un proceso que permite a muchos clientes conectarse a la misma Instancia de Base de Datos sin la necesidad de un proceso de servidor dedicado para cada cliente.

Diseo de la Base de Datos Las dificultades inherentes al diseo de una base de datos han de afrontarse con procedimientos ordenados y metdicos. En el proceso de diseo de una base de datos hemos de distinguir tres grandes fases: Diseo conceptual: Cuyo objetivo es obtener una representacin de la informacin con independencia de usuarios y aplicaciones en particular y fuera de consideraciones sobre la eficiencia del ordenador. Diseo lgico: Cuyo objetivo es transformar el diseo conceptual obtenido y adaptarlo al modelo de datos en el que se apoya el RDBMS que se va a utilizar. En nuestro caso, el RDBMS es relacional, por lo cual nos referiremos a este modelo de datos. Diseo fsico: Cuyo objetivo es conseguir una instrumentacin lo ms eficiente posible del diseo lgico.Qu es un usuario de Base de Datos?Un usuario de Base de Datos, no es ms que un conjunto de permisos que se aplican a una conexin de base de datos.

De igual manera, el usuario tambin tiene otras funciones: Ser el propietario de ciertos objetos. Definicin del tablespace por defecto para los objetos de un usuario. Copias de seguridad. Cuotas de almacenamiento.

El usuario que posee privilegios est en la posibilidad de de realizar dos operaciones:

Operacin de sistema: necesita el permiso de sistema correspondiente. Operacin sobre objeto: necesita el permiso sobre el objeto en cuestin.

El rol en una base de datos es una agrupacin de permisos de sistema y de objeto.

Diseo conceptual El diseo conceptual, brevemente expresado, consiste en extraer del trabajo de la empresa aquellas entidades y acciones que son de uso habitual en la misma y que van a formar parte de la Base de Datos.

Para ello, la forma habitual de diseo es mediante la consulta con los empleados de la empresa, pues a partir de la misma se ha de obtener el conjunto de entidades que van a formar parte de la base de datos, as como las acciones relevantes que pueden afectar al diseo de la base de datos.

La cardinalidad es obtenida en base a las posibilidades de relacin entre las entidades, existiendo tres tipos de cardinalidad: Cardinalidad 1:1: Que es cuando una entidad A se relaciona solo con otra entidad B y viceversa. Por ejemplo, el identificador de un vehculo (nmero de chasis) se corresponde con una matrcula (placa) y esa matrcula con ese identificador del vehculo. Cardinalidad 1:N: que es cuando una entidad A se puede relacionar con N entidades B pero no al revs. Por ejemplo un libro puede tener N ejemplares, pero un ejemplar es solo de un libro. Cardinalidad N:M: Que es cuando una entidad A se relaciona con N entidades B y viceversa. Por ejemplo, un libro puede ser escrito por varios autores distintos y un autor puede escribir varios libros distintos.

Sentencias SQL tipo DDL Las sentencias de SQL que son un conjunto de expresiones (normadas) que permiten la interaccin de las personas o programas con el Sistema de Administracin de Base de Datos Relacionales (RDBMS) de manera tal que se pueda acceder, crear, modificar o eliminar elementos de la Base de Datos con la que se establece una conexin, consta de dos grandes grupos, uno de ellos lo constituye el Lenguaje de Definicin de Datos (DDL).

El Lenguaje de Definicin de Datos le permite usted las siguientes tareas: Crear, alterar y eliminar objetos de un Schema. Conceder y revocar privilegios y roles. Analizar informacin en una tabla, ndice o cluster. Establecer opciones de auditora. Agregar comentarios al Diccionario de Datos. Para la ejecucin de estas sentencias el usuario que usted o sus programas utilizan para la conexin a la Base de Datos deber poseer los permisos necesarios para realizar las tareas definidas para dichas sentencia.Las sentencias del grupo de DDL son: ALTER SYSTEM ANALYZE ASSOCIATE STATISTICS AUDIT COMMENT CREATE DISASSOCIATE STATISTICS DROP FLASHBACK GRANT NOAUDIT PURGE RENAME REVOKE TRUNCATE

Este grupo de Sentencias no requieren de su confirmacin con la sentencia COMMIT. Con ello usted debe de estar plenamente seguro de su utilizacin.

CREATE La sentencia CREATE de SQL permite solicitar la creacin de un objeto [o elemento] en la base de datos.

CREATE TABLEEmplee la sentencia CREATE TABLE para crear estos tipos de tablas: Una Tabla Relacional, que es la estructura bsica para albergar informacin. Una Tabla Objeto, que es una tabla que utiliza un Tipo Objeto para la definicin de una columna. Una Tabla Objeto es explcitamente definida para contener instancias de un Tipo en particular.

Usted puede crear un Tipo Objeto y luego utilizarlo como definicin de una columna cuando crea una Tabla Relacional.Sintaxis de Create Table:

CREATE [Global | Temporary] TABLE [Schema.] Nombre de Tabla [Relational_table | Object_table] () ON COMMIT [Delete | Preserve] [Rows] ;

Creando Tablas Relacionales:Tal como hemos explorado, necesitaremos emplear la Sentencia CREATE TABLE para indicarle al RDBMS que deseamos Crear una Tabla, entonces iniciemos:

create table tbl_catalogo_genero ( genero_no number(10) constraint pk_genero_no_tcg primary key, genero varchar2(80) constraint cnn_genero_tcge not null, descripcion_genero varchar2(200), fecha_creacion date default sysdate constraint ccn_fecha_creacion_tcg not null, fecha_activo date default sysdate constraint ccn_fecha_activo_tcg not null, fecha_inactivo date );

create table tbl_catalogo_pais ( pais_no number(10) constraint pk_pais_no_tcp primary key, pais varchar2(80) constraint cnn_pais_tcp not null, descripcion_pais varchar2(200), fecha_creacion date default sysdate constraint ccn_fecha_creacion_tcp not null, fecha_activo date default sysdate constraint ccn_fecha_activo_tcp not null, fecha_inactivo date );

create table tbl_catalogo_departamento ( departamento_no number(10) constraint pk_departamento_no_tcd primary key, departamento varchar2(80) constraint cnn_pais_tcd not null, descripcion_departamento varchar2(200), fecha_creacion date default sysdate constraint ccn_fecha_creacion_tcd not null, fecha_activo date default sysdate constraint ccn_fecha_activo_tcd not null, fecha_inactivo date );

create table tbl_catalogo_municipio ( municipio_no number(10) constraint pk_municipio_no_tcm primary key, municipio varchar2(80) constraint cnn_municipio_tcm not null, descripcion_municipio varchar2(200), fecha_creacion date default sysdate constraint ccn_fecha_creacion_tcm not null, fecha_activo date default sysdate constraint ccn_fecha_activo_tcm not null, fecha_inactivo date );

create table tbl_catalogo_estatus_cliente ( estatus_cliente_no number(10) constraint pk_estatus_cliente_no_tcec primary key, estatus_cliente varchar2(80) constraint cnn_estatus_cliente_tcec not null, descripcion_tipo varchar2(200), fecha_creacion date default sysdate constraint ccn_fecha_creacion_tcec not null, fecha_activo date default sysdate constraint ccn_fecha_activo_tcec not null, fecha_inactivo date );

create table tbl_catalogo_tipo_cliente ( tipo_cliente_no number(10) constraint pk_cliente_no_tctc primary key, tipo_cliente varchar2(80) constraint ccn_tipo_cliente_tctc not null, descripcion_tipo varchar2(200), fecha_creacion date default sysdate constraint ccn_fecha_creacion_tctc not null, fecha_activo date default sysdate constraint ccn_fecha_activo_tctc not null, fecha_inactivo date );

create table tbl_clasificacion_cliente ( clasificacion_no number(10) constraint pk_cliente_no_tcc primary key, clasificacion varchar2(80) constraint ccn_clasificacion_tcc not null, descripcion_clasificacion varchar2(200), fecha_creacion date default sysdate constraint ccn_fecha_creacion_tcc not null, fecha_activo date default sysdate constraint ccn_fecha_activo_tcc not null, fecha_inactivo date );

create table tbl_catalogo_ciclos ( ciclo_no number(10) constraint pk_ciclo_no_tccf primary key, leyenda_ciclo varchar2(80) constraint ccn_leyenda_ciclo_tccf not null, descripcion_ciclo varchar2(200), fecha_creacion date default sysdate constraint ccn_fecha_creacion_tccf not null, fecha_activo date default sysdate constraint ccn_fecha_activo_tccf not null, fecha_inactivo date );

create table tbl_catalogo_serie_factura ( serie_no number(10) constraint pk_serie_no_tcsf primary key, serie_factura varchar2(80) constraint cnn_serie_factura_tcsf not null, descripcion_serie varchar2(200), fecha_creacion date default sysdate constraint ccn_fecha_creacion_tcsf not null, fecha_activo date default sysdate constraint ccn_fecha_activo_tcsf not null, fecha_inactivo date );

create table tbl_maestra_cliente ( cliente_no number(10) constraint pk_cliente_no_tmc primary key, genero_no constraint fk_genero_no_tmc references tbl_catalogo_genero(genero_no), primer_nombre varchar2(80) constraint cnn_primer_nombre_tmc not null, segundo_nombre varchar2(80), tercer_nombre varchar2(80), primer_apellido varchar2(80) constraint cnn_primer_apellido_tmc not null, segundo_apellido varchar2(80), apellido_casada varchar2(80), fecha_nacimiento date, nit varchar2(80), dpi varchar2(80), pasaporte varchar2(80), direccion1 varchar2(80), direccion2 varchar2(80), direccion3 varchar2(80), pais_no constraint fk_pais_no_tmc references tbl_catalogo_pais(pais_no), departamento_no constraint fk_departamento_no_tmc references tbl_catalogo_departamento(departamento_no), municipio_no constraint fk_municipio_no_tmc references tbl_catalogo_municipio(municipio_no), estatus_cliente_no constraint fk_estatus_cliente_no_tmc references tbl_catalogo_estatus_cliente(estatus_cliente_no), tipo_cliene_no constraint fk_tipo_cliente_no_tmc references tbl_catalogo_tipo_cliente(tipo_cliente_no), clasificacion_no constraint fk_clasificacion_no_tmc references tbl_clasificacion_cliente(clasificacion_no), ciclo_no constraint fk_ciclo_no_tmc references tbl_catalogo_ciclos(ciclo_no), serie_no constraint fk_serie_no_tmc references tbl_catalogo_serie_factura(serie_no), ultima_factura_no number(10), fecha_inicia_ciclo date, fecha_finaliza_ciclo date, fecha_emision date, fecha_vence date, proxima_fecha_inicia date, proxima_fecha_finaliza date, proxima_fecha_emision date, proxima_fecha_vence date, fecha_creacion date default sysdate constraint ccn_fecha_creacion_tmc not null, fecha_activo date default sysdate constraint ccn_fecha_activo_tmc not null, fecha_inactivo date ); Existe alguna regla para la redaccinNo, en realidad no existe una regla que se deba seguir con respecto de la redaccin de las sentencias SQL, usted puede incluir espacios en blanco a su criterio, carcter TAB, retorno de lnea (enter), pero si usted recorre cuidadosamente la seccin de CREATE TABLE de este manual, notar cierto patrn: Una sangra uniforme. Nombres descriptivos por s mismos. Orden en general.

Estas son consideradas buenas prcticas y su empleo beneficia tanto a desarrolladores, analistas y dems participantes en el proceso de desarrollo y explotacin del Software. Entonces usted debe de tener en mente al momento del diseo y construccin de sentencias, estas buenas prcticas.

Adems usted puede observar el empleo de un estndar en la definicin del nombre de los objetos o elementos de estos, puede pues apreciar el uso de: TBL_ para iniciar el nombre de una tabla. Cnn para la definicin de un Constraint Not Null. _????? Para finalizar el nombre de una tabla o constraint y estos valores son la inicial del nombre al que pertenecen, si es cuidadoso, ver que los Constraint NOT NULL para fecha_creado podran colisionar por ya existir un objeto con un nombre igual, por ello se emplea esa consideracin o norma para evitar dicho problema.

Con respecto de estos ltimos detalles, usted debe tener nocin de los estndares que se aplican segn el sistema del cual usted forma parte del grupo de desarrolladores, analistas o tcnicos informticos, deber respetarlos en la construccin de objetos en la Base de Datos. Los que usted puede apreciar en el presente manual son una mera referencia o sugerencia para un correcto proceso de desarrollo de soluciones informticas.

Global Temporary Tables[footnoteRef:2] [2: Tomado de: http://ora.u440.com/ddl/create%20global%20temporary%20table.html]

Crea una tabla temporal personal para cada sesin. Eso significa que los datos no se comparten entre sesiones y se eliminan al final de la misma.

CREATE GLOBAL TEMPORARY TABLE tbt_tabla_temp ( columna datatype [DEFAULT expr] [column_constraint(s)] [,columna datatype [,...]]) {ON COMMIT DELETE ROWS | ON COMMIT PRESERVE ROWS};

Con la opcin ON COMMIT DELETE ROWS se borran los datos cada vez que se hace COMMIT en la sesin.

Con la opcin ON PRESERVE DELETE ROWS los datos no se borran hasta el final de la sesin.

Teora de la normalizacin[footnoteRef:3] [3: Tomado de: Adquisicin y tratamiento de datos - Diseo de bases de datos relacionales.]

En el desarrollo del diseo lgico obtenemos una serie de tablas finales que son las candidatas a formar nuestra base de datos. Sin embargo, dichas tablas han sido obtenidas a partir de un diseo conceptual elaborado sin ningn tipo de reglas, por lo que podemos obtener un diseo de tablas ms o menos heterogneo.La teora de la normalizacin consiste en un conjunto de reglas formales que nos permiten asegurar que un diseo lgico cumple una serie de propiedades, corrigiendo la estructura de los datos de las tablas y evitando una serie de problemas como: Incapacidad de almacenar ciertos hechos. Redundancias y por tanto, posibilidad de inconsistencias. Ambigedades. Prdida de informacin. Aparicin en la base de datos de estados no vlidos en el mundo real, es lo que se llama anomalas de insercin, borrado y modificacin.

Las reglas formales de la teora de la normalizacin son conocidas con el nombre de formas normales. Existen seis formas normales, de forma que cuando la base de datos cumple las reglas de la primera forma normal se considera que est en primera forma normal (1FN), cuando pasan la segunda, que est en segunda forma normal (2FN), etc. Adems, una base de datos de la que se afirme que est en 2FN, est tambin en 1FN, pues las formas normales se aplican de forma sucesiva.De las seis formas normales, generalmente solo se aplican sobre las bases de datos las tres primeras, considerando que una base de datos que est en 3FN es una base de datos correctamente diseada. Por ello, expondremos a continuacin ests tres primeras formas normales.

Primera forma normal (1FN)

Una base de datos se considera que est en 1FN si cada atributo (campo) de una tabla contiene un solo valor atmico (simple). Un atributo que contiene varios valores puede derivar en una prdida de datos.

Segunda forma normal (2FN)

La segunda forma normal, como la tercera que veremos a continuacin, se relaciona con el concepto de dependencia funcional. Entendemos como dependencia funcional a la relacin que tienen los atributos (campos) de una tabla con otros atributos de la propia tabla. Un campo tiene dependencia funcional si necesita informacin de otro/s campo/s para poder obtener un valor.

Una tabla se dice que est en segunda forma normal (2FN) si sucede que:Est en 1FN Cada atributo (campo) no clave depende de la clave completa, no de parte de ella.

Por supuesto, una base de datos estar en 2FN si todas sus tablas lo estn. La idea intuitiva de la 2FN es identificar todas las tablas con una clave compuesta, pues todas las tablas con clave simple estn por defecto en 2FN si estn en 1FN, y comprobar que cada uno de los campos de esta tabla depende de la clave completa.

Tercera forma normal (3FN)

Una tabla se dice que est en tercera forma normal (3FN) si:Est en 2FN.Todos los atributos que no son claves deben ser mutuamente independientes, es decir, un atributo no debe depender de otro atributo no clave de su tabla.

Si un atributo que no es clave depende de otro atributo que no es clave, la tabla posiblemente contiene datos acerca de ms de una entidad, contradiciendo el principio de que cada tabla almacene informacin de una entidad.

Problemas de la Normalizacin

Mientras la normalizacin resuelve los problemas relacionados con la estructuracin de los datos en tablas, crea problemas aadidos a su propio concepto, como son la duplicacin de datos y la ineficacia en la recuperacin de informacin.

As, el proceso de normalizacin envuelve la descomposicin de una tabla en tablas ms pequeas, lo cual requiere que la clave primaria de la tabla original se incluya, como una clave fornea, en la tabla/s que se forman. Esto significa que a medida que se van creando estas claves forneas se va incrementando las probabilidades de poner en peligro la integridad de la base de datos.

Otro efecto adicional del nmero creciente de tablas en la base de datos, es que se ve disminuido el rendimiento del sistema en la recuperacin de la informacin contenida. Esta disminucin del rendimiento puede ser particularmente importante. Por tanto, en ciertas ocasiones es necesario llegar a un compromiso entre el nivel de normalizacin de la base de datos y el rendimiento del sistema.

ComentariosUsted puede crear dos tipos de comentarios: Comentarios sobre (documentando) las sentencias que usted crea. Existen dos forma de realizar un comentario: Entre /**/, ejemplo: /*Este query permite obtener los clientes con estatus vlido*/ O empleando --, ejemplo Este query permite obtener los clientes con estatus vlido. Comentarios asociados a objetos de Schemas u objetos que no son de un esquema, este tipo de comentarios son almacenados en el Diccionario de Datos con la Metadada sobre los objetos en s mismos. Para crear comentarios asociados a Objetos de la Base de Datos emplee la sentencia COMMENT ON.

Comentarios de documentacinNo le tema a realizar documentacin entre sus desarrollos, esta buena prctica le ayudar a usted y al resto del equipo al que usted pertenece o aquel equipo que tendr relacin con sus desarrollos. Ayuda que consiste en acelerar el proceso de administracin y desarrollo al no tener qu descifrar el porqu de una sentencia o construccin. Los comentarios no tienen efecto sobre la sentencia a menos que sea un HINT.

HintsLos Hints son comentarios que pasan instrucciones al Optimizador de Oracle. El Optimizer usa esos hints para escoger un Plan de Ejecucin asociado a la Sentencia SQL, siempre y cuando no exista alguna razn por la que el Optimizer tenga que ignorar la instruccin.

La utilizacin de los hints debe ser algo de lo que usted est muy seguro, luego de analizar el Plan de Ejecucin sin ellos y basado en el conocimiento que usted tiene de la Data.

COMMENT ONCon esta Sentencia usted indica al RDBMS que a continuacin agregar al Diccionario de Datos, comentarios asociados a una Tabla o bien a una Columna de una tabla.

Sintaxis de COMMENT ON

COMMENT ON [TABLE | COLUMN] [Schema.][Tabla.][Campo] IS ;

Semntica de la sintaxisCOMMENT ONSentencia que indica que se agregar un comentario a al Diccionario de Datos, comentarios asociados a una Tabla o bien a una Columna de una tabla.

SCHEMADe ser necesario escriba el nombre del Schema al que pertenece la Tabla a la cual estar asociado el comentario, o el nombre de la Tabla a la que pertenece el campo al cual se asociar el comentario.

TABLAEscriba el nombre de la Tabla a la cual estar asociado el comentario, o el nombre de la Tabla a la que pertenece el campo al cual se asociar el comentario.

CAMPOIndique el campo al cual ser asociado el comentario.

ISEsta clusula indica que a continuacin escribiremos el texto del comentario a asociar.

COMENTARIOEscriba entre apstrofes el texto que describa de forma clara el objetivo de la Tabla o Campo, este comentario deber ser una ayuda a los usuarios y tcnicos que tengan relacin con el objeto al que se asocia el comentario.

Agregando comentariosTeniendo en cuenta las Tablas que hemos creado con el presente manual, ahora agregaremos comentarios tanto a Tablas como a los Campos o Columnas de la Tabla:

Comentarios sobre Tabla

COMMENT ON TABLE tbl_catalogo_genero IS 'Tabla tipo Catlogo que contiene los valores posibles para identificar el gnero de un cliente.';

COMMENT ON TABLE tbl_catalogo_pais IS 'Tabla tipo Catlogo que contendr los Pases que definen la ubicacin de la direccin del cliente';

COMMENT ON TABLE tbl_catalogo_departamento IS 'Tabla tipo Catlogo que contendr los Departamentos que definen la ubicacin de la direccin del cliente';

COMMENT ON TABLE tbl_catalogo_municipio IS 'Tabla tipo Catlogo que contendr los Municipios que definen la ubicacin de la direccin del cliente';

COMMENT ON TABLE tbl_catalogo_estatus_cliente IS 'Tabla tipo Catlogo que contendr los posibles estatus asociados a un cliente.';

COMMENT ON TABLE tbl_catalogo_tipo_cliente IS 'Tabla tipo Catlogo que contendr los posibles valores que definen el Tipo de Cliente segn su naturaleza legal.';

COMMENT ON TABLE tbl_clasificacion_cliente IS 'Tabla tipo Catlogo que contendr los posibles valores que definen la claisificacin del Cliente.';

COMMENT ON TABLE tbl_catalogo_ciclos IS 'Tabla tipo Catlogo que contendr los Ciclos de Facturacin a los que puede ser asignado un cliente para su periodicidad de facturacin.';

COMMENT ON TABLE tbl_catalogo_serie_factura IS 'Tabla tipo Catlogo que contendr los posibles valores de Serie de Factura que se asocian a un Cliente y su Factura.';

COMMENT ON TABLE tbl_maestra_cliente IS 'Tabla Maestra que contiene la informacin de los Clientes que administra el Sistema.';

Comentarios sobre Campos

COMMENT ON COLUMN tbl_catalogo_genero.genero_no IS 'Campo cuyos valores son el identificador nico del genero del cliente, su funcin es permitir la relacin entre aquellas tablas que requieren la definicin de un gnero de persona.';COMMENT ON COLUMN tbl_catalogo_genero.genero IS 'Descriptivo corto que define el genero de una persona.';COMMENT ON COLUMN tbl_catalogo_genero.descripcion_genero IS 'Descripcin larga del genero de una persona.';COMMENT ON COLUMN tbl_catalogo_genero.fecha_creacion IS 'Campo cuyo valor indica la fecha en que se cre el registro.';COMMENT ON COLUMN tbl_catalogo_genero.fecha_activo IS 'Campo cuyo valor indica la fecha en que se encuentra disponible en el sistema le registro de la tabla, empleado para definir vigencias.';COMMENT ON COLUMN tbl_catalogo_genero.fecha_inactivo IS 'Campo cuyo valor indica la fecha en que ya no se encuentra disponible en el sistema le registro de la tabla, empleado para definir vigencias.';

COMMENT ON COLUMN tbl_catalogo_pais.pais_no IS 'Campo cuyos valores son el identificador nico del Pais, su funcin es permitir la relacin entre aquellas tablas que requieren la definicin de un Pas.';COMMENT ON COLUMN tbl_catalogo_pais.pais IS 'Campo cuyo valor define el nombre del Pas';COMMENT ON COLUMN tbl_catalogo_pais.descripcion_pais IS 'Descripcin del Pas.';COMMENT ON COLUMN tbl_catalogo_pais.fecha_creacion IS 'Campo cuyo valor indica la fecha en que se cre el registro.';COMMENT ON COLUMN tbl_catalogo_pais.fecha_activo IS 'Campo cuyo valor indica la fecha en que se encuentra disponible en el sistema le registro de la tabla, empleado para definir vigencias.';COMMENT ON COLUMN tbl_catalogo_pais.fecha_inactivo IS 'Campo cuyo valor indica la fecha en que ya no se encuentra disponible en el sistema le registro de la tabla, empleado para definir vigencias.';

COMMENT ON COLUMN tbl_catalogo_departamento.departamento_no IS 'Campo cuyos valores son el identificador nico del Departamento, su funcin es permitir la relacin entre aquellas tablas que requieren la definicin de un Departamento.';COMMENT ON COLUMN tbl_catalogo_departamento.departamento IS 'Nombre del Departamento.';COMMENT ON COLUMN tbl_catalogo_departamento.descripcion_departamento IS 'Descripcin del Departamento.';COMMENT ON COLUMN tbl_catalogo_departamento.fecha_creacion IS 'Campo cuyo valor indica la fecha en que se cre el registro.';COMMENT ON COLUMN tbl_catalogo_departamento.fecha_activo IS 'Campo cuyo valor indica la fecha en que se encuentra disponible en el sistema le registro de la tabla, empleado para definir vigencias.';COMMENT ON COLUMN tbl_catalogo_departamento.fecha_inactivo IS 'Campo cuyo valor indica la fecha en que ya no se encuentra disponible en el sistema le registro de la tabla, empleado para definir vigencias.';

COMMENT ON COLUMN tbl_catalogo_municipio.municipio_no IS 'Campo cuyos valores son el identificador nico del Municipio, su funcin es permitir la relacin entre aquellas tablas que requieren la definicin de un Pas.';COMMENT ON COLUMN tbl_catalogo_municipio.municipio IS 'Nombre del Municipio.';COMMENT ON COLUMN tbl_catalogo_municipio.descripcion_municipio IS 'Descripcin del Municipio.';COMMENT ON COLUMN tbl_catalogo_municipio.fecha_creacion IS 'Campo cuyo valor indica la fecha en que se cre el registro.';COMMENT ON COLUMN tbl_catalogo_municipio.fecha_activo IS 'Campo cuyo valor indica la fecha en que se encuentra disponible en el sistema le registro de la tabla, empleado para definir vigencias.';COMMENT ON COLUMN tbl_catalogo_municipio.fecha_inactivo IS 'Campo cuyo valor indica la fecha en que ya no se encuentra disponible en el sistema le registro de la tabla, empleado para definir vigencias.';

COMMENT ON COLUMN tbl_catalogo_estatus_cliente.estatus_cliente_no IS 'Campo cuyos valores son el identificador nico del Estatus del Cliente, su funcin es permitir la relacin entre aquellas tablas que requieren la definicin de un estatus de Cliente.';COMMENT ON COLUMN tbl_catalogo_estatus_cliente.estatus_cliente IS 'Texto que define el estatus del Cliente.';COMMENT ON COLUMN tbl_catalogo_estatus_cliente.descripcion_tipo IS 'Descripcin del Estatus del Cliente.';COMMENT ON COLUMN tbl_catalogo_estatus_cliente.fecha_creacion IS 'Campo cuyo valor indica la fecha en que se cre el registro.';COMMENT ON COLUMN tbl_catalogo_estatus_cliente.fecha_activo IS 'Campo cuyo valor indica la fecha en que se encuentra disponible en el sistema le registro de la tabla, empleado para definir vigencias.';COMMENT ON COLUMN tbl_catalogo_estatus_cliente.fecha_inactivo IS 'Campo cuyo valor indica la fecha en que ya no se encuentra disponible en el sistema le registro de la tabla, empleado para definir vigencias.';

COMMENT ON COLUMN tbl_catalogo_tipo_cliente.tipo_cliente_no IS 'Campo cuyos valores son el identificador nico del Tipo del Cliente, su funcin es permitir la relacin entre aquellas tablas que requieren la definicin de un Tipo de Cliente.';COMMENT ON COLUMN tbl_catalogo_tipo_cliente.tipo_cliente IS 'Texto que define el Tipo del Cliente.';COMMENT ON COLUMN tbl_catalogo_tipo_cliente.descripcion_tipo IS 'Descripcin del Tipo de Cliente.';COMMENT ON COLUMN tbl_catalogo_tipo_cliente.fecha_creacion IS 'Campo cuyo valor indica la fecha en que se cre el registro.';COMMENT ON COLUMN tbl_catalogo_tipo_cliente.fecha_activo IS 'Campo cuyo valor indica la fecha en que se encuentra disponible en el sistema le registro de la tabla, empleado para definir vigencias.';COMMENT ON COLUMN tbl_catalogo_tipo_cliente.fecha_inactivo IS 'Campo cuyo valor indica la fecha en que ya no se encuentra disponible en el sistema le registro de la tabla, empleado para definir vigencias.';

COMMENT ON COLUMN tbl_clasificacion_cliente.clasificacion_no IS 'Campo cuyos valores son el identificador nico de la Clasificacin del Cliente, su funcin es permitir la relacin entre aquellas tablas que requieren la definicin de una Clasificacin de Cliente.';COMMENT ON COLUMN tbl_clasificacion_cliente.clasificacion IS 'Texto que define la Clasificacin del Cliente.';COMMENT ON COLUMN tbl_clasificacion_cliente.descripcion_clasificacion IS 'Descripcin de la Clasificacin del Cliente.';COMMENT ON COLUMN tbl_clasificacion_cliente.fecha_creacion IS 'Campo cuyo valor indica la fecha en que se cre el registro.';COMMENT ON COLUMN tbl_clasificacion_cliente.fecha_activo IS 'Campo cuyo valor indica la fecha en que se encuentra disponible en el sistema le registro de la tabla, empleado para definir vigencias.';COMMENT ON COLUMN tbl_clasificacion_cliente.fecha_inactivo IS 'Campo cuyo valor indica la fecha en que ya no se encuentra disponible en el sistema le registro de la tabla, empleado para definir vigencias.';

COMMENT ON COLUMN tbl_catalogo_ciclos.ciclo_no IS 'Campo cuyos valores son el identificador nico del Ciclo de Facturacin, su funcin es permitir la relacin entre aquellas tablas que requieren la definicin de un Ciclo de Facturacin.';COMMENT ON COLUMN tbl_catalogo_ciclos.leyenda_ciclo IS 'Texto que define el Ciclo de Facturacin.';COMMENT ON COLUMN tbl_catalogo_ciclos.descripcion_ciclo IS 'Descripcin del Ciclo de Facturacin.';COMMENT ON COLUMN tbl_catalogo_ciclos.fecha_creacion IS 'Campo cuyo valor indica la fecha en que se cre el registro.';COMMENT ON COLUMN tbl_catalogo_ciclos.fecha_activo IS 'Campo cuyo valor indica la fecha en que se encuentra disponible en el sistema le registro de la tabla, empleado para definir vigencias.';COMMENT ON COLUMN tbl_catalogo_ciclos.fecha_inactivo IS 'Campo cuyo valor indica la fecha en que ya no se encuentra disponible en el sistema le registro de la tabla, empleado para definir vigencias.';

COMMENT ON COLUMN tbl_catalogo_serie_factura.serie_no IS 'Campo cuyos valores son el identificador nico de la Serie de Factura, su funcin es permitir la relacin entre aquellas tablas que requieren la definicin de una Serie de Factura.';COMMENT ON COLUMN tbl_catalogo_serie_factura.serie_factura IS 'Texto que define la Serie de Factura.';COMMENT ON COLUMN tbl_catalogo_serie_factura.descripcion_serie IS 'Descripcin de la Serie de Factura.';COMMENT ON COLUMN tbl_catalogo_serie_factura.fecha_creacion IS 'Campo cuyo valor indica la fecha en que se cre el registro.';COMMENT ON COLUMN tbl_catalogo_serie_factura.fecha_activo IS 'Campo cuyo valor indica la fecha en que se encuentra disponible en el sistema le registro de la tabla, empleado para definir vigencias.';COMMENT ON COLUMN tbl_catalogo_serie_factura.fecha_inactivo IS 'Campo cuyo valor indica la fecha en que ya no se encuentra disponible en el sistema le registro de la tabla, empleado para definir vigencias.';

COMMENT ON COLUMN tbl_maestra_cliente.cliente_no IS 'Campo cuyo valor es el identificador nico del Cliente y cuyo fin es permitir la relacin entre este y los dems objetos o registros que ameriten estr referenciados a l.';COMMENT ON COLUMN tbl_maestra_cliente.genero_no IS 'Llave fornea que permite la relacin del Cliente con respecto de su gnero esta relacin es hacia la tabla/campo tbl_catalogo_genero.genero_no.';COMMENT ON COLUMN tbl_maestra_cliente.primer_nombre IS 'Campo que contendr el Primer Nombre del Cliente.';COMMENT ON COLUMN tbl_maestra_cliente.segundo_nombre IS 'Campo que contendr el Segundo Nombre del Cliente.';COMMENT ON COLUMN tbl_maestra_cliente.tercer_nombre IS 'Campo que contendr de poseerlo el Tercer Nombre del Cliente.';COMMENT ON COLUMN tbl_maestra_cliente.primer_apellido IS 'Campo que contendr el Primer Apellido del Cliente.';COMMENT ON COLUMN tbl_maestra_cliente.segundo_apellido IS 'Campo que contendr el Primer Apellido del Cliente.';COMMENT ON COLUMN tbl_maestra_cliente.apellido_casada IS 'dCampo que contendr el Apellido del Casada de un Cliente Mujer.';COMMENT ON COLUMN tbl_maestra_cliente.fecha_nacimiento IS 'Campo que contendr la fecha de nacimiento del Cliente.';COMMENT ON COLUMN tbl_maestra_cliente.nit IS 'Campo que contendr el nmero de Tributacin del Cliente ante la SAT.';COMMENT ON COLUMN tbl_maestra_cliente.dpi IS 'Campo que contendr el nmero de Identificacin nico de un individuo expresado en su DPI.';COMMENT ON COLUMN tbl_maestra_cliente.pasaporte IS 'Campo que contendr el nmero de Pasaporte del Cliente.';COMMENT ON COLUMN tbl_maestra_cliente.direccion1 IS 'Campo que contendr un Texto que Describa la Direccin de Residencia y Notificaciones del Cliente, de necesitar ms espacio para expresar la Direccin se cuenta con otros dos campos.';COMMENT ON COLUMN tbl_maestra_cliente.direccion2 IS 'Campo que contendr un Texto complemento que Describa la Direccin de Residencia y Notificaciones del Cliente, de necesitar ms espacio para expresar la Direccin se cuenta con otro campo ms para dicho efecto.';COMMENT ON COLUMN tbl_maestra_cliente.direccion3 IS 'Campo que contendr un Texto complemento que Describa la Direccin de Residencia y Notificaciones del Cliente, no existen ms espacios para este efecto.';COMMENT ON COLUMN tbl_maestra_cliente.pais_no IS 'Campo que permite la relacin del Cliente con respecto del Pas en donde reside.';COMMENT ON COLUMN tbl_maestra_cliente.departamento_no IS 'Campo que permite la relacin del Cliente con respecto del Departamento en donde reside.';COMMENT ON COLUMN tbl_maestra_cliente.municipio_no IS 'Campo que permite la relacin del Cliente con respecto del Municipio en donde reside.';COMMENT ON COLUMN tbl_maestra_cliente.estatus_cliente_no IS 'Campo que permite la relacin del Cliente con respecto de su Estatus';COMMENT ON COLUMN tbl_maestra_cliente.tipo_cliene_no IS 'Campo que permite definir el Tipo de Cliente.';COMMENT ON COLUMN tbl_maestra_cliente.clasificacion_no IS 'Campo que permite definir el la Clasificacin del Cliente.';COMMENT ON COLUMN tbl_maestra_cliente.ciclo_no IS 'Campo que permite definir el Ciclo de Facturacin al cual pertenece el Cliente.';COMMENT ON COLUMN tbl_maestra_cliente.serie_no IS 'Campo que permite definir la Serie de Facturas que corresponde a un Cliente.';COMMENT ON COLUMN tbl_maestra_cliente.ultima_factura_no IS 'Campo que contiene el identificador de la ltima factura vlida que forma parte de la Cuenta Corriente de un Cliente.';COMMENT ON COLUMN tbl_maestra_cliente.fecha_inicia_ciclo IS 'Campo que contiene la fecha inicial de la ltima factura vlida que forma parte de la Cuenta Corriente de un Cliente.';COMMENT ON COLUMN tbl_maestra_cliente.fecha_finaliza_ciclo IS 'Campo que contiene la fecha final de la ltima factura vlida que forma parte de la Cuenta Corriente de un Cliente.';COMMENT ON COLUMN tbl_maestra_cliente.fecha_emision IS 'Campo que contiene la fecha de emisin de la ltima factura vlida que forma parte de la Cuenta Corriente de un Cliente.';COMMENT ON COLUMN tbl_maestra_cliente.fecha_vence IS 'Campo que contiene la fecha en que vence de la ltima factura vlida que forma parte de la Cuenta Corriente de un Cliente.';COMMENT ON COLUMN tbl_maestra_cliente.proxima_fecha_inicia IS 'Campo que contiene la fecha inicial de la prxima factura a emitirse para un Cliente.';COMMENT ON COLUMN tbl_maestra_cliente.proxima_fecha_finaliza IS 'Campo que contiene la fecha final de la prxima factura a emitirse para un Cliente.';COMMENT ON COLUMN tbl_maestra_cliente.proxima_fecha_emision IS 'Campo que contiene la fecha de emisin de la prxima factura a emitirse para un Cliente.';COMMENT ON COLUMN tbl_maestra_cliente.proxima_fecha_vence IS 'Campo que contiene la fecha en que vence la prxima factura a emitirse para un Cliente.';COMMENT ON COLUMN tbl_maestra_cliente.fecha_creacion IS 'Campo cuyo valor indica la fecha en que se cre el Cliente.';COMMENT ON COLUMN tbl_maestra_cliente.fecha_activo IS 'Campo cuyo valor indica la fecha en que se encuentra activo el Cliente dentro del Sistema.';COMMENT ON COLUMN tbl_maestra_cliente.fecha_inactivo IS 'Campo cuyo valor indica la fecha en que ya no se encuentra activo el Cliente dentro del Sistema.';

Documentar es una buena prcticaEs importante que usted adopte buenas prcticas al desempearse en la labor del Desarrollo y Mantenimiento de Sistemas, tal como usted ve, Oracle le provee una forma de documentar y est constituida por los comentarios, tanto como parte de las Sentencias que usted elabora, as como parte del Diccionario de Datos o Metadata. Estas prcticas harn ms fcil y eficiente las tareas de Desarrollo y Mantenimiento de un Sistema basado en data perdurable alojada en una Base de Datos y gestionada por un Sistema de Administracin de Base de Datos Relacionales. Pierda pues el miedo de documentar y genere soluciones que sean fciles y amigables de administrar.

Qu es un ndice?Un ndice es un objeto de la Base de Datos, cuya finalidad es crear un acceso directo a la informacin de manera tal que su obtencin sea rpida.

Oracle accede a los datos de dos maneras:1. Recorriendo las tablas; comenzando el principio y extrayendo los registros que cumplen las condiciones de la consulta; lo cual implica posicionar las cabezas lectoras, leer el dato, controlar si coincide con lo que se busca (como si pasramos una a una las pginas de un libro buscando un tema especfico).

2. Empleando ndices; recorriendo la estructura de rbol del ndice para localizar los registros y extrayendo los que cumplen las condiciones de la consulta (comparando con un libro, diremos que es como leer el ndice y luego de encontrar el tema buscado, ir directamente a la pgina indicada).

Un ndice posibilita el acceso directo y rpido haciendo ms eficiente las bsquedas. Sin ndice, Oracle debe recorrer secuencialmente toda la tabla para encontrar un registro.

Los ndices son estructuras asociadas a tablas, una tabla que almacena los campos indexados y se crean para acelerar las consultas.

La desventaja es que consume espacio en el disco en disco y genera costo de mantenimiento (tiempo y recursos).

Es importante identificar el o los campos por los que sera til crear un ndice, aquellos campos por los cuales se realizan bsquedas con frecuencia: claves primarias, claves externas o campos que combinan tablas.

No se recomienda crear ndices sobre campos que no se usan con frecuencia en consultas o en tablas muy pequeas.

Los cambios sobre la tabla, como insercin, actualizacin o eliminacin de registros, son incorporados automticamente.

Cuando creamos una restriccin "primary key" o "unique" a una tabla, Oracle automticamente crea un ndice sobre el campo (o los campos) de la restriccin y le da el mismo nombre que la restriccin. En caso que la tabla ya tenga un ndice, Oracle lo usa, no crea otro.

Oracle permite crear distintos tipos de ndices. "Normal" es el estndar de Oracle, son ndices tipo rbol binario; contiene una entrada por cada valor de clave que almacena la direccin donde se encuentra el dato. Es el tipo predeterminado y el ms comn.

CREATE INDEX

La sentencia tipo DDL: CREATE INDEX le indica al RDBMS que solicitamos la creacin de un ndice. Los ndices pueden ser creados sobre: Uno o ms campos de una Tabla, una Tabla Particionada, una Tabla index-organized o un Cluster. Uno ms atributos Tipo Objeto escalar de una Tabla o Cluster. Una Tabla anidada para indexar una columna de una Tabla anidada.

Entonces, un siendo un objeto el ndice este contiene una entrada por cada valor que aparece en los campos indexados de una Tabla o Cluster. La Base de Datos Oracle soporta varios tipos de ndices y esto son: ndices normales. Por defecto, Oracle crea ndice B-tree. ndices Bitmap, que almacenan los rowid asociados con el valor llave como un bitmap. ndices particionados, que consiste en particiones conteniendo una entrada por cada valor que reside en el campo o campos indexados de la Tabla. ndices basados en funciones, que estn basados en expresiones. Ellos le permiten a usted construir consultas que evalan el valor retornado basado en una expresin, que quiz inclua ye Funciones nativas de Oracle. ndices de Dominio, que son instancias de un ndice de una Aplicacin en especfico del tipo indextype.

Sintaxis de CREATE INDEX

CREATE [UNIQUE | BITMAP] INDEX [Schema.] ON [Schema.] ();Semntica

CREATE INDEXQue solicita al RDBMS la creacin de un ndice.

UNIQUEEspecifique esta clusula para indicar que el valor de la columna o columnas bajo los cuales est creado el ndice debern ser nicos. Usted no puede crear ndices nicos para ndices de Dominio.

BITMAPEspecifique esta clusula para indicar que el ndice ser creado con un bitmap para cada llave, en lugar de indexar cada fila o registro por separado. Los ndices bitmap almacenan el rowid asociado al valor de la llave como un bitmap. Cada bit en el bitmap corresponde a un posible rowid. Si el Bit es asignado, entonces significa que el registro con su correspondiente rowid contiene el valor llave. La representacin de bitmaps es la mejor opcin para aplicaciones con bajos niveles de transacciones concurrentes, tales como un Data Ware House. Los ndices de tipo Bitmap tienen las siguientes restricciones: Usted no puede especificar la clusula BITMAP cuando crea un ndice global particionado. No se puede crear un ndice secundario BITMAP sobre una tabla index-organized a menos que dicha tabla tenga una Tabla mapping asociada a ella. No se puede especificar esta clusula para ndices de Dominio. Un ndice BITMAP nicamente pude tener hasta 30 columnas.

SCHEMADe ser necesario especifique con el nombre del Schema al que pertenecer el ndice. Si usted no lo especifica ser creado bajo el Schema del usuario que crea el ndice.

ONSeguido de esta clusula usted indicar al RDBMS la Tabla sobre la cual usted crear el ndice.

SCHEMADe ser necesario especifique el esquema al que pertenece la tabla sobre la cual crear el ndice. Si se omite, por defecto ser sobre el Schema del usuario que lo crea.

TablaEspecifique el nombre de la Tabla sobre la cual ser creado el ndice.

Lista de CamposEscriba el nombre de los campos que sern indexados.

Creando ndices

Siguiendo con las Tablas que hemos creado a travs de este manual, ahora crearemos ndices para algunos de los campos de esas tablas:

CREATE INDEX idx_on_tipo_cliene_no_tmc on tbl_maestra_cliente(tipo_cliene_no);

CREATE INDEX idx_on_clasificacion_no_tmc on tbl_maestra_cliente(clasificacion_no);

CREATE SEQUECE[footnoteRef:4] [4: Tomado de: Oracle Database - SQL Language Reference - 12c Release 1 (12.1) - E17209-14.]

Emplee la sentencia CREATE SEQUENCE para crear una Secuencia, que es un objeto de Base de Datos que es empleado por muchos usuarios para la generacin de enteros nicos. Usted puede usar las secuencias para generar automticamente los valores para los Primary Key.

Cuando un nmero de la secuencia es generado, la secuencia se incrementa, independientemente si la transaccin es confirmada o deshecha (commit o rollaback). Si dos usuarios incrementan la misma secuencia, los nmeros que ellos usan de la secuencia tendrn una diferencia de correlacin, dada la generacin de distintos nmeros segn se solicit el incremento de la secuencia por cada usuario.

Los nmeros de las Secuencias son creados sin dependencia de las Tablas, de esta suerte los nmeros de las Secuencias pueden ser utilizados para diferentes tablas. Es posible pues, que los nmeros de las Secuencias parecieran no ser correlativos y que alguno de ellos han sido salteados, esto es debido a que en las transacciones que incrementan la secuencia, alguna de dichas transacciones hayan sido deshechas (rollback).

Despus de que una secuencia es creada, usted puede acceder a sus valores, empleando sentencias SQL con la seudo columnas:

CURRVAL: Que retorna el valor actual de la Secuencia. NEXTVAL: Que incrementa la Secuencia y retorna el nuevo valor incrementado.

Sintaxis de CREATE SEQUENCE

Usted puede crear una secuencia obedeciendo esta sintaxis:

Create Secuence [schema.] [nombre de la secuencia] Increment by [integer] Start whit [integer] Maxvalue [integer] Nomaxvalue Minvalue [integer] Nominvalue Cycle Nocycle Cache Nocache Order Noorder Keep Nokeep Session Global

Semntica de la SintaxisData la sintaxis para la Creacin de una secuencia, tenemos que el significado o funcin de las clusulas son:

Create SecuenceSolicita al RDBMS la creacin de una secuencia.

Schema Indica a qu esquema pertenecer la secuencia. Si un esquema no es especificado, Oracle lo asignar al Schema del usuario que solicita su creacin.

Nombre de la SecuenciaDefinir el nombre de la Secuencia, recuerde el empleo de un estndar vlido que obedezca buenas prcticas y que se apegue a los estndares del Sistema del cual formar parte.

Increment ByCon esta clusula usted puede especificar el intervalo entre los nmero de la Secuencia. Este valor entero puede ser bien sea positivo o negativo, pero no puede ser cero (0). Este valor puede tener hasta 28 dgitos para una secuencia ascendente y 27 para una secuencia descendente. El valor absoluto de la secuencia debe ser menor que la diferencia entre Maxvalue y Minvalue. Si este valor es negativo, entonces la secuencia es descendente. Si es positivo entonces la secuencia es ascendente. Si usted omite esta clusula, el intervalo adquiere un valor por defecto de 1.

Start withEspecifica el valor de inicio de la secuencia, usted debe emplear esta clusula para iniciar una secuencia ascendente en el valor ms grande que su valor mnimo o una descendente en su valor menor que su mximo. Para secuencias ascendentes, el valor por defecto es el valor mnimo de la secuencia. Para secuencias descendentes el valor por defecto de esta clusula es su valor mximo. Este valor entero puede tener hasta 28 o menos dgitos para valores positivos y 27 o menos para valores negativos.MaxvalueEspecifica el valor mximo que puede generar la secuencia. Este valor puede ser un entero de hasta 28 o menos dgitos para valores positivos y 27 o menos dgitos para valores negativos. Maxvalue deber ser igual o mayor a el valor de la clusula Start With y deber ser mayor que el valor de la clusula Minvalue.

NomaxvalueDefinir esta clusula en la creacin de la Secuencia indicar que el valor mximo de la misma ser 10 elevado a la 28 potencia menos 1 para secuencias ascendentes o -1 para secuencias descendentes.

MinvalueCon el valor de esta clusula se especifica el valor mnimo de la Secuencia. Este puede tener un valor entero de 28 o menos dgitos para valores positivos o 27 o menos para valores negativos. Minvalue debe ser igual o menor a el valor de la clusula Start With y deber ser menor que el valor de la clusula Maxvalue.

NominvalueIndica un valor mnimo de 1 para Secuencias ascendentes o -10 elevado a la 27 potencia -1, para Secuencias descendentes.

CycleEspecifica que la Secuencia continuar generando valores luego de alcanzar su valor mximo o mnimo. Despus que una Secuencia ascendente alcance su valor mximo, esta generar su valor mnimo. En el caso de una Secuencia descendente generar su valor mximo.

NocycleEspecfica que la Secuencia no deber generar ms valores una vez haya alcanzado su valor mnimo o mximo.

Cache Con esta clusula usted puede especificar cuntos valores de la Secuencia debe la Base de Datos mantener en memoria para su acceso inmediato. Este valor entero puede tener 28 o menos dgitos. El valor mnimo de esta clusula es 2. Para Secuencias que son Cclicas, este valor debe ser menor que los valore del ciclo. No se pueden almacenar en Cache ms valores que pueden ser empleados en un ciclo de la Secuencia. En consecuencia, el valor mximo permitido para esta clusula [Cache]deber ser menor que el resultado de la siguiente frmula: (CEIL (MAXVALUE - MINVALUE)) / ABS (INCREMENT). Si existe un fallo en el Sistema, todos los valores alojados en memoria para la Secuencia y que no han sido usados en una transaccin asegurada (commit), sern perdidos.

NocacheEspecifica que no se desean valores almacenados en memoria. Si usted omite las clusulas Cache, Nocache, entonces la Base de Datos almacena en Cache 20 nmeros de la Secuencia por defecto.

OrderCon esta clusula usted exige que se garantice que los nmeros de la Secuencia son generados en el orden en que son solicitados. Esta clusula es til si usted est empleando secuencias tipo Timestamp. Garantizar el orden de Secuencias cuyo objetivo son la generacin de llaves primarias, generalmente no es necesario. Esta clusula es pues necesaria para garantizar el orden de generacin si usted emplea Oracle Real Application Clusters. Si usted est empleando el Exclusive Mode, entonces las Secuencias siempre generarn los valores de ella en orden.

NoorderEmplee esta clusula si usted no desea que se generen los valores en el rden de requisicin de incremento de la Secuencia. Si usted omite esta clusula, Oracle la incluye por defecto.

Keep Especifique esta clusula si usted desea que Nextval retenga su valor original durante el replay para Application Continuity. Este comportamiento ocurrir solo si el usuario que ejecuta la aplicacin es el propietario del Schema que contiene a la Secuencia. Esta clusula es til para proveer Variables de Entorno (de aplicacin y ejecucin de aplicacin) en la continuidad de la aplicacin luego de restaurarse la misma durante un error.

NokeepCon esta clusula usted especifica que no desea que Nextval retenga su valor original durante la recuperacin de la continuidad de la Aplicacin. Oracle define por defecto este valor para la creacin de una Secuencia si usted no la especifica.

SessionCon esta clusula usted indica que se crear una Secuencia de Sesin. Que es una tipo especial de Secuencia, destinada a ser empleada con las tablas Global Tempoary Table, que tienen visibilidad de Sesin. A diferencia de las Secuencias regulares (Globales), una Secuencia de Sesin retorna un rango nico de nmeros nicamente con la Sesin en donde son empleadas, pero no con relacin a otras Sesiones. Otra diferencia consiste en que las Secuencias de Sesin no son persistentes. Si una sesin finaliza, as mismo lo hace el estado de las Secuencias de Sesin que son empleadas durante dicha Sesin.

Las clusulas, Cache, Nocache, order y Noorder son ignoradas cuando se crea una Secuencia de Sesin.

GlobalEspecifica que la Secuencia ser Global o regular. Para Oracle este valor es por defecto si usted no lo especifica.

Creando SecuenciasEntonces, siguiendo nuestro modelo de datos a emplear para este Manual, crearemos las Secuencias Globales necesarias para la generacin de Llaves Primarias (PK) de cada tabla que trabajaremos en adelante.

--Secuencia para el PK de la tabla tbl_catalogo_genero create sequence seq_genero_no_tcg increment by 1 start with 1 minvalue 1 maxvalue 9999999999 nocycle nocache;

--Secuencia para el PK de la tabla tbl_catalogo_pais create sequence seq_pais_no_tcp increment by 1 start with 1 minvalue 1 maxvalue 9999999999 nocycle nocache;

--Secuencia para el PK de la tabla tbl_catalogo_departamento create sequence seq_departamento_no_tcd increment by 1 start with 1 minvalue 1 maxvalue 9999999999 nocycle nocache; --Secuencia para el PK de la tabla tbl_catalogo_municipio create sequence seq_municipio_no_tcm increment by 1 start with 1 minvalue 1 maxvalue 9999999999 nocycle nocache; --Secuencia para el PK de la tabla tbl_catalogo_estatus_cliente create sequence seq_estatus_cliente_no_tcec increment by 1 start with 1 minvalue 1 maxvalue 9999999999 nocycle nocache; --Secuencia para el PK de la tabla tbl_catalogo_tipo_cliente create sequence seq_tipo_cliente_no_tctc increment by 1 start with 1 minvalue 1 maxvalue 9999999999 nocycle nocache; --Secuencia para el PK de la tabla tbl_clasificacion_cliente create sequence seq_clasificacion_no_tcc increment by 1 start with 1 minvalue 1 maxvalue 9999999999 nocycle nocache; --Secuencia para el PK de la tabla tbl_catalogo_ciclos create sequence seq_ciclo_no_tccf increment by 1 start with 1 minvalue 1 maxvalue 9999999999 nocycle nocache; --Secuencia para el PK de la tabla tbl_catalogo_serie_factura create sequence seq_serie_no_tcsf increment by 1 start with 1 minvalue 1 maxvalue 9999999999 nocycle nocache; --Secuencia para el PK de la tabla tbl_maestra_cliente create sequence seq_cliente_no_tmc increment by 1 start with 1 minvalue 1 maxvalue 9999999999 nocycle nocache;

Convencin de escrituraNo existe una reglamentacin definitiva para la redaccin o escritura de las Sentencias SQL, pero tal como lo hemos abordado en otros apartados de Creacin, usted puede notar en las sentencias que anteceden a este apartado, que existe un patrn en la redaccin de las mismas:

Una tabulacin identificable, lo que permite a usted y resto del equipo ganar tiempo en la lectura y anlisis de las mismas, lo que se traduce en una buena prctica. Adems, tambin en estas creaciones usted nota el empleo de SEQ_ como estndar para la creacin de Secuencias, buena prctica que permitir la rpida identificacin del Objeto Secuencia dentro de la Base de datos. Recuerde que esta es una sugerencia y usted deber apegarse a los estndares que rigen el desarrollo y administracin del Sistema en el cual usted se desenvuelve. Adems aqu se aborda el empleo de Comentarios, mismos que se anteceden de guiones mayores, con lo cual el RDBMS sabe que esa lnea es un comentario. Tambin pueden ser establecidos con /* y */, es decir: /*Esto es un comentario*/. Son una buena prctica que permitir al equipo y a usted mismo contar con referencias prcticas que le permitirn desenvolverse de mejor manera en el mantenimiento o desarrollo de Soluciones Informticas.

DROPLa eliminacin de Objetos de la Base de Datos se puede realizar con el empleo de la Sentencia DROP. Las sentencias DROP que usted puede emplear son: DROP AUDIT POLICY (Unified Auditing) DROP CLUSTER DROP CONTEXT DROP DATABASE DROP DATABASE LINK DROP DIMENSION DROP DIRECTORY DROP DISKGROUP DROP EDITION DROP FLASHBACK ARCHIVE DROP FUNCTION DROP INDEX DROP INDEXTYPE DROP JAVA DROP LIBRARY DROP MATERIALIZED VIEW DROP MATERIALIZED VIEW LOG DROP OPERATOR DROP OUTLINE DROP PACKAGE DROP SEQUENCE DROP SYNONYM DROP TABLE DROP TABLESPACE DROP TRIGGER DROP TYPE DROP TYPE BODY DROP USER DROP VIEW

DROP TABLEEmplee esta Sentencia para mover una Tabla o una Tabla Objeto a la papelera de reciclaje o para removerla de la Base de Datos completamente. Para una Tabla externa, este comando nicamente remueve la entrada de este objeto del Diccionario de Datos, no tiene pues efecto sobre la informacin de la misma, puesto que ella reside fuera de la Base de Datos.

Al solicitar la eliminacin de una tabla a travs de la Sentencia DROP TABLE, invalida los objetos dependientes de ella y se eliminan los privilegios sobre dicha Tabla. Si usted desea recrear la tabla, entonces deber volver a conceder los permisos que se necesitan sobre ella, as mismo deber recrear los ndices, los constraints de integridad y los triggers asociados a ella. Si lo que usted necesita es eliminar la informacin de la tabla sera una mejor opcin la Sentencia DDL TRUNCATE.

Sintaxis de DROP TABLEDROP TABLE [Schema.][Tabla] [CASCADE CONSTRAINTS] [PURGE];

Semntica de la sintaxisDROP TABLEEspecifica al RDBMS que estamos solicitando la eliminacin de una Tabla.SCHEMADe ser necesario especifique el esquema al que pertenece la tabla que desea eliminar. Si se omite, por defecto ser aquella tabla con el nombre especificado que exista dentro de los objetos del Schema del usuario que ejecuta esta sentencia.

TablaEspecifique el nombre de la Tabla que desea eliminar.CASCADE CONSTRAINTSCon esta clusula usted indica al RDBMS que se eliminen todos los constraints de integridad que se asocian tanto a la Llave Primaria, as como a las llaves forneas que figuran en la definicin de la Tabla que est eliminando. Si usted omite esta clusula y existen constraints de integridad asociados a la tabla, entonces la Base de Datos retornar un error.

PURGELa clusula PURGE se emplea para indicar que usted al borrar la Tabla y liberar el espacio asociado a ella. Si usted emplea esta clusula tanto la Tabla y sus objetos dependientes no ser enviados a la palera de reciclaje. Tenga en cuenta que el empleo de esta clusula imposibilita el deshacer la eliminacin de la misma.

Operaciones implcitas de DROP TABLECuando usted emplea DROP TABLE, se ejecutan de forma implcita las siguientes operaciones: Todos los registros de la Tabla son eliminados. Todos los ndices e ndices de Dominio y triggers asociados a la tabla son eliminados. Sin importar quin los haya creado o el Schema al que pertenezcan. Si la Tabla es particionada, as mismo los ndices locales de particin son eliminados. Todas las Storage Tables de Tablas anidadas y los LOBs de la Tabla son eliminados. Cuando usted elimina una Tabla: range, hash, o list-partitioned, la Base de Datos elimina todas las particiones de la Tabla. Si usted elimina una Tabla composite-partitioned, entonces tanto las particiones y sub particiones son eliminadas. Para una Tabla index-organized todas las mapping tables definidas en el index-organized son eliminadas. Si la Tabla a eliminar es base de una Vista, el contenedor de una Tabla Maestra o una Vista Materializada o dicha tabla es referenciada en un Stored Procedure, funcin o paquete, entonces la Base de Datos invalida esos objetos dependientes pero no los elimina. Usted ya no podr utilizar esos objetos a menos que recree la Tabla o modifique los objetos de tal suerte que ya no dependan de ella.

Eliminando Tablas Teniendo en mente las Tablas que hemos creado con el presente manual, ahora procederemos a eliminarlas:

drop table tbl_catalogo_genero cascade constraints purge;

drop table tbl_catalogo_pais cascade constraints purge;

drop table tbl_catalogo_departamento cascade constraints purge;

drop table tbl_catalogo_municipio cascade constraints purge;

drop table tbl_catalogo_estatus_cliente cascade constraints purge;

drop table tbl_catalogo_tipo_cliente cascade constraints purge;

drop table tbl_clasificacion_cliente cascade constraints purge;

drop table tbl_catalogo_ciclos cascade constraints purge;

drop table tbl_catalogo_serie_factura cascade constraints purge; drop table tbl_maestra_cliente cascade constraints purge;

DROP SEQUENCECon esta sentencia usted puede remover una Secuencia de la Base de Datos. Tambin puede emplear esta Sentencia para reiniciar una Secuencia al eliminarla y luego recrearla.

Sintaxis de DROP SEQUENCEDROP SEQUENCE [Schema.] [Secuencia];

Semntica de la sintaxisDROP SEQUENCEEspecifica al RDBMS que estamos solicitando la eliminacin de una Secuencia.SCHEMADe ser necesario especifique el esquema al que pertenece la secuencia que desea eliminar. Si se omite, por defecto ser aquella secuencia con el nombre especificado que exista dentro de los objetos del Schema del usuario que ejecuta la sentencia.

SecuenciaEs el nombre de la Secuencia que se desea eliminar.

Eliminando SecuenciasAhora teniendo como objetivo las Secuencias creadas con este manual, procederemos a eliminarlas:

DROP SEQUENCE seq_genero_no_tcg;

DROP SEQUENCE seq_pais_no_tcp;

DROP SEQUENCE seq_departamento_no_tcd;

DROP SEQUENCE seq_municipio_no_tcm; DROP SEQUENCE seq_estatus_cliente_no_tcec; DROP SEQUENCE seq_tipo_cliente_no_tctc; DROP SEQUENCE seq_clasificacion_no_tcc; DROP SE