Академический Документы
Профессиональный Документы
Культура Документы
El ndice de una base de datos es una estructura de datos que mejora la velocidad de las
operaciones, permitiendo un rpido acceso a los registros de una tabla. Al aumentar
drsticamente la velocidad de acceso, se suelen usar sobre aquellos campos sobre los cuales se
vayan a realizar bsquedas frecuentes.
El ndice tiene un funcionamiento similar al ndice de un libro, guardando parejas de elementos:
el elemento que se desea indexar y su posicin en la base de datos. Para buscar un elemento
que est indexado, slo hay que buscar en el ndice de dicho elemento para, una vez
encontrado, devolver el registro que se encuentre en la posicin marcada por el ndice.
Los ndices pueden ser creados usando una o ms columnas, preparando la base de datos tanto
para bsquedas rpidas al azar como para ordenaciones eficientes de los registros.
Los ndices son construidos sobre rboles B, B+, B* o sobre una mezcla de ellos, funciones de
clculo u otros mtodos.
El espacio en disco requerido para almacenar el ndice es tpicamente menor que el espacio de
almacenamiento de la tabla (puesto que los ndices generalmente contienen solamente los
campos clave de acuerdo con los que la tabla ser ordenada, y excluyen el resto de los detalles
de la tabla), lo que da la posibilidad de almacenar en memoria los ndices de tablas que no
cabran en ella. En una base de datos relacional un ndice es una copia de parte de una tabla.
Cmo crear ndices en Oracle
Creacin de un ndice al crear una tabla de Oracle
Para crear un ndice en la creacin de una tabla de Oracle podemos utilizar SQL*Plus
(herramienta de lnea de comandos incluida con Oracle), se puede utilizar tambin Oracle
Enterprise Manager (modo grfico) o una aplicacin externa que permita acceso a Oracle, como
por ejemplo:
AjpdSoft Administracin Bases de Datos
Abriremos esta aplicacin e introduciremos los datos para la conexin (nombre de la base de
datos, nombre de usuario, contrasea, tipo de acceso):
Estamos indicando a Oracle que cree la tabla "facturacion", con el campo "codigo" y que ste
sea clave primaria, por lo que crear un ndice automticamente para este campo. Esta es una
forma de crear ndices, en la creacin de la tabla:
Puesto que hemos indicado que la columna "codigo" sea clave primaria, Oracle no permitir
valores duplicados para esta columna, esta comprobacin la realizar basndose en el ndice
creado. Si intentamos agregar un nuevo registro con con el valor de "codigo" a "1" (que ya
existe) nos mostrar este error:
bitmap indica que se cree un ndice de mapa de bits que permite crear ndices en
columnas con muy pocos valores diferentes.
unique indica que el valor de la o las columnas indexadas debe ser nico, no puede haber
duplicidades.
nombre_indice debe ser un nombre unvoco (no debe existir otro nombre de objeto en
Oracle) que siga los convenios de denominacin de Oracle para nombrar columnas.
reverse indica a Oracle que invierta los bytes del valor indexado, lo que puede mejorar la
distribucin del procesamiento y de los datos cuando se insertan muchos valores de datos
secuenciales.
Para crear un ndice en Oracle podemos utilizar SQL*Plus (herramienta de lnea de comandos
incluida con Oracle), se puede utilizar Oracle Enterprise Manager (modo grfico) o una aplicacin
externa que permita acceso a Oracle, como por ejemplo:
AjpdSoft Administracin Bases de Datos
Abriremos esta aplicacin e introduciremos los datos para la conexin (nombre de la base de
datos, nombre de usuario, contrasea, tipo de acceso):
'FACTURACION'
Para aadir un ndice de tipo UNIQUE, obligando a que los valores del campo indexado sean
unvocos, no se puedan repetir en el campo de la tabla, ejecutaremos la siguiente sentencia SQL:
De
esta
forma
ON DELETE CASCADE
El uso de una restriccin de integridad referencial es hacer cumplir que cada registro hijo tiene
un padre.
SQL> CREATE TABLE DEPT
2
(DEPTNO NUMBER PRIMARY KEY,
3
DNAME VARCHAR2(10)) ;
Table created.
SQL> CREATE TABLE EMP
2
(EMPNO NUMBER PRIMARY KEY,
3
ENAME VARCHAR2(10),
4
DEPTNO NUMBER
5
CONSTRAINT EMP_DEPT_FK
6
REFERENCES DEPT(deptno));
Table created.
SQL> INSERT INTO DEPT(deptno,dname) VALUES
2
(50,'CREDIT');
1 row created.
SQL> INSERT INTO EMP(EMPNO,ENAME,DEPTNO) VALUES
2
(9999,'JOEL',50);
1 row created.
SQL> COMMIT;
Commit complete.
SQL> DELETE DEPT WHERE DEPTNO=50;
DELETE DEPT WHERE DEPTNO=50
*
ERROR at line 1:
ORA-02292: integrity constraint (SCOTT.EMP_DEPT_FK) violated
- child record found
1 row deleted.
SQL> select * from emp where ename='JOEL';
no rows selected
Marc no tiene departamento, debido a que su departamento ha sido eliminado. Una vez ms,
no hay comentarios, sin previo aviso, sin error.
En lugar de mejorar la calidad de los datos, la ON DELETE SET NULL restriccin de clave
externa aqu columnas filas en silencio actualizados a NULL. Marc se preguntar por qu no
obtiene invitacin a las reuniones de departamento.
http://laurentschneider.com/wordpress/2007/08/on-delete-cascade.html