9
SQL SERVER Gestión de Objetos Las páginas Mapa de asignación de índices (IAM, Index Allocation Map) asignan las extensiones de un archivo de la base de datos utilizadas por un montón o por un índice. Las páginas IAM también asignan las extensiones asingadas a la cadena de páginas ntext, text e image en cualquier tabla que disponga de columna de estos tipos. Cada uno de estos objetos dispone de una cadena de una o más páginas IAM que registran todas las extensiones asignadas al mismo. Cada objeto dispone de al menos una IAM para cada archivo del que tiene extensiones. Pueden tener más de una IAM en un archivo si el intervalo de extensiones del archivo asignadas al objeto supera el intervalo que una IAM puede registrar. Las páginas IAM se asignan cuando los objetos las necesitan y se ubican de forma aleatoria en el archivo; sysindexes.dbo.FirstIAM apunta a la primera página IAM de un objeto y todas las páginas IAM de dicho objeto están encadenadas. Una página IAM tiene un encabezado que indica la extensión inicial del intervalo de extensiones asignado por la IAM. La IAM también tiene un gran mapa de bits en el que cada bit representa una extensión. EL primer bit del mapa representa la primera extensión del intervalo, el segundo bit representa la segunda extensión, etc. Si un bit es 0, la extensión que representa no está asignada al objeto propietario de la IAM. Si el bit es 1, la extensión que representa está asignada al objeto propietario de la página IAM. Si Microsoft® SQL Server™ 2000 necesita insertar una fila nueva y no hay espacio disponible en la página actual, utiliza las páginas IAM y PFS para buscar una página con suficiente espacio para albergar la fila. SQL Server utiliza las páginas IAM para buscar las extensiones asignadas al objeto. Para cada extensión, SQL Server busca las páginas PFS para ver si hay alguna página con espacio disponible suficiente para almacenar la fila. Cada página IAM y PFS cubre un gran número de páginas de datos, de modo que en una base de datos hay pocas páginas IAM y PFS. Esto significa que

SQL SERVER

Embed Size (px)

Citation preview

Page 1: SQL SERVER

SQL SERVERGestión de Objetos

Las páginas Mapa de asignación de índices (IAM, Index Allocation Map) asignan las extensiones de un archivo de la base de datos utilizadas por un montón o por un índice. Las páginas IAM también asignan las extensiones asingadas a la cadena de páginas ntext, text e image en cualquier tabla que disponga de columna de estos tipos. Cada uno de estos objetos dispone de una cadena de una o más páginas IAM que registran todas las extensiones asignadas al mismo. Cada objeto dispone de al menos una IAM para cada archivo del que tiene extensiones. Pueden tener más de una IAM en un archivo si el intervalo de extensiones del archivo asignadas al objeto supera el intervalo que una IAM puede registrar.

Las páginas IAM se asignan cuando los objetos las necesitan y se ubican de forma aleatoria en el archivo; sysindexes.dbo.FirstIAM apunta a la primera página IAM de un objeto y todas las páginas IAM de dicho objeto están encadenadas.

Una página IAM tiene un encabezado que indica la extensión inicial del intervalo de extensiones asignado por la IAM. La IAM también tiene un gran mapa de bits en el que cada bit representa una extensión. EL primer bit del mapa representa la primera extensión del intervalo, el segundo bit representa la segunda extensión, etc. Si un bit es 0, la extensión que representa no está asignada al objeto propietario de la IAM. Si el bit es 1, la extensión que representa está asignada al objeto propietario de la página IAM.

Si Microsoft® SQL Server™ 2000 necesita insertar una fila nueva y no hay espacio disponible en la página actual, utiliza las páginas IAM y PFS para buscar una página con suficiente espacio para albergar la fila. SQL Server utiliza las páginas IAM para buscar las extensiones asignadas al objeto. Para cada extensión, SQL Server busca las páginas PFS para ver si hay alguna página con espacio disponible suficiente para almacenar la fila. Cada página IAM y PFS cubre un gran número de páginas de datos, de modo que en una base de datos hay pocas páginas IAM y PFS. Esto significa que las páginas IAM y PFS están generalmente en el búfer de memoria de SQL Server y se pueden buscar con rapidez.

SQL Server sólo asigna una nueva extensión a un objeto cuando no puede encontrar rápidamente una página en una extensión existente con espacio suficiente para almacenar la fila que se va a insertar. SQL Server asigna las extensiones entre las que están disponibles en el grupo de archivos siguiendo un algoritmo de asignación proporcional. Si un grupo de archivos tiene dos archivos, uno de los cuales tiene el doble de espacio disponible que el otro, asignará dos páginas en el archivo con más espacio disponible por cada página asignada en el otro archivo. Esto significa que los archivos de un grupo de archivos tienen un porcentaje de espacio utilizado similar.

Objetos de base de Datos

Cuando se utiliza SQL SERVER para diseñar una base de datos, se crean objetos como los que se indican a continuación.

Page 2: SQL SERVER

Tablas : Una base de datos consta de una o más tablas. Una tabla es una colección de datos organizados en filas y columnas. Por ejemplo, podría tener una tabla para la información de autor denominada authors. Cada columna contendría un tipo determinado de información, como el apellido del autor, por ejemplo. Cada fila contendrá toda la información relativa a un autor concreto: nombre, apellidos, dirección, etc.

En una base de datos, puede tener varias tablas, cada una para un tema específico. Por ejemplo, la base de datos pubs podría contener tablas para autores, títulos, etc. Si se utiliza una tabla diferente para cada tema, se elimina la duplicación de datos, se realiza un almacenamiento de datos más eficaz y se reduce el número de errores cometidos en la entrada de datos.

Las tablas son los bloques de construcción básicos de los diagramas de las bases de datos. En un diagrama de base de datos, cada tabla se convierte en una matriz para que pueda ver todas las propiedades definidas para cada columna de la tabla de la base de datos.

Columnas : En una tabla los datos se organizan en columnas. Cada columna almacena un elemento de datos, como un nombre, una línea de una dirección, un precio o cualquier unidad de información discreta similar.

Cuando se crean columnas en una tabla, se les asigna un nombre que identifique su propósito, como FirstName o Address1. En la mayoría de las bases de datos, también se deben especificar propiedades adicionales, como el tamaño máximo permitido para una entrada en la columna, y el tipo de datos que va a contener la columna: caracteres, números enteros, números de coma flotante, fechas u horas, etc. Otras propiedades de columna pueden especificar si la columna es la clave principal de la tabla, si los usuarios deben escribir un valor en ella y cuál es su valor predeterminado.

Claves: Hay dos tipos de claves. Una clave principal es un conjunto de columnas de una tabla que tienen la garantía de poseer valores únicos para cada fila de dicha tabla. Las claves principales también de denominan restricciones de clave principal, porque realmente restringen los valores que se pueden agregar a la tabla: evitan que se agregue una fila a la tabla cuyas columnas de clave principal son iguales a los valores correspondientes de otra fila de dicha tabla.

Una clave externa es una correspondencia entre un conjunto de columnas de una tabla y el conjunto de columnas de clave principal de otra tabla. Cuando se analizan las claves externas, las dos tablas que participan se denominan en ocasiones tabla de claves externas y tabla de claves principales. Las claves externas también reciben el nombre de restricciones de clave externa, porque restringen las filas de una tabla: garantizan que las filas que se agreguen a la tabla de claves externas tengan una fila correspondiente en la tabla de claves principales. Es decir, requieren que las filas que se incorporen a la tabla de claves principales tengan valores en la columna de claves externas que se

Page 3: SQL SERVER

correspondan con los valores respectivos de las columnas de claves principal es para una fila de la tabla de claves principales.

Relaciones de tablas : Puede crear una relación entre las tablas en un diagrama de base de datos para mostrar cómo se vinculan las columnas de una tabla a las columnas de otra tabla.

En una base de datos relacional, las relaciones permiten evitar la existencia de datos redundantes. Por ejemplo, si está diseñando una base de datos para hacer un seguimiento de sus libros, podría tener una tabla con el nombre titles para almacenar información acerca de cada libro, como su título, la fecha de publicación y el editor. También es posible que se desee almacenar información relativa al editor, como el número de teléfono, la dirección y el código postal. Si desea almacenar toda esta información en la tabla titles, el número de teléfono del editor estaría duplicado para cada título publicado por dicho editor

Índices : Se pueden utilizar índices para obtener un acceso rápido a información concreta de una tabla de base de datos. Un índice es una estructura que ordena los valores de una o más columnas de una tabla de base de datos, como la columna de apellidos (lname) de la tabla employee. Si se busca un empleado concreto por su apellido, el índice ayuda a obtener dicha información con mayor rapidez que si se realiza una búsqueda en todas las filas de la tabla.

Restricciones

Desencadenadores : Un desencadenador es un tipo especial de procedimiento almacenado que entra en vigor cuando se modifican datos en una tabla especificada utilizando una o más operaciones de modificación de datos: UPDATE (actualización), INSERT (inserción) o DELETE (eliminación). Los desencadenadores pueden consultar otras tablas e incluir instrucciones SQL complejas. Son especialmente útiles para exigir reglas o requisitos complejos. Por ejemplo, se puede controlar que se permita insertar un pedido basándose en el estado de cuenta actual de un cliente.

Procedimientos almacenados : Los procedimientos almacenados pueden facilitar en gran medida la administración de la base de datos y la visualización de información sobre dicha base de datos y sus usuarios. Los procedimientos almacenados son una colección precompilada de instrucciones SQL e instrucciones de control de flujo opcionales almacenadas bajo un solo nombre y procesadas como una unidad. Los procedimientos almacenados se guardan en una base de datos; se pueden ejecutar desde una aplicación y permiten variables declaradas por el usuario, ejecución condicional y otras funciones eficaces de programación.

Page 4: SQL SERVER

Restricciones

Las restricciones le permiten definir la forma de hacer que Microsoft® SQL Server™ 2000 exija automáticamente la integridad de la base de datos. Las restricciones definen reglas relativas a los valores permitidos en las columnas y constituyen el mecanismo estándar para exigir la integridad. El uso de restricciones es preferible a los desencadenadores, las reglas y los valores predeterminados. El optimizador de consultas también utiliza definiciones de restricciones para generar planes de ejecución de consultas de alto rendimiento.

Clases de restricciones

SQL Server 2000 admite cinco clases de restricciones

NOT NULL especifica que la columna no acepta valores NULL.

Las restricciones CHECK exigen la integridad del dominio mediante la limitación de los valores que se pueden asignar a una columna.

Una restricción CHECK especifica una condición de búsqueda de tipo booleano (TRUE o FALSE) que se aplica a todos los valores que se escriben en la columna; los valores para los que el resultado no sea TRUE se rechazan. En una misma columna se pueden especificar varias restricciones CHECK. Este ejemplo muestra la creación de una restricción con nombre, chk_id, que exige el dominio de la clave principal asegurando que en dicha clave sólo se aceptan los números que se encuentren dentro de un intervalo especificado.

CREATE TABLE cust_sample ( cust_id int PRIMARY KEY, cust_name char(50), cust_address char(50), cust_credit_limit money, CONSTRAINT chk_id CHECK (cust_id BETWEEN 0 and 10000 ) )

Las restricciones UNIQUE exigen la unicidad de los valores de un conjunto de columnas.

No se permite que dos filas de una tabla tengan los mismos valores no NULL en las columnas con una restricción UNIQUE. Las claves principales también exigen la unicidad, pero las claves principales no permiten valores NULL. Una restricción UNIQUE es preferible a un índice único.

Las restricciones PRIMARY KEY identifican la columna o el conjunto de columnas cuyos valores identifican de forma unívoca cada una de las filas de una tabla.

Dos filas de la tabla no pueden tener el mismo valor de clave principal. No se pueden asignar valores NULL a ninguna de las columnas de una clave principal.

Page 5: SQL SERVER

NULL es un valor especial en las bases de datos que representa un valor desconocido, que no es lo mismo que un espacio en blanco o un 0. Como clave principal se recomienda el uso de columnas de tipo entero y de tamaño pequeño. Todas las tablas tienen que tener una clave principal.

Una tabla puede tener varias combinaciones de columnas que puedan identificar de forma unívoca las filas de la tabla; cada combinación es una clave candidata. El administrador de la base de datos elige una de las claves candidatas como clave principal. Por ejemplo, en la tabla part_sample, part_nmbr y part_name serían claves candidatas, pero sólo part_nmbr ha sido elegida como clave principal.

CREATE TABLE part_sample (part_nmbr int PRIMARY KEY, part_name char(30), part_weight decimal(6,2), part_color char(15) )

Las restricciones FOREIGN KEY identifican las relaciones entre las tablas.

Una clave externa de una tabla apunta a una clave candidata de otra tabla. Las claves externas evitan acciones que podrían dejar filas con valores de claves externas cuando no hay claves candidatas con ese valor. En el ejemplo siguiente, la tabla order_part establece una clave externa que hace referencia a la tabla part_sample, definida previamente. Normalmente, order_part también tendría otra clave externa en la tabla de pedidos, pero esto sólo es un ejemplo.

CREATE TABLE order_part (order_nmbr int, part_nmbr int FOREIGN KEY REFERENCES part_sample(part_nmbr) ON DELETE NO ACTION, qty_ordered int)GO

No se puede insertar una fila que tenga un valor de clave externa (excepto NULL) si no hay una clave candidata con dicho valor. La cláusula ON DELETE controla las acciones que se llevarán a cabo si intenta eliminar una fila a la que apuntan las claves externas existentes. La cláusula ON DELETE tiene dos opciones:

NO ACTION especifica que la eliminación produce un error.

CASCADE especifica que también se eliminan todas las filas con claves externas que apuntan a la fila eliminada.

La cláusula ON UPDATE define las acciones que se llevarán a cabo si intenta actualizar un valor de clave candidata a la que apuntan las claves externas existentes. También acepta las opciones NO ACTION y CASCADE.

Page 6: SQL SERVER

Restricciones de tabla y de columna

Las restricciones se dividen en restricciones de columna o restricciones de tabla:

Las restricciones de columna se especifican como parte de la definición de las columnas y sólo se aplican a dichas columnas (las restricciones de los ejemplos anteriores son restricciones de columna).

Las restricciones de tabla se declaran de forma independiente de la definición de las columnas y se pueden aplicar a varias columnas de la tabla.

Las restricciones de tabla se utilizan cuando una restricción tiene que incluir varias columnas.

Por ejemplo, si una tabla tiene dos o más columnas en la clave principal, tiene que utilizar una restricción de tabla para incluir dichas columnas en la clave principal. Piense en una tabla que registra los sucesos de una máquina de una fábrica. Suponga que se pueden producir sucesos de tipos distintos al mismo tiempo, pero no se pueden producir dos sucesos del mismo tipo al mismo tiempo. Esto se puede exigir en la tabla si se incluyen las columnas type y time en una clave principal de dos columnas.

CREATE TABLE factory_process (event_type int, event_time datetime, event_site char(50), event_desc char(1024),CONSTRAINT event_key PRIMARY KEY (event_type, event_time) )