Sunteți pe pagina 1din 6

INSTITUTO TECNOLGICO DE

IGUALA
Materia:
Administracin de Base de Datos
Catedrtico:
Jos Luis Zagal Arce
Alumno:
Asael Romn Molina
- Qu es una bitcora?
- Tipos de ndices

Que es una Bitcora


La estructura es ampliamente usada para grabar las modificaciones de la base de
datos es la Bitcora, herramienta que permite registrar, analizar detectar y notificar
eventos que suceden en cualquier sistemas de informacin utilizado en las
organizaciones. La estructura ms ampliamente usada para grabar las modificaciones
de la BD.
Funciones
La importancia de las bitcoras es la de recuperar informacin ante incidentes de
seguridad, deteccin de comportamiento inusual, informacin para resolver problemas,
evidencia legal, es de gran ayuda en las tareas de cmputo forense.
Cada registro de la bitcora escribe una nica escritura de base de datos y tiene lo
siguiente:
Nombre de la transaccin: Nombre de la transaccin que realiz la operacin de
escritura.
Nombre del dato: El nombre nico del dato escrito.
Valor antiguo: El valor del dato antes de la escritura.
Valor nuevo: El valor que tendr el dato despus de la escritura.

Es fundamental que siempre se cree un registro en la bitcora cuando se realice una


escritura antes de que se modifique la base de datos.
Tambin tenemos la posibilidad de deshacer una modificacin que ya se ha escrito en
la base de datos, esto se realizar usando el campo del valor antiguo de los registros
de la bitcora.
Los registros de la bitcora deben residir en memoria estable como resultado el
volumen de datos en la bitcora puede ser exageradamente grande.
Una bitcora puede registrar mucha informacin acerca de eventos relacionados con el
sistema que la genera los cuales pueden ser:
Fecha y hora.
Host
Usuario
Actividad Realizada

Tipos de ndices
Un ndice (o KEY, o INDEX) es un grupo de datos que MySQL asocia con una o varias
columnas de la tabla. En este grupo de datos aparece la relacin entre el contenido y el
nmero de fila donde est ubicado.
Los ndices -como los ndices de los libros- sirven para agilizar las consultas a las
tablas, evitando que mysql tenga que revisar todos los datos disponibles para devolver
el resultado.
ndices de clave primaria
Una clave primaria es un ndice sobre uno o ms campos donde cada valor es nico y
ninguno de los valores son NULL.
Para crear un ndice de clave primaria tenemos bsicamente dos opciones:
1. Crear el ndice de clave primaria al momento de crear la tabla. En este caso se usa
la opcin PRIMARY KEY al final de la definicin de los campos, con una lista de los
campos que sern parte del ndice.
CREATE TABLE nombreTabla(campo1 tipoDato,
[campo2...,] PRIMARY KEY (campo1 [,campo2...]) );
2. Crear una clave primaria en una tabla existente con el uso del comando ALTER
TABLE:
ALTER TABLE nombreTabla ADD PRIMARY KEY(campo1 [,campo2...]);
Por ejemplo, suponiendo que ya tenemos en nuestro sistema una tabla que fue creada
de la siguiente manera (sin clave primaria, y con el campo id aceptando valores NUL):
CREATE TABLE usuarios(id int, nombre varchar(50), apellidos varchar(70));
Podemos crear una clave primaria sobre el campo id con esta sentencia:
ALTER TABLE usuarios MODIFY id INT NOT NULL, ADD PRIMARY KEY(id);
Para observar los cambios que hemos hecho, podemos examinar las columnas de la
tabla usuarios con una sentencia DESCRIBE:
mysql> DESCRIBE usuarios;
+-----------+-------------+------+-----+---------+-------+
| Field
| Type
| Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+-------+
| id
| int(11)
|
| PRI | 0
|
|
| nombre
| varchar(50) | YES |
| NULL
|
|
| apellidos | varchar(70) | YES |
| NULL
|
|
+-----------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

El campo id no tiene un valor YES en la columna Null, lo que indica que este campo ya
no podr almacenar valores nulos. Se puede observar tambin que se tiene un valor
PRI en la columna Key, lo que indica que este campo es una clave primaria.
Las claves primarias pueden constar de ms de un campo. Hay algunas veces en las
que un solo campo no puede identificar de manera nica a un registro.
ndices ordinarios
Un ndice que no es primario permite valores duplicados (a menos que los campos
hayan sido especificados como UNIQUE).
Para crear un ndice ordinario tenemos bsicamente dos opciones:
1. Podemos crear un ndice ordinario al mismo tiempo que creamos la tabla con el
uso de la opcin INDEX.
CREATE TABLE nombreTabla(campo1
[nombreIndice] (campo1 [,campo2...]));

tipoDato,

campo2

tipoDato,..

INDEX

2. De igual manera, podemos crear el ndice con el uso de la sentencia ALTER TABLE
si es que la tabla ya existe.
ALTER TABLE nombreTabla ADD INDEX [nombreIndice] (campo1 [,campo2...]);
Tambin es posible usar la sentencia CREATE INDEX para crear un ndice en una tabla
existente.
CREATE INDEX nombreIndice ON nombreTabla(campo1 [,campo2...]);
Ambas sentencias piden el nombre del ndice, sin embargo con la sentencia CREATE
INDEX el nombre es obligatorio.
ndices de texto completo
Los ndices de texto completo son del tipo FULLTEXT, se usan en tablas del
tipo MyISAM, y pueden contener uno o ms campos del tipo CHAR,
VARCHAR y TEXT. Un ndice de texto completo est diseado para facilitar y
optimizar la bsqueda de palabras clave en tablas que tienen grandes
cantidades de informacin en campos de texto.
Para crear un ndice de texto completo tenemos bsicamente dos opciones:
1.
Crear
el
ndice
al
momento
de
crear
la
tabla.
CREATE
TABLE
nombreTabla(
campo1
TIPO,
campo2
TIPO,
FULLTEXT [nombreIndice] (campo1 [campo2,...]) );
2. Crear el ndice una
ALTER TABLE nombreTabla
[,campo2,...]);

vez
ADD

que ha
FULTEXT

sido creada la tabla.


[nombreIndice] (campo1

La siguiente sentencia tambin se puede usar para crear un ndice cuando la


tabla ya existe.
CREATE
FULLTEXT
INDEX
nombreIndice
ON
nombreTabla(campo1
[,campo2,...]);
UNICAMENTE para fines ilustrativos, consideremos la siguiente definicin de
tabla:
ndices nicos
Los ndices nicos son bsicamente como los ndices ordinarios, excepto que
los valores duplicados no son permitidos.
Para crear un ndice UNIQUE se tienen bsicamente dos opciones:
1. Crear un ndice nico cuando la tabla es creada con el uso de la opcin
UNIQUE.
CREATE TABLE nombreTabla(campo1 tipoDato, campo2 tipoDato,..
UNIQUE [nombreIndice] (campo1 [,campo2...]));
2. O bien, si la tabla ya existe, se usa la sentencia ALTER TABLE.
ALTER TABLE nombreTabla ADD UNIQUE [nombreIndice] (campo1,
campo2) ...
CREATE TABLE usuarios(id int, nombre varchar(50), apellidos
varchar(70));
ALTER TABLE usuarios ADD UNIQUE idx_nombre (nombre);
CREATE UNIQUE INDEX idx_apellidos ON usuarios(apellidos);
En el primer caso hacemos uso del comando ALTER TABLE, y en el segundo
caso
creamos
el
ndice
con
la
sentencia
CREATE
INDEX.
ndices compuestos
Los ndices compuestos son simplemente aquellos que estn basados en
mltiples columnas. MySQL nicamente usa un ndice por tabla cuando est
procesando una consulta. Esto significa que si tenemos varias columnas que
frecuentemente aparecen juntas en una clusula WHERE, tenemos la
oportunidad de acelerar estas consultas al crear un ndice compuesto.
Si una tabla tiene un ndice formado por mltiples columnas, cualquier
prefijo ms a la izquierda puede ser usado por el optimizador de consultas
de MySQL para encontrar las filas. Por ejemplo, si tenemos un ndice
compuesto por tres columnas (col1, col2, col3), tendramos capacidades de
bsqueda en (col1), (col1, col2) y (col1, col2, col3).

MySQL no puede usar un ndice parcial si las columnas no forman un prefijo


ms a la izquierda del ndice. Supongamos que tenemos unas sentencias
SELECT como estas:
mysql> SELECT * FROM algunaTabla WHERE col1=valor1;
mysql> SELECT * FROM algunaTabla WHERE col2=valor2;
mysql> SELECT * FROM algunaTabla WHERE col2=valor2 AND
col3=valor3;
Si el ndice existe en (col1, col2, col3), slo la primera de estas consultas
usar el ndice. La segunda y la tercera involucran a las columnas en el
ndice, pero (col2) y (col2, col3) no son los prefijos ms a la izquierda de
(col1,
col2,
col3).
Debido a la forma en que MySQL construye los ndices compuestos, ste
puede usar el ndice idx_nombre para resolver consultas basadas slo en el
nombre, o en el nombre y los apellidos, sin embargo, no usar el ndice en
una consulta que haga referencia nicamente a la columna apellidos.
La idea es que los ndices compuestos pueden usarse frecuentemente para
acelerar algunas consultas complejas, pero necesitamos entender sus
limitaciones y debemos ejecutar algn tipo de prueba en vez de asumir que
estos ndices siempre nos van a ayudar.
ndices de parte de campos
En las columnas CHAR y VARCHAR se nos permite crear un ndice que no use
el campo por completo. Retomemos el ejemplo anterior de la tabla usuarios.
A pesar de que el nombre de una persona puede ser de hasta 50 caracteres,
es muy comn que los nombres de las personas sean diferentes en los
primeros 10 caracteres. Al usar un ndice de 10 caracteres en lugar de 50, el
ndice ser ms pequeo, y permitir que las consultas INSERT y UPDATE
sean ms rpidas, a la vez que no se afecta la velocidad de las consultas
SELECT.
Para crear un ndice como parte de un campo, slo se tiene que especificar
el tamao entre parntesis despus del nombre de la columna. Por ejemplo,
nuestro ndice idx_nombre pudo haber sido creado tambin de la siguiente
manera:
ALTER TABLE usuarios ADD INDEX idx_nombre(nombre(10), apellidos

S-ar putea să vă placă și