Objetos de bases de datos. Tablas

Creado por David Miralpeix, Modificado el Fri, 16 Feb 2024 a las 12:24 PM por David Miralpeix

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í


<< Artículo anterior                                                                                                                                     Siguiente artículo  >>

¿Le ha sido útil este artículo?

¡Qué bien!

Gracias por sus comentarios

¡Sentimos mucho no haber sido de ayuda!

Gracias por sus comentarios

¡Háganos saber cómo podemos mejorar este artículo!

Seleccione al menos una de las razones
Se requiere la verificación del CAPTCHA.

Sus comentarios se han enviado

Agradecemos su esfuerzo e intentaremos corregir el artículo