Beruflich Dokumente
Kultur Dokumente
ndices
Son una estructura importante de datos en disco definidos por el usuario (adems de las tablas). Un ndice proporciona un acceso rpido a los datos cuando se puede buscar en los datos por el valor que es la clave del ndice. Los ndices se crean sobre ndices para acelerar el acceso a los datos. Puede marcar la diferencia entre una respuesta casi inmediata y una larga espera. El espacio que ocupa un ndice es directamente proporcional a la cantidad de registros en la tabla y al ancho de la clave del ndice. Antes de crear un ndice se debe realizar un balance que asegure que el incremento de performance por el aumento de las respuestas en la consultan justifica con creces la cada de rendimiento y la sobrecarga producida por la tarea de mantenimiento del ndice. Los ndices se crean en base a la secuencia de intercalacin seleccionada durante la instalacin del sistema y generalmente se crean en orden ascendente. Los ndices permiten las siguientes ventajas:
Fuerzan la unicidad de los identificadores de las filas (valores claves) Acelera las uniones (control de integridad referencial) Acelera el acceso a los datos Acelera a ORDER BY y a GROUP BY
ndices compuestos:
Especifican dos o ms columnas como parte del ndice Las columnas compuestas son tratadas como una unidad El orden de las columnas en la sentencia CREATE INDEX no tienen que ser el mismo orden que de la tabla
ndices nicos
Fuerzan la integridad referencial, a cada fila es asignada un valor nico. No se debe usar sobre una columna que tenga datos repetidos o redundantes
El orden fsico de las filas es el mismo que el orden indizado de las filas y el nivel inferior (hojas) del ndice agrupado contiene las filas actuales de datos. Como los ndices no agrupados se vuelven a generar cuando se crea un ndice agrupado, cree el ndice agrupado antes de crear los ndices no agrupados. Si no se especifica CLUSTERED, se crea un ndice no agrupado.
Especifica la ordenacin lgica de una tabla. Con un ndice no agrupado, el orden fsico de las filas no es el mismo que su orden indizado. El nivel hoja de un ndice no agrupado contiene las filas del ndice. Cada fila del ndice contiene el valor de clave no agrupada, y uno o varios localizadores de fila que apuntan a la fila que contiene dicho valor. Si la tabla no tiene un ndice agrupado, el localizador de fila es la direccin de disco de la fila. Si la tabla tiene un ndice agrupado, el localizador de fila es la clave del ndice agrupado de la fila. Adems se pueden tener varios ndices no agrupados en una tabla.
Rendimiento
El optimizador de consultas depende de columnas indexadas para que funcione. Se puede hacer muy poca optimizacin sin ndices tiles. En ciertos casos puede requerir un ndice la aplicacin front-end con la que se est trabajando.
Porqu no indexar una columna? Toma tiempo en el servidor Consume espacio en el disco Adicionalmente, la insercin, eliminacin y actualizacin de una columna indexada se hace mas larga
Integridad de datos
Este trmino se utiliza para referirse a la precisin, rectitud o validez de los datos en la base de datos:
Mantener
la integridad de la base de datos es muy importante, por obvias razones. Para mantener tal integridad es necesario controlar todas las operaciones de actualizacin (INSERTs, DELETEs y UPDATEs) para asegurar que sean vlidas.
Integridad de datos
Frecuentemente se confunde integridad con seguridad, pero en realidad ambos conceptos tienen ciertas caractersticas en comn. Se puede hacer una distincin entre ellas de la siguiente manera:
Seguridad: es la que se encarga de controlar de que los usuarios estn permitidos a hacer las cosas que estn tratando de hacer, por tanto, seguridad es proteger la base de datos contra usuarios no autorizados. Integridad: asegura de que las cosas que los usuarios estn tratando de hacer son correctas, por tanto, integridad es proteger la base de datos contra usuarios autorizados.
Implementacin de Defaults
Un default es un valor que SQL Server inserta en una columna si el usuario no ingresa un valor explcitamente. Generalmente los defaults se crean despus de que la tabla a sido creada. Los defaults aseguran que siempre exista un valor en una columna determinada. Por ejemplo, la fecha de emisin de una factura podra ser establecida como default si un usuario o una aplicacin frond-end no hace una entrada en este campo, SQL Server inserta automticamente la fecha actual. Si se especifica que un campo no acepta valores NULL y no especifica un default para esa columna, SQL Server enviar un mensaje de error cada vez que alguno de estos errores en esa columna.
Implementacin de Reglas
RULE o reglas son restriciones de integridad que van mas all de aquellas implicadas por el tipo de datos de una columna. Las reglas especifican el tipo de informacin que puede ser ingresada en una columna. Fuerzan a que los valores de una columna pertenezcan a un determinado rango, se adecuen a un patrn particular o pertenezca a una lista especfica de valores posibles. Esto se controla cada vez que se haga un INSERT o un UPDATE (los datos ingresados antes de la creacin de una regla no son verificados).
En el diseo lgico de una base datos se pueden establecer varias restricciones sobre una columna de una tabla. Estas restricciones permiten control ciertos aspectos de la integridad de datos al poner los requerimientos sobre los valores permitidos. No nulos (Not Null): es una restriccin que obliga una entrada a una columna. Null no es sinnimo de cero o en blanco No Duplicados(Not Duplicates): Esta restriccin permite prevenir el ingreso de valores duplicados en una columna que identifique unvocamente a una fila. No Cambios(Not Changes): Esto previene el cambio del valor de una columna. Se implementa con la utilizacin de restricciones de referencia, disparadores o permisos.
PK permite controlar la integridad de los datos que cada fila de la tabla sea nica. Toda tabla debe tener una cable primaria. Solo puede haber una clave primaria por tabla. El PK no debe permitir valores NULL o DUPLICATES. Se recomienda que tampoco se permita CHANGES. No es recomendable asignar DEFAULT a la columna(s) que conforma PRIMARY KEY o UNIQUE.
FK hace referencia a la clave primaria(PK) de una tabla. Puede ser la clave primaria de la misma tabla u otra tabla. Una columna puede ser tanto clave primaria para su propia tabla como clave fornea para otra tabla. SQL Server controla los valores de la columna marcada con FK, contra los valores de la columna PK para verificar que estos valores sean legtimos. Proporciona enlace entre dos tablas. Fuerza la integridad referencial asegurando de que cada valor en la columna FK sea una PK vlida.
Manos a la obra
Otros ejemplos
CREATE DEFAULT Ruc_Cliente AS 'NoSeSabe' CREATE DEFAULT Sueldo AS 100.0
Ejemplos: Crear un Default para la columna Fecha_Venta con la Fecha Actual EXEC sp_bindefault 'fecha_actual', Comprobante_Pago.fecha_emision
DROP DEFAULT {Nombre_default} [,n] DROP DEFAULT Ruc_Cliente
Desactivando un Constraint
ALTER TABLE ciudad NOCHECK CONSTRAINT CK_cod_ddn
Activando un Constraint
ALTER TABLE ciudad CHECK CONSTRAINT CK_cod_ddn
exec sp_helpindex empleado exec sp_help producto SELECT cod_articulo, total_duplicados =COUNT(*) FROM articulo GROUP BY cod_articulo HAVING COUNT(*)>1