Creacion y Uso de Constraints

Embed Size (px)

Citation preview

  • CREACIN Y USO DE CREACIN Y USO DE CREACIN Y USO DE CREACIN Y USO DE CONSTRAINTSCONSTRAINTSCONSTRAINTSCONSTRAINTS SECUENCIAS, VISTAS SECUENCIAS, VISTAS SECUENCIAS, VISTAS SECUENCIAS, VISTAS

    E NDICESE NDICESE NDICESE NDICES

    CURSO:CURSO:CURSO:CURSO:

    TALLER DE BASE DE DATOS

    ALUMNOS:ALUMNOS:ALUMNOS:ALUMNOS:

    ANGULO VIGO, RONALD JAVIER. SANCHEZ HUAMAN ROGER MIGUEL. ERWIN FLORES VARGAS.

    CICLO:CICLO:CICLO:CICLO:

    2008 II

    DOCENTE:

    Ing. Hugo Prez Quiroz.

    Cajamarca, Noviembre del 2008.

  • INDICE

    i. Introduccin Pg. 01.

    1. Creacin y uso de constraints Pg. 01. 1 .1 Tipos de Constraints Pg. 02.

    1 .2 Reglas en el uso de constraints Pg. 02.

    1 .3 Definiendo constraints Pg. 03.

    1.3.1 CONSTRAINT NOT NULL Pg. 03.

    1.3.2 CONSTRAINT UNIQUE Pg. 04.

    1.3.3 CONSTRAINT PRIMARY KEY Pg. 05.

    1.3.4 CONSTRAINT FOREIGN KEY Pg. 08.

    1.3.5 CONSTRAINT CHECK Pg. 10.

    1 .4 Manipulacin de Constraints Pg. 10. 1.4.1 AADIENDO UN CONSTRAINT Pg. 10.

    1.4.2 ELIMINANDO UN CONSTRAINT Pg. 11. 1.4.3 DESHABILITANDO UN CONSTRAINT Pg. 11.

    1.4.4 HABILITANDO UN CONSTRAINT Pg. 12.

    2. CREACION Y USO DE SECUENCIAS. Pg. 12.

    2.1 Creacin de Secuencias Pg. 12. 2.2 Ver Lista de Secuencias Pg. 13. 2.3 Uso de la Secuencia Pg. 13. 2.4 Modificar Secuencias Pg. 14. 2.5 Borrar Secuencias Pg. 14.

    3 CREACION Y USO DE VISTAS. Pg. 15.

    3 .1 Creacin De Vistas Pg. 15. 3.2 Ejecucin de comandos DML sobre Vistas Pg. 16. 3.3 Mostrar la lista de Vistas Pg. 16. 3.4 Borrar Vistas Pg. 17.

    4 CREACION Y USO DE INDICES Pg. 17.

    4.1 Creacin de ndices Pg. 18. 4.2 Lista de ndices Pg. 18. 4.3 Borrar ndices Pg. 18.

    5 Bibliografa Pg. 18.

  • INTRODUCCION

    1 - CREACION Y USO DE CONSTRAINTS

    El servidor de Oracle utiliza constraints para prevenir el registro de datos no vlidos a las tablas. Se pueden utilizar los constraints para lo siguiente:

    Implementar o imponer reglas en los datos de una tabla cuando una fila es insertada, modificada o borrada de la tabla. El constraint se debe cumplir para que la operacin se realice.

    Previene la eliminacin de una tabla si existen dependencias con otras.

    Proporciona reglas para herramientas de Oracle, como Oracle

    Developer.

    Las reglas de negocio se implementan en ORACLE mediante restricciones (constraints), disparadores (triggers) o cdigo de aplicacin.

    Cliente

    RucDniCte

    Direccion

    Email

    Telefono1

    RazonsocNombre

    Telefono2

    Producto

    Codproducto

    Descripcion

    Stockminimo

    Stockactual

    Marca

    PrecioCompra

    PrecioVenta

    FechaVencimiento

    Presentacion

    CategoriaID (FK)

    Proveedor

    RucDniProvee

    RazonSocial

    Fax

    Direccion

    Telefono1

    Email

    CuentaProveedor

    Telefono2

    DetalleCompra

    NroCompra (FK)

    CodProducto (FK)

    Cantidad

    PrecioCompra

    Descuento

    Descripcion

    Compra

    NroCompra

    FechaCompra

    TipoDocumento

    RucDniProvee (FK)

    NroDocumento

    FechaPago

    Estado

    Igv

    Venta

    NroVenta

    FechaVenta

    IdUsuario (FK)

    Saldo

    FechaPago

    Ususario

    IdUsuario

    Nombre

    ApPaterno

    ApMaterno

    Password

    Telefono

    Email

    Direccion

    Boleta

    NroBoleta

    FechaEmision

    Igv

    MontoTotal

    NroVenta (FK)

    Estado

    FechaPago

    RucDniCte (FK)

    DetalleBoleta

    NroBoleta (FK)

    CodProducto (FK)

    Cantidad

    Precio

    SubMonto

    Descripcion

    Descuento

    OrdenCompra

    NroOrden

    FechaEmision

    FechaRecibo

    RucDniProvee (FK)

    DetalleOrdenCompra

    NroOrden (FK)

    CodProducto (FK)

    CantidadPedida

    Descripcion

    CantidadRecibida

    OrdenSalida

    NroOrdenSalida

    FechaVenta

    FechaSalida

    EstadoEntrega

    RucDniCte (FK)

    DetalleOrdenSalida

    Codproducto (FK)

    NroOrdenSalida (FK)

    Descripcion

    Cantidad

    Categoria

    CategoriaID

    NombreCategora

    Ubicacin

  • 1 .1 Tipos de Constraints

    1 .2 Reglas en el uso de constraints Todos los constraints son almacenados en el diccionario de datos. Los Constraints son fciles de referenciar si les proporcionas un nombre adecuado. Los constraints deben seguir el estndar para nombrar objetos. Si t no especificas un nombre para tu constraint, el servidor de Oracle genera un nombre con el siguiente formato SYS_Cn, donde n es un entero que identifica el nombre del constraint como nico. Los constraints pueden ser definidos al mismo tiempo que se crea una tabla o despus de que la tabla ha sido creada. Se pueden ver los constraints definidos para una tabla especfica en la tabla USER_CONSTRAINTS del diccionario de datos.

  • 1 .3 Definiendo constraints En la imagen anterior se muestra la sintaxis para definir constraints en la creacin de una tabla.

    Los constraints son usualmente creados al mismo tiempo que la tabla, pero pueden ser aadidos despus de la creacin de la misma y tambin pueden ser deshabilitados temporalmente. Los constraints pueden estar definidos en uno de dos niveles que son:

    1.3.1 CONSTRAINT NOT NULL El constraint NOT NULL se asegura de que las columnas no contengan valores nulos. Las columnas sin un constraint NOT NULL pueden contener valores nulos por defecto. El constraint NOT NULL puede ser especificado solamente a nivel de columnas y no a nivel de tabla. En el ejemplo anterior se aplica un constraint NOT NULL a las columnas LAST_NAME y HIRE_DATE de la tabla EMPLOYEES. Debido a que esos constraints no tienen nombre, el servidor de Oracle crea nombres para ellos.

  • En este ejemplo utilizamos en constraint NOT NULL, en el instante que creamos nuestra tabla Sindicato. CREATE TABLE SINDICATO( IdSindicato Char(4)NOT NULL, NomSIndicato Varchar2(40)NOT NULL, TipoGestion Varchar(35)); Otro tipo de implementacin del constraint NOT NULL, es modificando la tabla que ha sido creada anteriormente. describe categoria; Name Null Type ---------------------------------------------------------------------------------------- CATEGORIAID NOT NULL CHAR(18) UBICACIN CHAR(18) NOMBRECATEGORA CHAR(18) Modificamos la restriccin de la tabla. ALTER TABLE CATEGORIA MODIFY(UBICACIN NOT NULL); CATEGORIAID NOT NULL CHAR(18) UBICACIN NOT NULL CHAR(18) NOMBRECATEGORA CHAR(18) Insertamos valores a nuestra tabla. INSERT INTO CATEGORIA VALUES ('AL12', ,'ALIMENTOS'); ERROR: Error starting at line 1 in command: INSERT INTO CATEGORIA VALUES ('AL12',,'ALIMENTOS') Error at Command Line:2 Column:15 Error report: SQL Error: ORA-00936: falta una expresin 00936. 00000 - "missing expression" *Cause: *Action: 1.3.2 CONSTRAINT UNIQUE Un constraint UNIQUE requiere que todos los valores en una columna o conjunto de columnas sean nicos esto es, dos filas de una tabla no pueden tener valores duplicados en la columna o conjunto de columnas especificadas. La columna o conjunto de columnas incluida en la definicin del constraint UNIQUE es llamada llave nica (unique key).

  • Si el constraint UNIQUE comprende ms de una columna, el grupo de columnas es llamado llave nica compuesta (composite unique key). Los constraints UNIQUE permiten el uso de valores nulos siempre y cuando no se hayan definido constraints NOT NULL para las mismas columnas. De hecho, cualquier nmero de filas puede incluir nulos para las columnas sin constraints NOT NULL puesto que los valores nulos no son iguales a nada. Un valor nulo en una columna (o en todas las columnas de una llave nica compuesta) siempre satisface un constraint UNIQUE. Un constraint UNIQUE puede ser definido a nivel de columna o tabla. Una llave nica compuesta es creada usando el nivel de definicin de tabla.

    DESCRIBE CLIENTE; Name Null Type -------------------------------------------------------------------------------- RUCDNICTE NOT NULL CHAR(18) DIRECCION CHAR(18) EMAIL CHAR(18) TELEFONO1 CHAR(18) RAZONSOCNOMBRE CHAR(18) TELEFONO2 CHAR(18)

  • En este caso realizamos dos restricciones UNIQUE a los campos de Email y RazonSocial. ALTER TABLE CLIENTE MODIFY (CONSTRAINT UNMAIL UNIQUE(EMAIL)) Insertamos algunas filas a nuestra tabla. INSERT INTO CLIENTE VALUES('43918908','LOSALIZOS 212','[email protected]','8762412','Armando Zamora','976457238'); 1 rows inserted INSERT INTO CLIENTE VALUES('439874232','EL SOL #212','[email protected]','9878712','Armando Sanchez','976897638'); ERROR: Error starting at line 1 in command: INSERT INTO CLIENTE VALUES('439874232','EL SOL #212','[email protected]','9878712','Armando Sanchez','976897638') Error report: SQL Error: ORA-00001: restriccin nica (SYSTEM.XPKCLIENTE) violada 00001. 00000 - "unique constraint (%s.%s) violated" *Cause: An UPDATE or INSERT statement attempted to insert a duplicate key. For Trusted Oracle configured in DBMS MAC mode, you may see this message if a duplicate entry exists at a different level. *Action: Either remove the unique restriction or do not insert the key. 1.3.3 CONSTRAINT PRIMARY KEY Un constraint PRIMARY KEY crea una llave primaria para la tabla. Solo una llave primaria puede ser creada por cada tabla. El constraint PRIMARY KEY es una columna o conjunto de columnas que identifica de forma nica cada fila de una tabla. Estos constraints obligan valores nicos para la columna o combinacin de columnas y aseguran que estas columnas no puedan contener valores nulos. Los constraints PRIMARY KEY pueden ser definidos a nivel de columna o a nivel de tabla. Una llave primaria compuesta es creada usando la definicin a nivel de tabla. Una tabla puede tener solo un constraint PRIMARY KEY pero puede tener diversos constraints UNIQUE. CREATE TABLE FACTURA( NroFactura NUMBER(5), fechaEmision DATE,

  • MontoTotal INTEGER, Igv DECIMAL, CONSTRAINT IDFAC PRIMARY KEY(NroFactura) ); DESCRIBE FACTURA; Name Null Type ----------------------------------------------------------------------------------------------- NROFACTURA NOT NULL NUMBER(5) FECHAEMISION DATE MONTOTOTAL NUMBER(38) IGV NUMBER En el ejemplo anterior se define un constraint PRIMARY KEY en la columna NroFactura de la tabla FACTURA, el nombre del constraint es IDFACT. Insertamos valores a nuestra tabla. INSERT INTO FACTURA VALUES (012,'12/11/2008',1600,13); INSERT INTO FACTURA VALUES (012,'12/11/2008',1600,12) ERROR: SQL Error: ORA-00001: restriccin nica (SYSTEM.IDFAC) violada 00001. 00000 - "unique constraint (%s.%s) violated" *Cause: An UPDATE or INSERT statement attempted to insert a duplicate key. For Trusted Oracle configured in DBMS MAC mode, you may see this message if a duplicate entry exists at a different level. *Action: Either remove the unique restriction or do not insert the key.

  • 1.3.4 CONSTRAINT FOREIGN KEY Un Foreign Key o llave fornea, es un constraint de integridad referencial que designa a una columna o combinacin de columnas como una llave fornea estableciendo una relacin entre una llave primaria o llave nica en la misma tabla o en una tabla diferente. En el ejemplo anterior, DEPARTAMENT_ID est definida como llave fornea en la tabla EMPLOYEES (tabla dependiente o hija); esta referencia de la columna DEPARTMENT_ID de la tabla DEPARTMENTS es la tabla referenciada o tabla padre. Un valor de llave fornea debe corresponder con un valor existente en la tabla padre o ser nulo. Las llaves forneas estn basadas en los valores de los datos y su lgica pura, no fsica o apuntadores.

    En el ejemplo anterior se define un constraint FOREIGN KEY en la columna DEPARTMENT_ID de la tabla EMPLOYEES, utilizando la sintaxis a nivel de tabla. El nombre del constraint es EMP_DEPTID_FK, La llave fornea tambin puede ser definida a nivel de columna, puesto que el constraint est basado en una columna. La sintaxis difiere puesto que la palabra reservada FOREIGN KEY no aparece, por ejemplo:

    La llave fornea est definida en la tabla hija, y la tabla conteniendo la columna referenciada es la tabla padre. La llave fornea es definida al utilizar una combinacin de las siguientes palabras reservadas:

    FOREIGN KEY es usada para definir la columna en la tabla hija como un constraint a nivel tabla.

    REFERENCES identifica la tabla y columna en la tabla padre.

  • ON DELETE CASCADE indica que cuando la fila en la tabla padre es eliminada, las filas dependientes en la tabla hija pueden ser eliminadas.

    ON DELETE SET NULL convierte los valores de las llaves forneas a nulos cuando el valor del padre es removido.

    El comportamiento por defecto es llamado regla de restriccin, cuando prohibimos la actualizacin o eliminacin de un dato referenciado. Sin las opciones DELETE CASCADE o ON DELETE SET NULL, las filas en la tabla padre no pueden ser eliminadas si estas son referenciadas en la tabla hija.

    1.3.5 CONSTRAINT CHECK El constraint CHECK define una condicin que para cada fila debe satisfacerse. La condicin puede utilizarse de manera similar a las condiciones de una consulta, con las siguientes excepciones:

    Las referencias a columnas CURRVAL, NEXTVAL, LEVEL y ROWNUM

    Llamadas a funciones SYSDATE, UID, USER y USERENV Consultas que hagan referencia a valores en otras filas de la

    misma tabla Una columna puede tener mltiples constraints CHECK las cuales pueden referenciarse en la definicin de la columna. No se tienen lmites en el nmero de constraints CHECK cuando se define una columna.

    1 .4 Manipulacin de Constraints

  • 1.4.1 AADIENDO UN CONSTRAINT

    Se pueden aadir constraints a tablas existentes con el uso de la sentencia ALTER TABLE y la clusula ADD. Sintaxis:

    table es el nombre de la tabla constraint es el nombre del constraint type es el tipo de constraint column es el nombre de la columna afectada por el constraint

    En la sintaxis el nombre del constraint es opcional, aunque es recomendado. Si no se le especifica un nombre al constraint, el sistema genera uno. Normas a seguir

    Se puede aadir, eliminar, habilitar o deshabilitar un constraint, pero no se puede modificar su estructura.

    Se puede aadir un constraint NOT NULL a una columna existente con el uso de la clusula MODIFY de la sentencia ALTER TABLE.

    En el ejemplo anterior se crea un constraint FOREIGN KEY en la tabla EMPLOYEES. El constraint asegura que un jefe exista como un empleado vlido en la tabla EMPLOYEES. 1.4.2 ELIMINANDO UN CONSTRAINT Para eliminar un constraint, se puede identificar el nombre del constraint desde las vistas del diccionario de datos SER_CONSTRAINTS y USER_CONS_COLUMNS. Entonces se usa la sentencia ALTER TABLE con la clusula DROP. La opcin CASCADE de la clusula DROP ocasiona que todos los constraints dependientes sean borrados. Sintaxis:

  • Ejemplo:

    1.4.3 DESHABILITANDO UN CONSTRAINT Se puede deshabilitar un constraint sin eliminarlo o recrearlo con el uso de la sentencia ALTER TABLE y la clusula DISABLE. Sintaxis

    Normas a seguir:

    Se puede usar la clusula DISABLE en las sentencias CREATE TABLE y ALTER TABLE.

    La clusula CASCADE deshabilita las dependencias de los constraints de integridad.

    Deshabilitar un constraint nico o llave primaria, elimina el ndice nico.

    Ejemplo:

    1.4.4 HABILITANDO UN CONSTRAINT Se puede habilitar un constraint sin eliminarlo o recrearlo utilizando la sentencia ALTER TABLE con la clusula ENABLE. Sintaxis:

    Donde:

    table es el nombre de la tabla. constraint es el nombre del constraint.

    Normas a seguir: Si se habilita un constraint, este aplica a todos los datos de la

    tabla. Todos los datos de la tabla deben satisfacer el constraint.

  • Si se habilita un constraint PRIMARY KEY o UNIQUE key, se crea un ndice nico o de llave primaria automticamente.

    Se puede usar la clusula ENABLE en las sentencias CREATE TABLE y ALTER TABLE.

    Habilitar un constraint de llave primaria que ha sido deshabilitado con la opcin CASCADE no habilita ninguna llave fornea dependiente de la llave primaria.

    Ejemplo:

    2 CREACION Y USO DE SECUENCIAS Una secuencia sirve para generar automticamente nmeros distintos. Se utilizan para generar valores para campos que se utilizan como clave forzada (claves cuyo valor no interesa, slo sirven para identificar los registros de una tabla). Es una rutina interna de Oracle la que realiza la funcin de generar un nmero distinto cada vez. Las secuencias se almacenan independientemente de la tabla, por lo que la misma secuencia se puede utilizar para diversas tablas. 2.1 Creacin de Secuencias

    Donde:

    a) Secuencia. Es el nombre que se le da al objeto de secuencia b) INCREMENT BY. Indica cunto se incrementa la secuencia cada

    vez que se usa. Por defecto se incrementa de uno en uno c) START WITH. Indica el valor inicial de la secuencia (por defecto 1) d) MAXVALUE. Mximo valor que puede tomar la secuencia. Si no

    se toma e) NOMAXVALUE que permite llegar hasta el 1027 f) MINVALUE. Mnimo valor que puede tomar la secuencia. Por

    defecto -1026. g) CYCLE. Hace que la secuencia vuelva a empezar si se ha llegado al mximo valor.

    Ejemplo:

  • CREATE SEQUENCE Sec_Numeros START WITH 5 INCREMENT BY 2 MAXVALUE 100 MINVALUE 5 En la primera ejecucin obtenemos: SELECT Sec_Numeros.NEXTVAL FROM DUAL; NEXTVAL ---------------------- 5 En la segunda ejecucin obtenemos: SELECT Sec_Numeros.NEXTVAL FROM DUAL; NEXTVAL ---------------------- 7 LA Ejecucion del comando CURRVAL nos retorna siempre el valor actual de la secuecia SELECT Sec_Numeros.CURRVAL FROM DUAL; CURRVAL ---------------------- 7 2.2 Ver Lista de Secuencias La vista del diccionario de datos USER_SEQUENCES muestra la lista de secuencias actuales. La columna LAST_NUMBER muestra cual ser el siguiente nmero de secuencia disponible. 2.3 Uso de la Secuencia Los mtodos NEXTVAL y CURRVAL se utilizan para obtener el siguiente nmero y el valor actual de la secuencia respectivamente. Ejemplo : SELECT Sec_Numeros.NEXTVAL FROM DUAL; Eso muestra en pantalla el siguiente valor de la secuencia. Realmente NEXTVAL incrementa la secuencia y devuelve el valor actual. CURRVAL

  • devuelve el valor de la secuencia, pero sin incrementar la misma. Ambas funciones pueden ser utilizadas en:

    a) Una consulta SELECT que no lleve DISTINCT, ni grupos, ni sea parte de una vista, ni sea subconsulta de otro SELECT, UPDATE o DELETE.

    b) Una subconsulta SELECT en una instruccin INSERT. c) La clusula VALUES de la instruccin INSERT. d) La clusula SET de la instruccin UPDATE.

    No se puede utilizar (y siempre hay tentaciones para ello) como valor para la clusula DEFAULT de un campo de tabla. Su uso ms habitual es como apoyo al comando INSERT:

    2.3 Modificar Secuencias Se pueden modificar las secuencias, pero la modificacin slo puede afectar a los futuros valores de la secuencia, no a los ya utilizados. Sintaxis:

    2.4 Borrar Secuencias Lo hace el comando DROP SEQUENCE seguido del nombre de la secuencia a borrar. 3 CREACION Y USO DE VISTAS. Una vista no es ms que una consulta almacenada a fin de utilizarla tantas veces como se desee. Una vista no contiene datos sino la instruccin SELECT necesaria para crear la vista, eso asegura que los datos sean coherentes al utilizar los datos almacenados en las tablas. Las vistas se emplean para:

    Realizar consultas complejas ms fcilmente Proporcionar tablas con datos completos Utilizar visiones especiales de los datos

    Hay dos tipos de vistas: 1. SIMPLES. Las forman una sola tabla y no contienen funciones de

    agrupacin. Su ventaja es que permiten siempre realizar operaciones DML sobre ellas.

    2. COMPLEJAS. Obtienen datos de varias tablas, pueden utilizar funciones de agrupacin. No siempre permiten operaciones DML.

  • 3 .1 Creacin De Vistas

    a) OR REPLACE. Si la vista ya exista, la cambia por la actual. b) FORCE. Crea la vista aunque los datos de la consulta SELECT no

    existan. c) Vista. Nombre que se le da a la vista. d) Alias. Lista de alias que se establecen para las columnas

    devueltas por la consulta. e) Select en la que se basa esta vista. El nmero de alias debe

    coincidir con el nmero de columnas devueltas por SELECT. f) WITH CHECK OPTION. Hace que slo las filas que se muestran

    en la vista puedan ser aadidas (INSERT) o modificadas (UPDATE). La restriccin que sigue a esta seccin es el nombre que se le da a esta restriccin de tipo Check Option.

    g) WITH READ ONLY. Hace que la vista sea de slo lectura. Permite grabar un nombre para esta restriccin.

    Lo bueno de las vistas es que tras su creacin se utilizan como si fueran una tabla. Ejemplo:

  • La creacin de la vista del ejemplo es compleja ya que hay relaciones complicadas, pero una vez creada la vista, se le pueden hacer consultas como si se tratara de una tabla normal. Incluso se puede utilizar el comando DESCRIBE sobre la vista para mostrar la estructura de los campos que forman la vista. 3.2 Ejecucin de comandos DML sobre Vistas Las instrucciones DML ejecutadas sobre las vistas permiten aadir o modificar los datos de las tablas relacionados con las filas de la vista. Ahora bien, no es posible ejecutar instrucciones DML sobre vistas que:

    Utilicen funciones de grupo (SUM, AVG,...) Usen GROUP BY o DISTINCT Posean columnas con clculos (PRECIO * 1.16)

    Adems no se pueden aadir datos a una vista si en las tablas referencias en la consulta SELECT hay campos NOT NULL que no aparecen en la consulta (es lgico ya que al aadir el dato se tendra que aadir el registro colocando el valor NULL en el campo). Ejemplo (Sobre la vista anterior):

    3.3 Mostrar la lista de Vistas La vista del diccionario de datos USER_VIEWS permite mostrar una lista de todas las vistas que posee el usuario actual. Es decir, para saber qu vistas hay disponibles se usa:

    3.4 Borrar Vistas Se utiliza el comando DROP VIEW:

    4 - CREACION Y USO DE INDICES Los ndices son esquemas que hacen que Oracle acelere las operaciones de consulta y ordenacin sobre los campos a los que el ndice hace referencia. Se almacenan aparte de la tabla a la que hace referencia, lo que permite crearles y borrarles en cualquier momento. Lo que realizan es una lista ordenada por la que Oracle puede acceder para facilitar la bsqueda de los datos. Cada vez que se aade un nuevo registro, los ndices involucrados se actualizan a fin de que su informacin est al da. De ah que cuantos ms ndices haya, ms le

  • cuesta a Oracle aadir registros, pero ms rpidas se realizan las instrucciones de consulta. La mayora de los ndices se crean de manera implcita, como consecuencia de las restricciones PRIMARY KEY (que obliga a crear un ndice nico sobre los campos clave) ,UNIQUE (crea tambin un ndice nico) y FOREIGN KEY (crea un ndice con posibilidad de repetir valores, ndice con duplicados). Estos son ndices obligatorios, por los que les crea el propio Oracle. 4.1 Creacin de ndices

    Aparte de los ndices obligatorios comentados anteriormente, se pueden crear ndices de forma explcita. stos se crean para aquellos campos sobre los cuales se realizarn bsquedas e instrucciones de ordenacin frecuente. Sintaxis:

    El ejemplo crea un ndice para los campos apellido1, apellido2 y nombre. Esto no es lo mismo que crear un ndice para cada campo, este ndice es efectivo cuando se buscan u ordenan clientes usando los tres campos (apellido1, apellido2, nombre) a la vez. Se aconseja crear ndices en campos que:

    a) Contengan una gran cantidad de valores. b) Contengan una gran cantidad de nulos. c) Son parte habitual de clusulas WHERE, GROUP BY u ORDER

    BY. d) Son parte de listados de consultas de grandes tablas sobre las

    que casi siempre se muestran como mucho un 4% de su contenido.

    No se aconseja en campos que: a) Pertenezcan a tablas pequeas. b) No se usan a menudo en las consultas. c) Pertenecen a tablas cuyas consultas muestran ms de un 6% del

    total de registros. d) Pertenecen a tablas que se actualizan frecuentemente. e) Se utilizan en expresiones.

    Los ndices se pueden crear utilizando expresiones complejas:

  • Esos ndices tienen sentido si en las consultas se utilizan exactamente esas expresiones. 4.2 Lista de ndices Para ver la lista de ndices se utiliza la vista USER_INDEXES. Mientras que la vista USER_IND_COLUMNS Muestra la lista de columnas que son utilizadas por ndices. 4.3 Borrar ndices La instruccin DROP INDEX seguida del nombre del ndice permite eliminar el ndice en cuestin. 5 BIBLIOGRAFIA

    a) http://alarcos.inf-cr.uclm.es/doc/bda/doc/lab/BDa-p2.pdf

    b) http://blearning.itmina.edu.mx/dep/sada/Ingenieria%20en%20Sistemas%20Computacionales/5to%20Semestre/Taller%20de%20Base%20de%20Datos/taller_bd/sqlprocedual.pdf

    c) http://www.itescam.edu.mx/principal/sylabus/fpdb/recursos/r

    23532.PDF

    d) http://www.jorgesanchez.net/bd/oracleSQL.pdf

    e) http://www.aposada.net/downloads/documentos/bd/Plus%20b%C3%A1sico.PDF

    f) http://leebyte.iespana.es/cursos/bd/oracle%20curso%206%20lecciones.pdf