En una tabla podemos definir columnas con sus respectivos tipos de datos y valores predeterminados, claves primarias, claves ajenas, índices, triggers y estadísticas.
Existen dos tipos de tablas:
- Heap: sin índice Ordendado
- BTree: con índice Ordenado
Los índices son elementos de rendimiento cuyo objetivo es la agrupación de registros para la optimización de las búsquedas. Un índice Clúster se crea cuando:
- Explícitamente escribimos la instrucción CREATE CLUSTERD INDEX
- Por defecto cuando creamos una clave primaria
En los índices ordenados las filas de datos de las tablas están almacenadas físicamente en el orden que marca la clave del índice. Cada tabla sólo puede tener un índice ordenado y estos índices tienen todas las columnas de la tabla: el índice ordenado es la tabla, y si se deshabilita este índice ya no se puede acceder a la tabla.
Los índices no ordenados tienen solo un subconjunto de columnas y no tienen ningún efecto en el orden físico de las filas de datos. Cada vez que se hace un Insert, Update o Delete en una tabla todos los índices no ordenados se deben de actualizar.
El objetivo de las claves primarias y de las claves ajenas es mantener la consistencia y la integridad de la información. Hay que definir claves primarias y claves ajenas siempre.
Las estadísticas de columnas nos dan la distribución de los datos en las columnas de la tabla, su selectividad y su densidad. La selectividad es el porcentaje de unicidad. El Optimizador de consultas de SQL se basa en las estadísticas de los índices y columnas para calcular el coste de E/S y CPU y buscar el mejor plan de ejecución de la consulta.
Ejemplo: Creación de la tabla Conf_Articulos_Familias con sus clave primaria y ajena.
Con las siguientes instrucciones se genera la tabla con dos columnas, valores por defecto, clave primaria y clave ajena para comprobar la integridad del dato IdFamilia contra la tabla Articulos_Familias. Esta clave ajena se ha definido para que se realice un borrado en cascada de la tabla Conf_Articulos_Familias, cuando si se borra la familia de Articulos_Familias y actualizar en cascada si se modifica la familia de Articulos_Familias.
CREATE TABLE [dbo].[Conf_Articulos_Familias](
[IdFamilia] [dbo].[T_Id_Fami_Art] NOT NULL,
Descuento T_Precio NOT NULL CONSTRAINT [DF_Conf_Articulos_Familias_Descuento] DEFAULT ((0))
CONSTRAINT [PK_Conf_Articulos_Familias] PRIMARY KEY CLUSTERED ([IdFamilia] ASC)) ON [PRIMARY]
GO
ALTER TABLE [dbo].[Conf_Articulos_Familias] WITH CHECK ADD CONSTRAINT [FK_Conf_Articulos_Familias_IdFamilia] FOREIGN KEY(IdFamilia)
REFERENCES [dbo].Articulos_Familias (IdFamilia)
ON UPDATE CASCADE
ON DELETE CASCADE
GO
ALTER TABLE [dbo].Conf_Articulos_Familias CHECK CONSTRAINT [FK_Conf_Articulos_Familias_IdFamilia]
Conoce más sobre transact SQL consultado todo el material que tenemos publicado aquí
¿Le ha sido útil este artículo?
¡Qué bien!
Gracias por sus comentarios
¡Sentimos mucho no haber sido de ayuda!
Gracias por sus comentarios
Sus comentarios se han enviado
Agradecemos su esfuerzo e intentaremos corregir el artículo