2007
Programa 5 Estrellas
SQL Server 2005
Estrella 1
Unidad 1
Introducción a las bases de
datos
Contenido del curso
Contenido del curso ... 2
Unidad 1: Introducción a las bases de datos ... 13
Objetivos ... 13
Concepto de Bases de Datos ... 14
Algunos conceptos de bases de datos: ... 14
Tipos de bases de datos ... 14
Según la variabilidad de los datos almacenados ... 14
Según el contenido ... 15
Modelos de bases de datos ... 15
Sistema de gestión de base de datos ... 18
Propósito ... 18
Objetivos ... 18
Ventajas ... 19
Base de datos OLTP ... 19
Objetos de la base de datos ... 21
Tablas ... 21
... 23
Vistas ... 23
Tipos de vistas ... 24
Escenarios de utilización de vistas ... 24
Índices ... 26
Tipo de Índices ... 27
Procedimientos Almacenados ... 27
Tipos de Procedimientos Almacenados ... 29
Funciones definidas por el Usuario ... 30
Tipos de funciones ... 31
Sinónimos ... 32
Transacción ... 32
Tipos de datos ... 34
Precisión, escala y longitud ... 36
Constantes ... 37
Contenido del curso ... 40
Unidad 2: Base de Datos Relacional ... 51
Objetivos ... 51
Base de Datos Relacional ... 52
Reglas de Codd ... 52
Diseño de Base de Datos ... 57
¿Qué es un buen diseño de base de datos? ... 57
El proceso de diseño ... 57
Determinar la finalidad de la base de datos ... 58
Buscar y organizar la información necesaria ... 58
Dividir la información en tablas ... 60
Convertir los elementos de información en columnas ... 61
Especificar claves principales ... 63
Crear relaciones entre las tablas ... 65
Crear una relación de uno a varios ... 65
... 66
Crear una relación de varios a varios ... 67
Crear una relación de uno a uno ... 69
Ajustar el diseño ... 70
Ajustar la tabla Productos ... 71
Aplicar las reglas de normalización ... 72
Primera forma normal ... 72
Segunda forma normal ... 73
Tercera forma normal ... 73
Desnormalización ... 74
Integridad Referencial ... 75
Contenido del curso ... 78
Unidad 3 Introducción al SQL ... 89
Objetivos ... 89
Conceptos Claves ... 90
Introducción al SQL ... 90
Búsqueda de información en una tabla ... 90
Condiciones múltiples para una búsqueda ... 91
Búsqueda de información en varias tablas relacionales - JOIN QUERY . . 92
Funciones para el manejo de grupo de filas ... 94
... 94
Condiciones de búsqueda de un grupo de líneas: HAVING ... 95
Sub-búsquedas o subqueries ... 95
Contenido del curso ... 98
Unidad 4 Arquitectura Cliente / Servidor ... 109
Objetivos ... 109
Conceptos Claves ... 110
Conceptos a comentar en esta unidad: ... 110
Arquitectura Cliente/Servidor ... 111
Sistemas de bases de datos de escritorio ... 113
Componentes del SQL Server 2005 ... 115
El Motor de Base de Datos ... 116
Introducción ... 116
Mejoras al Motor de Base de Datos con respecto a versiones anteriores ... 116
Analysis Services ... 117
Introducción ... 117
Mejoras en Analysis Services con respecto a versiones anteriores: ... 117
SQL Server Integration Services ... 118
Introducción ... 118
SSIS mejoras con respecto a versiones anteriores: ... 118
Notification Services ... 119
Introducción ... 119
Características de Notification Services ... 119
Full-Text Search ... 120
Introducción ... 120
Perfeccionamientos de Búsqueda Full-text ... 120
Relational Database Engine .NET CLR, Lenguaje común de los Tiempos de Ejecución ... 120
Introducción ... 120
Definir objetos de base de datos con código administrado ... 121
Reporting Services ... 122
Introducción ... 122
Caracteristicas Reporting Services ... 122
Replicación ... 123 Introducción ... 123 Perfeccionamientos de Replicación ... 123 Native HTTP Support ... 124 Introducción ... 124 Administrar HTTP endpoints ... 124 Service Broker ... 125 Introducción ... 125
Mejoras del Service Broker con respecto a versiones anteriores: ... 125
Mejoras ... 126
Mejoras del Sistema ... 126
Introducción ... 126
Memoria Dinámica AWE ... 126
Memoria Hot-add ... 127
Afinidad Dinámica de CPU ... 127
Perfeccionamiento del Almacenamiento de Datos ... 128
Nuevos y mejorados tipos de datos ... 128
Mayor tamaño de Row ... 128
Mejoras de Tablas e Indices Particionados ... 129
Introducción ... 129
Esparcimiento de Tablas de Datos a través de Grupos de Archivos ... 129
Snapshot Isolation Level ... 130
Introducción ... 130
Como Trabaja Snapshot Isolation? ... 130
Administración de snapshot isolation ... 130
SQLiMail ... 131
Introducción ... 131
Instalar y configurar SQLiMail ... 131
Usar SQLiMail ... 131
Contenido del curso ... 133
Unidad 2 Instalación ... 144 Objetivos ... 144 Conceptos Claves ... 145 Ediciones SQL Server 2005 ... 145 Introducción ... 145 Ediciones Disponibles ... 145 Requerimientos de Hardware ... 147
Requerimientos del Procesador ... 147
Requerimientos de la Memoria ... 147
Requisitos del Disco Rígido ... 148
Hardware Adicional ... 148
Requerimientos de Software del Sistema Operativo ... 149
Introducción ... 149
Requerimientos de Software Adicional ... 150
Instalacion de SQL Server 2005 ... 151
Introducción ... 151
Actualización de Componentes ... 151
SQL Setup MSI ... 152
El System Consistency Checker ... 152
Introducción ... 152
Chequeos de Configuración del Sistema ... 153
Chequeos de Disponibilidad del Sistema ... 154
Chequeos de la Configuración Seguridad ... 154
Chequeos de Configuración de versión ... 155
Chequeos de Configuración Remota y de Cluster. ... 155
El SCC Report ... 155
Instalar Componentes de SQL Server 2005 ... 156
Introducción ... 156
Pasos para la Instalación ... 156
Realice una instalación desatendida ... 158
Introducción ... 158
Crear un archivo .ini ... 158
Empezar una instalación desatendida ... 158
Realizar una instalación Remota ... 159
Introducción ... 159
Requerimientos de Instalación Remota ... 160
Instale SQL Server en un Cluster ... 160
Introducción ... 161
Prepararse para la instalación en un cluster ... 161
Instalar SQL Server 2005 en un cluster ... 161
Actualizar un cluster existente ... 163
Administrar una instalación de SQL Server 2005 ... 163
Introducción ... 163
Objetivos ... 163
Agregar o Remover componentes de SQL Server 2005 ... 164
Aplicación Add or Remove Program de SQL Server ... 164
Introducción ... 164
Remover SQL Server 2005 ... 165
Introducción ... 165
Remover SQL Server ... 165
Trabajando con versiones previas ... 166
Introducción ... 166
Upgrading to SQL Server 2005 ... 166
Compatibilidad Backward ... 167
Contenido del curso ... 169
Unidad 3 Configuración ... 180
Objetivos ... 180
SQL Server Configuration Manager ... 181
Propiedades del Servidor ... 184
Para ver o cambiar las propiedades del servidor ... 184
Contenido del curso ... 186
Unidad 4 Administración ... 197
Propiedades de las Bases de Datos ... 198
Sintaxis ... 198
Argumentos ... 198
Tipos de valor devueltos ... 202
Almacenamiento de datos ... 202
Páginas ... 203
Compatibilidad con filas largas ... 204
Extensiones ... 204
Copias de Seguridad y Restauración ... 205
Copias de Seguridad ... 205
Copias de seguridad de bases de datos ... 206
Copias de seguridad parciales ... 206
Copias de seguridad de archivos ... 207
Copias de seguridad del registro de transacciones (sólo para el modelo de recuperación completa y por medio de registros de operaciones masivas) ... 207
Copias de seguridad de sólo copia ... 208
Dispositivos de copia de seguridad ... 208
Programar copias de seguridad ... 208
Restricciones de las operaciones de copia de seguridad en SQL Server ... 209
No se pueden realizar copias de seguridad de los datos sin conexión . 209
Restricciones de simultaneidad durante una copia de seguridad ... 209
Restauración de una base de datos ... 210
Conjunto de puestas al día ... 210
Secuencias de restauración ... 211
Fases de la restauración ... 211
Fase de copia de datos ... 211
Fase de rehacer (puesta al día) ... 212
Punto de recuperación ... 212
Coherencia de rehacer (puesta al día) ... 212
Fase de deshacer (revertir) y recuperación ... 213
Relación de las opciones RECOVERY y NORECOVERY con las fases de restauración ... 213
Rutas de recuperación ... 214
Restaurar una base de datos cuando SQL Server no está conectado . 214
Para restaurar una copia de seguridad completa de la base de datos . 214
Contenido ... 218
Unidad 5: Introducción al T-SQL ... 229
Objetivos ... 229
Lenguaje de Definición de Datos ... 230
Archivos y grupos de archivos de base de datos ... 231
Instantáneas de base de datos ... 231
Opciones de base de datos ... 231
Base de datos model y creación de nuevas bases de datos ... 232
Ver la información de la base de datos ... 232
Tablas temporales ... 234
Tablas con particiones ... 235
Reglas de aceptación de valores NULL en una definición de tabla ... 235
Quitar una instantánea de la base de datos ... 238
Quitar una base de datos utilizada en la réplica ... 238
Configurar opciones ... 241
Mover archivos ... 241
Inicializar archivos ... 241
Cambiar la intercalación de la base de datos ... 242
Ver información de base de datos ... 242
Manipulación de Datos ... 248
Reglas para insertar filas ... 251
Utilizar desencadenadores INSTEAD OF en acciones INSERT ... 252
Insertar valores en columnas de tipo definido por el usuario ... 252
Utilizar OPENROWSET y BULK para datos de carga masiva ... 252
Utilizar UPDATE con la cláusula FROM ... 258
Actualizar columnas de tipos definidos por el usuario ... 259
Actualizar tipos de datos de valores grandes ... 259
Actualizar columnas de tipo text, ntext e image ... 260
Utilizar triggers INSTEAD OF en acciones UPDATE ... 260
Configurar variables y columnas ... 261
Utilizar un desencadenador INSTEAD OF en acciones DELETE ... 264
Consultas Avanzadas ... 265
Funciones Predefinidas ... 271
Funciones de categoría (Transact-SQL) ... 272
Funciones de agregado (Transact-SQL) ... 272
Funciones de conjuntos de filas (Transact-SQL) ... 273
Funciones matemáticas (Transact-SQL) ... 273
Funciones de cadena (Transact-SQL) ... 274
Funciones del sistema (Transact-SQL) ... 274
Contenido ... 276
Unidad 2: Integridad Referencial ... 287
Objetivos ... 287
Integridad Referencial ... 288
Integridad Referencial Declarativa ... 289
Restricciones ... 289
Información adicional sobre las restricciones ... 291
Restricciones PRIMARY KEY ... 291
Restricciones UNIQUE ... 293
Restricciones FOREIGN KEY ... 294
Restricciones CHECK ... 297
Definiciones DEFAULT ... 299
Contenido ... 301
Unidad 3: Objetos Avanzados ... 312
Objetivos ... 312
Vistas ... 313
Descripción de Vistas ... 313
Diseñar e implementar Vistas ... 314
Modificar Vistas ... 317
Modificar y cambiar el nombre de una vista ... 317
Modificar datos mediante una vista ... 319
Obtener información acerca de una vista ... 321
Sinónimos ... 322
Sinónimos y esquemas ... 324
Conceder permisos para un sinónimo ... 325
Contenido ... 327 Unidad 4: T-SQL Avanzado ... 338 Objetivos ... 338 Procedimientos Almacenados ... 339 Sintaxis ... 339 Argumentos ... 339
Utilizar las opciones de SET ... 344
Utilizar parámetros con procedimientos almacenados CLR ... 345
Obtener información acerca de procedimientos almacenados ... 345
Resolución diferida de nombres ... 346
Ejecutar procedimientos almacenados ... 346
Parámetros que utilizan el tipo de datos cursor ... 346
Procedimientos almacenados temporales ... 346
Ejecutar procedimientos almacenados automáticamente ... 347
Anidamiento de procedimientos almacenados ... 347
Limitaciones de <sql_statement> ... 347
Funciones Definidas por el Usuario ... 355
Descripción de funciones definidas por el usuario ... 355
Diseñar funciones definidas por el usuario ... 360
Directivas para el diseño de funciones definidas por el usuario sección ... 360
Funciones definidas por el usuario con valores de tabla ... 363
Funciones en línea definidas por el usuario ... 366
Volver a escribir procedimientos almacenados como funciones ... 369
SubConsultas ... 371
Contenido del curso ... 374
Unidad 5: Seguridad ... 385
Objetivos ... 385
Seguridad SQL y Seguridad de Windows ... 386
Autentificación del Login: ... 386
Autentificación del SQL Server: ... 386
Autentificación de Windows NT: ... 386
Modo de Autentificación: ... 386
Usuarios ... 387
Cuentas de Usuario y Roles en una Base de Datos: ... 387
Cuentas de Usuarios de la Base de Datos: ... 387
Asegurables ... 387
Roles ... 388
Esquemas ... 388
Separación de esquemas de usuario ... 389
Esquema en SQL Server 2000 y esquema en SQL Server 2005 ... 389
Ventajas de la separación entre esquema y usuario ... 390
Esquemas predeterminados ... 390
Autorización ... 391
Permisos ... 391
Conceder acceso al Agente SQL Server ... 392
Convenciones de nomenclatura de permisos ... 393
Permisos aplicables a asegurables específicos ... 395
Ejemplos ... 396
Trabajar con permisos ... 397
Cifrado ... 400 Mecanismos de cifrado ... 400 Certificados ... 401 Sintaxis ... 402 Argumentos ... 402 Permisos ... 403 Claves asimétricas ... 403 Sintaxis ... 403 Argumentos ... 404 Permisos ... 405 Claves simétricas ... 405 Sintaxis ... 405 Argumentos ... 405 Permisos ... 406 Contenido ... 407 Unidad 1: T-SQL Avanzado ... 418 Objetivos ... 418 Índices ... 419 Descripción de Índices ... 419
Conceptos básicos de los índices ... 419
Índices y restricciones ... 420
Cómo utiliza los índices el optimizador de consultas ... 420
Tipos de índices ... 421
Diseñar índices ... 422
Conceptos básicos del diseño de índices ... 422
Tareas del diseño de índices ... 423
Directivas generales para diseñar índices ... 423
Consideraciones acerca de las bases de datos ... 424
Consideraciones sobre las consultas ... 424
Características de los índices ... 426
Directivas para diseñar índices agrupados ... 426
Consideraciones sobre las consultas ... 427
Consideraciones sobre las columnas ... 427
Directivas para diseñar índices no agrupados ... 428
Consideraciones acerca de las bases de datos ... 429
Consideraciones sobre consultas ... 429
Consideraciones sobre columnas ... 429
Directivas para diseñar índices únicos ... 430
Consideraciones ... 431
Implementar Índices ... 431
Tareas de creación de índices ... 431
Consideraciones de implementación ... 434
Tipos de datos ... 435
Consideraciones adicionales ... 436
La actualización de SQL Server deshabilita un índice ... 436
Para deshabilitar un índice ... 438 Sintaxis ... 438 Argumentos ... 439 Notas ... 446 Regenerar índices ... 447 Reorganizar índices ... 447 Deshabilitar índices ... 448 Establecer opciones ... 448
Opciones de bloqueo de fila y página ... 448
Operaciones de índice en línea ... 449
Permisos ... 449
Ejemplos ... 449
A. Regenerar un índice ... 449
B. Regenerar todos los índices de una tabla y especificar opciones ... 449
C. Reorganizar un índice con compactación LOB ... 450
D. Establecer opciones en un índice ... 450
E. Deshabilitar un índice ... 450
F. Deshabilitar restricciones ... 450
G. Habilitar restricciones ... 451
H. Regenerar un índice con particiones ... 451
Requisitos de espacio en disco ... 452
Consideraciones de rendimiento ... 452
Optimizar Índices ... 453
Tareas del diseño de índices ... 454
Establecer opciones sin volver a generar ... 456
Ver la configuración de opciones de índice ... 456
Ejemplos ... 456 Triggers ... 458 Sintaxis ... 458 Argumentos ... 459 Triggers DML ... 464 Triggers DDL ... 467
Consideraciones generales sobre los triggers ... 467
Permisos ... 469
Ejemplos ... 470
A. Utilizar un trigger DML con un mensaje de aviso ... 470
B. Utilizar un trigger DML con un mensaje de correo electrónico de aviso ... 470
C. Utilizar un trigger DML AFTER para exigir una regla de negocio entre las tablas PurchaseOrderHeader y Vendor ... 470
D. Utilizar la resolución diferida de nombres ... 471
E. Utilizar un trigger DDL con ámbito en la base de datos ... 472
F. Utilizar un trigger DDL con ámbito en el servidor ... 472
G. Ver los eventos que hacen que se active un trigger ... 473
Usar sp_dbcmptlevel para compatibilidad con versiones anteriores ... 473
Transacciones ... 474
Transacciones de confirmación automática ... 474
Transacciones explícitas ... 474
Transacciones implícitas ... 474
Transacciones del Motor de Base de Datos ... 476
Atomicidad ... 476
Coherencia ... 476
Aislamiento ... 476
Durabilidad ... 477
Especificar y exigir transacciones ... 477
Contenido ... 479
Unidad 2: Componentes del SQL Server 2005 ... 490
Objetivos ... 490
Versiones de Microsoft SQL Server 2005 ... 491
Decidir entre ediciones de Microsoft SQL Server 2005 ... 491
Usar Microsoft SQL Server 2005 con un servidor de Internet ... 493
Usar Microsoft SQL Server 2005 con aplicaciones cliente/servidor ... 493
Decidir entre componentes de Microsoft SQL Server 2005 ... 494
Descripción de Componentes de Microsoft SQL Server 2005 ... 495
Database Engine ... 495 Analysis Services ... 496 Reporting Services ... 510 Notification Services ... 512 Integration Services ... 520 Contenido ... 524
Unidad 3: Administración Avanzada ... 535
Objetivos ... 535
1. Monitoreo ... 536
2. Activity Monitor ... 536
Cómo ver la actividad de los trabajos (SQL Server Management Studio) ... 536
Supervisar la actividad de trabajo ... 537
3. Management views ... 538
4. MBSA y Service packs ... 541
5. DB Engine Tuning Advisor ... 543
Como optimizar una base de datos mediante la utilidad DTA ... 543
Ejemplos ... 554
6. Plan de Ejecución ... 556
7. Estadísticas ... 558
Contenido ... 563
Unidad 4: Reporting Services ... 574
Objetivos ... 574
SQL Server Reporting Services ... 575
Reportes empresariales ... 576
Características ... 580
Conceptos ... 584
Arquitectura del SQL Server Reporting Server ... 585
Report Server ... 586
Integración con SQL Server 2005 ... 591
Contenido ... 596
Unidad 5: BI Development Studio ... 607
Objetivos ... 607
Analysis Services ... 608
Arquitectura del Servidor (Analysis Services) ... 608
Arquitectura del Cliente (SSAS) ... 609
Objetos de Analysis Services ... 614
Orígenes de datos (Analysis Services) ... 614
Vistas de origen de datos (Analysis Services) ... 615
Cubos (Analysis Services) ... 615
Dimensiones (Analysis Services) ... 616
Estructuras de Data Mining (Analysis Services) ... 616
Funciones (Analysis Services) ... 618
Assemblies (Analysis Services) ... 619
Integration Services Project (SSIS) ... 620
Usos típicos de Integration Services ... 621
Arquitectura de Integration Services ... 625
Uso de Business Intelligence Development Studio y SQL Server Management Studio con Integration Services ... 627
SQL Server Management Studio ... 627
Unidad 1: Introducción a las bases de datos
Objetivos
Dar una visión acerca de los conceptos básicos de una base de datos:
Qué es una base de datos?
Objetos de una base de datos
Concepto de Bases de Datos
Una base de datos se puede definir como un conjunto de información que pertenece al mismo contexto, que se encuentra agrupada ó almacenada para su uso posterior.
En este sentido, una biblioteca puede considerarse una base de datos compuesta en su mayoría por documentos y textos impresos en papel e indexados para su consulta.
En la actualidad, y gracias al desarrollo tecnológico de campos como la informática y la electrónica, la mayoría de las bases de datos tienen formato electrónico, que ofrece un amplio rango de soluciones al problema de almacenar datos.
Las aplicaciones más usuales de bases de datos, son para la gestión de empresas e instituciones públicas. También son ampliamente utilizadas en entornos científicos con el objeto de almacenar la información experimental.
Algunos conceptos de bases de datos:
Base de Datos: es la colección de datos usados por el sistema de aplicaciones de una determinada empresa.
Base de Datos: es un conjunto de información relacionada que se encuentra agrupada o estructurada. Un archivo por sí mismo no constituye una base de datos, sino más bien la forma en que está organizada la información es la que da origen a la base de datos.
Base de Datos: colección de datos organizada para dar servicio a muchas aplicaciones al mismo tiempo al combinar los datos de manera que parezcan estar en una sola ubicación
Tipos de bases de datos
Las bases de datos pueden clasificarse de varias maneras, de acuerdo al criterio elegido para su clasificación:
Según la variabilidad de los datos almacenados
Bases de datos estáticas. Éstas son bases de datos de sólo lectura,
utilizadas primordialmente para almacenar datos históricos que posteriormente se pueden utilizar para estudiar el comportamiento de un conjunto de datos a través del tiempo, realizar proyecciones y tomar decisiones.
Bases de datos dinámicas. Éstas son bases de datos donde la información
almacenada se modifica con el tiempo, permitiendo operaciones como actualización y adición de datos, además de las operaciones fundamentales de consulta. Un ejemplo de esto puede ser la base de datos utilizada en un
sistema de información de una tienda de abarrotes, una farmacia, un videoclub, etc.
Según el contenido
Bases de datos bibliográficas. Solo contienen un surrogante
(representante) de la fuente primaria, que permite localizarla. Un registro típico de una base de datos bibliográfica contiene información sobre el autor, fecha de publicación, editorial, título, edición, de una determinada publicación, etc. Puede contener un resumen o extracto de la publicación original, pero nunca el texto completo, porque sino estaríamos en presencia de una base de datos a texto completo (o de fuentes primarias) [ver más abajo]. Como su nombre lo indica, el contenido son cifras o números. Por ejemplo, una colección de resultados de análisis de laboratorio, entre otras.
Bases de datos de texto completo. Almacenan las fuentes primarias, como
por ejemplo, todo el contenido de todas las ediciones de una colección de revistas científicas.
Directorios. Un ejemplo son las guías telefónicas en formato electrónico. Banco de imágenes, audio, video, multimedia, etc.
Bases de datos o "bibliotecas" de información Biológica. Son bases de
datos que almacenan diferentes tipos de información proveniente de las ciencias de la vida o médicas.
Modelos de bases de datos
Además de la clasificación por la función de las bases de datos, éstas también se pueden clasificar de acuerdo a su modelo de administración de datos.
Un modelo de datos es básicamente una "descripción" de algo conocido como contenedor de datos (algo en donde se guarda la información), así como de los métodos para almacenar y recuperar información de esos
contenedores. Los modelos de datos no son cosas físicas: son abstracciones que permiten la implementación de un sistema eficiente de base de datos; por lo general se refieren a algoritmos, y conceptos matemáticos. Algunos modelos con frecuencia utilizados en las bases de datos son:
Bases de datos jerárquicas. Éstas son bases de datos que, como su
nombre indica, almacenan su información en una estructura jerárquica. En este modelo los datos se organizan en una forma similar a un árbol (visto al revés), en donde un nodo padre de información puede tener varios hijos. El nodo que no tiene padres es llamado raíz, y a los nodos que no tienen hijos se los conoce como hojas.
Las bases de datos jerárquicas son especialmente útiles en el caso de
aplicaciones que manejan un gran volumen de información y datos muy compartidos permitiendo crear estructuras estables y de gran rendimiento.
Una de las principales limitaciones de este modelo es su incapacidad
de representar eficientemente la redundancia de datos.
Base de datos de red. Éste es un modelo ligeramente distinto del jerárquico;
su diferencia fundamental es la modificación del concepto de nodo: se permite que un mismo nodo tenga varios padres (posibilidad no permitida en el modelo jerárquico).
Fue una gran mejora con respecto al modelo jerárquico, ya que ofrecía
una solución eficiente al problema de redundancia de datos; pero, aun así, la dificultad que significa administrar la información en una base de datos de red ha significado que sea un modelo utilizado en su mayoría por programadores más que por usuarios finales.
Base de datos relacional. Éste es el modelo más utilizado en la actualidad
para modelar problemas reales y administrar datos dinámicamente. Este tipo de base se detalla en la unidad 2.
Bases de datos orientadas a objetos. Este modelo, bastante reciente, y
propio de los modelos informáticos orientados a objetos, trata de almacenar en la base de datos los objetos completos (estado y comportamiento).
Bases de datos documentales. Permiten la indexación a texto completo, y
en líneas generales realizar búsquedas más potentes. Tesaurus es un sistema de índices optimizado para este tipo de bases de datos.
Base de datos deductivas. Un sistema de base de datos deductivas, es
un sistema de base de datos pero con la diferencia que permite hacer deducciones a través de inferencias. Se basa principalmente en reglas y hechos que son almacenados en la base de datos. También las bases de datos deductivas son llamadas base de datos lógicas, a raíz de que se basan en lógica matemática.
Bases de datos distribuidas. La base de datos está almacenada en varias
computadoras conectadas en red. Surgen debido a la existencia física de organismos descentralizados. Esto les da la capacidad de unir las bases de datos de cada localidad y acceder así, por ejemplo a distintas universidades, sucursales de tiendas, etcétera.
Definición de Base de datos
Almacén de datos relacionados con diferentes modos de organización. Una base de datos representa algunos aspectos del mundo real, aquellos que le interesan al diseñador. Se diseña y almacena datos con un propósito
De forma sencilla podemos indicar que una base de datos no es más que un conjunto de información relacionada que se encuentra agrupada o
estructurada.
El archivo por sí mismo, no constituye una base de datos, sino más bien la forma en que está organizada la información es la que da origen a la base de datos. Las bases de datos manuales, pueden ser difíciles de gestionar y modificar. Por ejemplo, en una guía de teléfonos no es posible encontrar el número de una persona si no sabemos su apellido, aunque conozcamos su domicilio.
Del mismo modo, en un archivo de pacientes en el que la información esté ordenada por el nombre de los mismos, será una tarea bastante engorrosa encontrar todos los pacientes que viven en una zona determinada. Los problemas expuestos anteriormente se pueden resolver creando una base de datos informatizada.
Desde el punto de vista informático, una base de datos es un sistema formado por un conjunto de datos almacenados en discos que permiten el acceso directo a ellos y un conjunto de programas que manipulan ese conjunto de datos.
Desde el punto de vista más formal, podríamos definir una base de datos como un conjunto de datos estructurados, fiables y homogéneos, organizados independientemente en máquina, accesibles a tiempo real, compartibles por usuarios concurrentes que tienen necesidades de información diferente y no predecible en el tiempo.
La idea general es que estamos tratando con una colección de datos que cumplen las siguientes propiedades:
Están estructurados independientemente de las aplicaciones y del soporte de almacenamiento que los contiene.
Presentan la menor redundancia posible.
Sistema de gestión de base de datos
Los Sistemas de gestión de base de datos son un tipo de software muy específico, dedicado a servir de interfaz entre la base de datos, el usuario y las aplicaciones que la utilizan.
Se compone de un lenguaje de definición de datos, de un lenguaje de manipulación de datos y de un lenguaje de consulta.
En los textos que tratan este tema, o temas relacionados, se mencionan los términos SGBD y DBMS, siendo ambos equivalentes, y acrónimos,
respectivamente, de Sistema Gestor de Bases de Datos y DataBase Management System, su expresión inglesa.
Propósito
El propósito general de los sistemas de gestión de base de datos es el de manejar de manera clara, sencilla y ordenada un conjunto de datos.
Objetivos
Existen distintos objetivos que deben cumplir los DBMS:
Abstracción de la información. Los DBMS ahorran a los usuarios detalles
acerca del almacenamiento físico de los datos. Da lo mismo si una base de datos ocupa uno o cientos de archivos, este hecho se hace transparente al usuario. Así, se definen varios niveles de abstracción.
Independencia. La independencia de los datos consiste en la capacidad de
modificar el esquema (físico o lógico) de una base de datos sin tener que realizar cambios en las aplicaciones que se sirven de ella.
Redundancia mínima. Un buen diseño de una base de datos logrará evitar
la aparición de información repetida o redundante. Lo ideal es lograr una redundancia nula; no obstante, en algunos casos la complejidad de los cálculos hace necesaria la aparición de redundancias.
Consistencia. En aquellos casos en los que no se ha logrado esta
redundancia nula, será necesario vigilar que aquella información que aparece repetida se actualice de forma coherente, es decir, que todos los datos repetidos se actualicen de forma simultánea.
Seguridad. La información almacenada en una base de datos puede llegar a
tener un gran valor. Los DBMS deben garantizar que esta información se encuentra asegurada frente a usuarios malintencionados, que intenten leer información privilegiada; frente a ataques que deseen manipular o destruir la información; o simplemente ante las torpezas de algún usuario autorizado pero despistado. Normalmente, los DBMS disponen de un complejo sistema de permisos a usuarios y grupos de usuarios, que permiten otorgar diversas categorías de permisos.
Integridad. Se trata de adoptar las medidas necesarias para garantizar la
validez de los datos almacenados. Es decir, se trata de proteger los datos ante fallos de hardware, datos introducidos por usuarios descuidados, o cualquier otra circunstancia capaz de corromper la información almacenada.
Respaldo y recuperación. Los DBMS deben proporcionar una forma
eficiente de realizar copias de seguridad de la información almacenada en ellos, y de restaurar a partir de estas copias los datos.
Control de la concurrencia. En la mayoría de entornos (excepto quizás el
doméstico), lo más habitual es que sean muchas las personas que acceden a una base de datos, bien para recuperar información, bien para almacenarla. Y es también frecuente que dichos accesos se realicen de forma simultánea. Así pues, un DBMS debe controlar este acceso concurrente a la información, que podría derivar en inconsistencias.
Tiempo de respuesta. Lógicamente, es deseable minimizar el tiempo que el
DBMS tarda en darnos la información solicitada y en almacenar los cambios realizados.
Ventajas
1. Facilidad de manejo de grandes volumen de información. 2. Gran velocidad en muy poco tiempo.
3. Independencia del tratamiento de información.
4. Seguridad de la información (acceso a usuarios autorizados),
protección de información, de modificaciones, inclusiones, consulta. 5. No hay duplicidad de información, comprobación de información en el
momento de introducir la misma.
6. Integridad referencial el terminar los registros.
Base de datos OLTP
Las bases de datos relacionales de procesamiento de transacciones en línea (OLTP) son óptimas para administrar datos que cambian. Suelen tener varios usuarios que realizan transacciones al mismo tiempo que cambian los datos en tiempo real. Aunque las solicitudes de datos realizadas individualmente por los usuarios suelen hacer referencia a pocos registros, muchas de estas solicitudes se producen al mismo tiempo.
Las bases de datos OLTP están diseñadas para permitir que las aplicaciones transaccionales escriban sólo los datos necesarios para controlar una sola transacción lo antes posible. Las bases de datos OLTP se caracterizan en general por lo siguiente:
Admiten el acceso simultáneo de muchos usuarios que agregan y modifican datos con regularidad.
Representan el estado en cambio constante de una organización, pero no guardan su historial.
Contienen muchos datos, incluidos todos los datos utilizados para comprobar transacciones.
Tienen estructuras complejas.
Se ajustan para dar respuesta a la actividad transaccional.
Proporcionan la infraestructura tecnológica necesaria para admitir las operaciones diarias de la empresa.
Las transacciones individuales se completan rápidamente y se tiene acceso a cantidades de datos relativamente pequeñas. Los sistemas OLTP están diseñados y ajustados para procesar cientos o miles de transacciones que se indican al mismo tiempo.
Los datos en los sistemas OLTP están organizados básicamente para admitir transacciones, como por ejemplo:
Registrar un pedido de una terminal punto de venta o especificado a través de un sitio Web.
Realizar un pedido de más provisiones cuando las cantidades de inventario descienden hasta determinado nivel.
Hacer un seguimiento de componentes desde su ensamblaje hasta un producto final en un proceso de fabricación.
Objetos de la base de datos
Tablas
En una base de datos la información se organiza en tablas, que son filas y columnas similares a las de los libros contables o a las de las hojas de cálculo.
Una base de datos simple puede que sólo contenga una tabla, pero
generalmente las bases de datos necesitan varias tablas. Por ejemplo, podría existir una base de datos con las siguientes tablas: una tabla con información sobre productos, otra con información sobre pedidos y una tercera con
información sobre clientes.
Cada fila de la tabla recibe también el nombre de registro (o tupla) y cada columna se denomina también campo.
Un registro es una forma lógica y coherente de combinar información sobre algún tema.
Un campo es un elemento único de información: un tipo de elemento que aparece en cada registro.
En la tabla Productos, por ejemplo, cada fila o registro contendría información sobre un producto, y cada columna contendría algún dato sobre ese
Además de la función estándar de las tablas básicas definidas por el usuario, SQL Server 2005 proporciona los siguientes tipos de tabla que permiten llevar a cabo objetivos especiales en una base de datos:
Tablas con particiones Tablas temporales Tablas del sistema
Tablas con particiones
Las tablas con particiones son tablas cuyos datos se han dividido
horizontalmente entre unidades que pueden repartirse por más de un grupo de archivos de una base de datos. Las particiones facilitan la administración de las tablas y los índices grandes porque permiten obtener acceso y
administrar subconjuntos de datos con rapidez y eficacia al mismo tiempo que mantienen la integridad del conjunto. En un escenario con particiones, las operaciones como, por ejemplo, la carga de datos de un sistema OLTP a un sistema OLAP, pueden realizarse en cuestión de segundos en lugar de minutos u horas en otras versiones. Las operaciones de mantenimiento que se realizan en los subconjuntos de datos también se realizan de forma más eficaz porque sólo afectan a los datos necesarios en lugar de a toda la tabla. Tiene sentido crear una tabla con particiones si la tabla es muy grande o se espera que crezca mucho, y si alguna de las dos condiciones siguientes es verdadera:
La tabla contiene, o se espera que contenga, muchos datos que se utilizan de manera diferente.
Las consultas o las actualizaciones de la tabla no se realizan como se esperaba o los costos de mantenimiento son superiores a los períodos de mantenimiento predefinidos.
Las tablas con particiones admiten todas las propiedades y características asociadas con el diseño y consulta de tablas estándar, incluidas las
restricciones, los valores predeterminados, los valores de identidad y marca de hora, los desencadenadores y los índices. Por lo tanto, si desea
implementar una vista con particiones que sea local respecto a un servidor, debe implementar una tabla con particiones.
Tablas temporales
Hay dos tipos de tablas temporales: locales y globales. Las tablas temporales locales son visibles sólo para sus creadores durante la misma conexión a una instancia de SQL Server como cuando se crearon o cuando se hizo
referencia a ellas por primera vez. Las tablas temporales locales se eliminan cuando el usuario se desconecta de la instancia de SQL Server. Las tablas temporales globales están visibles para cualquier usuario y conexión una vez creadas, y se eliminan cuando todos los usuarios que hacen referencia a la tabla se desconectan de la instancia de SQL Server.
Tablas del sistema
SQL Server almacena los datos que definen la configuración del servidor y de todas sus tablas en un conjunto de tablas especial, conocido como tablas del sistema. Los usuarios no pueden consultar ni actualizar directamente las tablas del sistema si no es a través de una conexión de administrador dedicada (DAC) que sólo debería utilizarse bajo la supervisión de los servicios de atención al cliente de Microsoft. Las tablas de sistema se
cambian normalmente en cada versión nueva de SQL Server. Puede que las aplicaciones que hacen referencia directamente a las tablas del sistema tengan que escribirse de nuevo para poder actualizarlas a una versión nueva de SQL Server con una versión diferente de las tablas de sistema. La
información de las tablas del sistema está disponible a través de las vistas de catálogo.
Importante
Las tablas del sistema de SQL Server 2005 Database Engine (Motor de base de datos de SQL Server 2005) se han implementado como vistas de sólo lectura para ofrecer compatibilidad con versiones anteriores a SQL Server 2005. No puede trabajar directamente con los datos de estas tablas del sistema. Recomendamos obtener acceso a los metadatos de SQL Server mediante las vistas de catálogo.
Vistas
Una vista es una tabla virtual cuyo contenido está definido por una consulta. Al igual que una tabla real, una vista consta de un conjunto de columnas y filas de datos con un nombre. Sin embargo, a menos que esté indizada, una vista no existe como conjunto de valores de datos almacenados en una base de datos. Las filas y las columnas de datos proceden de tablas a las que se hace referencia en la consulta que define la vista y se producen de forma dinámica cuando se hace referencia a la vista.
Una vista actúa como filtro de las tablas subyacentes a las que se hace referencia en ella. La consulta que define la vista puede provenir de una o de varias tablas, o bien de otras vistas de la base de datos actual u otras bases de datos. Asimismo, es posible utilizar las consultas distribuidas para definir vistas que utilicen datos de orígenes heterogéneos. Esto puede resultar de utilidad, por ejemplo, si se desea combinar datos de estructura similar que proceden de distintos servidores, cada uno de los cuales almacena los datos para una región distinta de la organización.
No existe ninguna restricción a la hora de consultar vistas y muy pocas restricciones a la hora de modificar los datos de éstas.
Tipos de vistas
En SQL Server 2005, se pueden crear vistas estándar, vistas indizadas y vistas con particiones.
Vistas estándar
La combinación de datos de una o más tablas mediante una vista estándar permite satisfacer la mayor parte de las ventajas de utilizar vistas. Éstas incluyen centrarse en datos específicos y simplificar la manipulación de datos.
Vistas indizadas
Una vista indizada es una vista que se ha materializado. Esto significa que se ha calculado y almacenado. Se puede indizar una vista creando un índice agrupado único en ella. Las vistas indizadas mejoran de forma considerable el rendimiento de algunos tipos de consultas. Las vistas indizadas funcionan mejor para consultas que agregan muchas filas. No son adecuadas para conjuntos de datos subyacentes que se actualizan frecuentemente
Vistas con particiones
Una vista con particiones reúne datos horizontales con particiones de un conjunto de tablas miembro en uno o más servidores. Esto hace que los datos aparezcan como si fueran de una tabla. Una vista que reúne tablas miembro en la misma instancia de SQL Server es una vista con particiones local.
Escenarios de utilización de vistas
Las vistas suelen utilizarse para centrar, simplificar y personalizar la percepción de la base de datos para cada usuario. Las vistas pueden emplearse como mecanismos de seguridad, que permiten a los usuarios obtener acceso a los datos por medio de la vista, pero no les conceden el
permiso de obtener acceso directo a las tablas base subyacentes a la vista. Las vistas pueden utilizarse para proporcionar una interfaz compatible con versiones anteriores con el fin de emular una tabla que existía pero cuyo esquema ha cambiado.
Para centrarse en datos específicos
Las vistas permiten a los usuarios centrarse en datos de su interés y en tareas específicas de las que son responsables. Los datos innecesarios o sensibles pueden quedar fuera de la vista.
Para simplificar la manipulación de datos
Las vistas permiten simplificar la forma en que los usuarios trabajan con los datos. Las combinaciones, proyecciones, consultas UNION y consultas SELECT que se utilizan con frecuencia pueden definirse como vistas para que los usuarios no tengan que especificar todas las condiciones y
calificaciones cada vez que realicen una operación adicional en los datos. Por ejemplo, es posible crear como vista una consulta compleja que se utilice para la elaboración de informes y que realice subconsultas, combinaciones externas y agregaciones para recuperar datos de un grupo de tablas. La vista simplifica el acceso a los datos ya que evita la necesidad de escribir o enviar la consulta subyacente cada vez que se genera el informe; en lugar de eso, se realiza una consulta en la vista. También puede crear funciones en línea definidas por el usuario que funcionen de manera lógica como vistas con parámetros o como vistas con parámetros de condiciones de búsqueda de cláusulas WHERE u otras partes de la consulta.
Para proporcionar compatibilidad con versiones anteriores
Las vistas permiten crear una interfaz compatible con versiones anteriores para una tabla cuando su esquema cambia. Por ejemplo, una aplicación puede haber hecho referencia a una tabla no normalizada que tiene el siguiente esquema:
Empleados(Nombre, FechaNacimiento, Sueldo, Departamento, Edificio) Para evitar el almacenamiento redundante de datos en la base de datos, puede normalizar la tabla dividiéndola en las dos siguientes tablas:
Empleados2(Nombre, FechaNacimiento, Sueldo, Id_Dep) Departamento(Id_Dep, Edificio)
Para proporcionar una interfaz compatible con versiones anteriores que siga haciendo referencia a los datos de Empleados, puede eliminar la tabla Empleados antigua y reemplazarla por la siguiente vista:
CREATE VIEW Employee AS
SELECT Name, BirthDate, Salary, BuildingName FROM Employee2 e, Department d
Las aplicaciones que realizaban consultas en la tabla Empleados, ahora pueden obtener sus datos desde la vista Empleados. No es necesario cambiar la aplicación si sólo lee desde Empleados. A veces, las aplicaciones que actualizan Empleados también pueden admitirse agregando desencadenadores INSTEAD OF a la nueva vista para asignar operaciones INSERT, DELETE y UPDATE en la vista a las tablas subyacentes.
Para personalizar datos
Las vistas permiten que varios usuarios puedan ver los datos de modo distinto, aunque estén utilizando los mismos simultáneamente. Esto resulta de gran utilidad cuando usuarios que tienen distintos intereses y calificaciones trabajan con la misma base de datos. Por ejemplo, es posible crear una vista que recupere únicamente los datos para los clientes con los que trabaja el responsable comercial de una cuenta. La vista puede determinar qué datos deben recuperarse en función del identificador de inicio de sesión del responsable comercial que utilice la vista.
Para exportar e importar datos
Es posible utilizar vistas para exportar datos a otras aplicaciones. Por ejemplo, es posible que quiera utilizar la información de varias tablas para analizar los datos mediante Microsoft Excel. Para ello, puede crear una vista a partir de las tablas. A continuación, puede utilizar la herramienta bcp para exportar los datos definidos por la vista.
Para combinar datos de particiones entre servidores
El operador de conjuntos UNION de Transact-SQL puede utilizarse dentro de una vista para combinar los resultados de dos o más consultas de tablas distintas en un solo conjunto. Esta combinación se muestra al usuario como una tabla única denominada vista con particiones. Por ejemplo, si una tabla contiene datos de ventas de Washington y otra tabla contiene datos de ventas de California, podría crearse una vista a partir de la UNION de ambas tablas. La vista representada incluye los datos de ventas de ambas zonas.
Índices
Al igual que el índice de un libro, el índice de una base de datos permite encontrar rápidamente información específica en una tabla o vista indizada. Un índice contiene claves generadas a partir de una o varias columnas de la tabla o la vista y punteros que asignan la ubicación de almacenamiento de los datos especificados. Puede mejorar notablemente el rendimiento de las aplicaciones y consultas de bases de datos creando índices correctamente diseñados para que sean compatibles con las consultas. Los índices pueden reducir la cantidad de datos que se deben leer para devolver el conjunto de resultados de la consulta. Los índices también pueden exigir la unicidad en las filas de una tabla, lo que se garantiza la integridad de los datos de la tabla.
Tipo de Índices
Tipo de índice Descripción
Agrupado Un índice agrupado ordena y almacena las filas de datos de la tabla o vista por orden en función de la clave del índice agrupado. El índice agrupado se
implementa como una estructura de árbol b que admite la recuperación rápida de las filas a partir de los valores de las claves del índice agrupado.
No agrupado Los índices no agrupados se pueden definir en una tabla o vista con un índice agrupado o en un montón. Cada fila del índice no agrupado contiene un valor de clave no agrupada y un localizador de fila. Este
localizador apunta a la fila de datos del índice agrupado o el montón que contiene el valor de clave. Las filas del índice se almacenan en el mismo orden que los valores de la clave del índice, pero no se garantiza que las filas de datos estén en un determinado orden a menos que se cree un índice agrupado en la tabla.
Único Un índice único garantiza que la clave de índice no contenga valores duplicados y, por tanto, cada fila de la tabla o vista es en cierta forma única.
Tanto los índices agrupados como los no agrupados pueden ser únicos.
Índice con
columnas incluidas Índice no agrupado que se extiende para incluir columnas sin clave además de las columnas de clave. Vistas indizadas Un índice en una vista materializa (ejecuta) la vista, y el
conjunto de resultados se almacena de forma
permanente en un índice agrupado único, del mismo modo que se almacena una tabla con un índice agrupado. Los índices no agrupados de la vista se pueden agregar una vez creado el índice agrupado. Texto Tipo especial de índice funcional basado en símbolos
(token) que crea y mantiene el servicio del Motor de texto completo de Microsoft para SQL Server
(MSFTESQL). Proporciona la compatibilidad adecuada para búsquedas de texto complejas en datos de
cadenas de caracteres.
XML Representación dividida y permanente de los objetos XML binarios grandes (BLOB) de la columna de tipo de datos xml.
Procedimientos Almacenados
Cuando crea una aplicación con Microsoft SQL Server 2005, el lenguaje de programación Transact-SQL es la principal interfaz de programación entre las aplicaciones y la base de datos de Microsoft SQL Server. Cuando utiliza
programas Transact-SQL, dispone de dos métodos para almacenar y ejecutar los programas.
Puede almacenar los programas localmente y crear aplicaciones que envían los comandos a SQL Server y procesan los resultados.
Puede almacenar los programas como procedimientos almacenados en SQL Server y crear aplicaciones que ejecutan los procedimientos almacenados y procesan los resultados.
Los procedimientos almacenados de Microsoft SQL Server son similares a los procedimientos de otros lenguajes de programación en el sentido en que pueden:
Aceptar parámetros de entrada y devolver varios valores en forma de parámetros de salida al lote o al procedimiento que realiza la llamada.
Contener instrucciones de programación que realicen operaciones en la base de datos, incluidas las llamadas a otros procedimientos.
Devolver un valor de estado a un lote o a un procedimiento que realiza una llamada para indicar si la operación se ha realizado correctamente o se han producido errores (y el motivo de éstos).
Puede utilizar la instrucción EXECUTE de Transact-SQL para ejecutar un procedimiento almacenado. Los procedimientos almacenados difieren de las funciones en que no devuelven valores en lugar de sus nombres ni pueden utilizarse directamente en una expresión.
Utilizar procedimientos almacenados en SQL Server en vez de programas Transact-SQL almacenados localmente en equipos cliente presenta las siguientes ventajas:
Se registran en el servidor.
Pueden incluir atributos de seguridad (como permisos) y cadenas de propiedad; además se les pueden asociar certificados. Los usuarios pueden disponer de permiso para ejecutar un procedimiento almacenado sin necesidad de contar con permisos directos en los objetos a los que se hace referencia en el procedimiento.
Mejoran la seguridad de la aplicación. Los procedimientos almacenados con parámetros pueden ayudar a proteger la aplicación ante ataques por inyección de código SQL.
Permiten una programación modular. Puede crear el procedimiento una vez y llamarlo desde el programa tantas veces como desee. Así, puede mejorar el mantenimiento de la aplicación y permitir que las aplicaciones tengan acceso a la base de datos de manera uniforme.
Constituyen código con nombre que permite el enlace diferido. Esto proporciona un nivel de direccionamiento indirecto que facilita la evolución del código.
Pueden reducir el tráfico de red. Una operación que necesite centenares de líneas de código Transact-SQL puede realizarse mediante una sola instrucción que ejecute el código en un procedimiento, en vez de enviar cientos de líneas de código por la red.
Tipos de Procedimientos Almacenados
En Microsoft SQL Server 2005 hay disponibles varios tipos de procedimientos almacenados. En este tema se describen de forma resumida los tipos de procedimientos almacenados y se incluyen ejemplos de cada uno de ellos.
Procedimientos almacenados definidos por el usuario
Los procedimientos almacenados son módulos o rutinas que encapsulan código para su reutilización. Un procedimiento almacenado puede incluir parámetros de entrada, devolver resultados tabulares o escalares y mensajes para el cliente, invocar instrucciones de lenguaje de definición de datos (DDL) e instrucciones de lenguaje de manipulación de datos (DML), así como
devolver parámetros de salida. En SQL Server 2005 existen dos tipos de procedimientos almacenados: Transact-SQL o CLR.
Transact-SQL
Un procedimiento almacenado Transact-SQL es una colección guardada de instrucciones Transact-SQL que puede tomar y devolver los parámetros proporcionados por el usuario. Por ejemplo, un procedimiento almacenado puede contener las instrucciones necesarias para insertar una nueva fila en una o más tablas según la información suministrada por la aplicación cliente o es posible que el procedimiento almacenado devuelva datos de la base de datos a la aplicación cliente. Por ejemplo, una aplicación Web de comercio electrónico puede utilizar un procedimiento almacenado para devolver información acerca de determinados productos en función de los criterios de búsqueda especificados por el usuario en línea.
CLR
Un procedimiento almacenado CLR es una referencia a un método Common Language Runtime (CLR) de Microsoft .NET Framework que puede aceptar y devolver parámetros suministrados por el usuario. Se implementan como métodos públicos y estáticos en una clase de un ensamblado de .NET Framework. Para obtener más información, vea Procedimientos almacenados CLR (en inglés).
Procedimientos almacenados del sistema
Muchas de las actividades administrativas en SQL Server 2005 se realizan mediante un tipo especial de procedimiento conocido como procedimiento almacenado del sistema. Por ejemplo, sys.sp_changedbowner es un procedimiento almacenado del sistema. Los procedimientos almacenados del sistema se almacenan físicamente en la base de datos Resource e incluyen el prefijo sp_.
Los procedimientos almacenados del sistema aparecen de forma lógica en el esquema sys de cada base de datos definida por el usuario y el sistema. En SQL Server 2005, los permisos GRANT, DENY y REVOKE se pueden aplicar a los procedimientos almacenados del sistema. Para obtener una lista
completa de los procedimientos almacenados del sistema, vea Procedimientos almacenados del sistema (Transact-SQL).
SQL Server admite los procedimientos almacenados del sistema que
proporcionan una interfaz desde SQL Server a los programas externos para varias actividades de mantenimiento. Estos procedimientos almacenados extendidos utilizan el prefijo xp_.
Funciones definidas por el Usuario
Al igual que las funciones en los lenguajes de programación, las funciones definidas por el usuario de Microsoft SQL Server 2005 son rutinas que aceptan parámetros, realizan una acción, como un cálculo complejo, y devuelven el resultado de esa acción como un valor. El valor devuelto puede ser un valor escalar único o un conjunto de resultados.
Ventajas de las funciones definidas por el usuario
Las ventajas de utilizar las funciones definidas por el usuario en SQL Server son:
Permiten una programación modular. Puede crear la función una vez, almacenarla en la base de datos y llamarla desde el programa tantas veces como desee. Las funciones definidas por el usuario se pueden modificar, independientemente del código de origen del programa.
Permiten una ejecución más rápida. Al igual que los procedimientos almacenados, las funciones definidas por el usuario Transact-SQL reducen el costo de compilación del código Transact-SQL almacenando los planes en la caché y reutilizándolos para ejecuciones repetidas. Esto significa que no es necesario volver a analizar y optimizar la función definida por el usuario con cada uso, lo que permite obtener tiempos de ejecución mucho más rápidos. Las funciones CLR ofrecen una ventaja de rendimiento importante sobre las funciones Transact-SQL para tareas de cálculo, manipulación de cadenas y lógica empresarial. Las funciones Transact-SQL se adecuan mejor a la lógica intensiva del acceso a datos.
Pueden reducir el tráfico de red. Una operación que filtra datos basándose en restricciones complejas que no se puede expresar en una sola expresión escalar se puede expresar como una función. La función se puede invocar en la cláusula WHERE para reducir el número de filas que se envían al cliente.
Componentes de una función definida por el usuario
En SQL Server 2005, las funciones definidas por el usuario se pueden escribir en Transact-SQL, o en cualquier lenguaje de programación .NET. Para obtener más información acerca del uso de lenguajes .NET en funciones, vea CLR User-Defined Functions.
Todas las funciones definidas por el usuario tienen la misma estructura de dos partes: un encabezado y un cuerpo. La función toma cero o más parámetros de entrada y devuelve un valor escalar o una tabla. El encabezado define:
Nombre de función con nombre de propietario o esquema opcional Nombre del parámetro de entrada y tipo de datos
Opciones aplicables al parámetro de entrada
Tipo de datos de parámetro devueltos y nombre opcional Opciones aplicables al parámetro devuelto
El cuerpo define la acción o la lógica que la función va a realizar. Contiene: Una o más instrucciones Transact-SQL que ejecutan la lógica de la función Una referencia a un ensamblado .NET
Tipos de funciones
SQL Server 2005 admite funciones definidas por el usuario y funciones del sistema integradas.
Funciones escalares
Las funciones escalares definidas por el usuario devuelven un único valor de datos del tipo definido. Las funciones escalares en línea no tienen cuerpo; el valor escalar es el resultado de una sola instrucción. Para una función escalar de múltiples instrucciones, el cuerpo de la función, definido en un bloque BEGIN...END, contiene una serie de instrucciones Transact-SQL que
devuelven el valor único. El tipo devuelto puede ser de cualquier tipo de datos excepto text, ntext, image, cursor y timestamp.
Funciones con valores de tabla
Las funciones con valores de tabla definidas por el usuario devuelven un tipo de datos table. Las funciones con valores de tabla en línea no tienen cuerpo; la tabla es el conjunto de resultados de una sola instrucción SELECT.
Funciones integradas
SQL Server proporciona las funciones integradas para ayudarle a realizar diversas operaciones. No se pueden modificar. Puede utilizar funciones integradas en instrucciones Transact-SQL para:
Tener acceso a información de las tablas del sistema de SQL Server sin tener acceso a las tablas del sistema directamente.
Realizar tareas habituales como SUM, GETDATE o IDENTITY.
Las funciones integradas devuelven tipos de datos escalares o table. Por ejemplo, @@ERROR devuelve 0 si la última instrucción Transact-SQL se ejecutó correctamente. Si la instrucción generó un error, @@ERROR
devuelve el número de error. Y la función SUM(parameter) devuelve la suma de todos los valores del parámetro.
Sinónimos
Microsoft SQL Server 2005 incorpora el concepto de sinónimo. Un sinónimo es un nombre alternativo para un objeto de ámbito de esquema. Las
aplicaciones cliente pueden utilizar un nombre de una sola parte para hacer referencia a un objeto base utilizando un sinónimo en lugar de utilizar un nombre de dos, tres o cuatro partes para hacer referencia al objeto base. Un sinónimo es un objeto de base de datos que sirve para los siguientes objetivos:
Proporciona un nombre alternativo para otro objeto de base de datos, denominado objeto base, que puede existir en un servidor local o remoto. Proporciona una capa de abstracción que protege una aplicación cliente de cambios realizados en el nombre o la ubicación del objeto base.
Transacción
Una transacción es una secuencia de operaciones realizadas como una sola unidad lógica de trabajo. Una unidad lógica de trabajo debe exhibir cuatro propiedades, conocidas como propiedades de atomicidad, coherencia, aislamiento y durabilidad (ACID), para ser calificada como transacción.
Atomicidad. Una transacción debe ser una unidad atómica de trabajo, tanto si se realizan todas sus modificaciones en los datos, como si no se realiza ninguna de ellas.
Coherencia. Cuando finaliza, una transacción debe dejar todos los datos en un estado coherente. En una base de datos relacional, se deben aplicar todas las reglas a las modificaciones de la transacción para mantener la integridad de todos los datos. Todas las estructuras internas de datos, como índices de árbol b o listas doblemente vinculadas, deben estar correctas al final de la transacción.
Aislamiento. Las modificaciones realizadas por transacciones simultáneas se deben aislar de las modificaciones llevadas a cabo por otras transacciones simultáneas. Una transacción reconoce los datos en el estado en que estaban antes de que otra transacción simultánea los modificara o después de que la segunda transacción haya concluido, pero no reconoce un estado intermedio. Esto se conoce como seriabilidad, ya que deriva en la capacidad de volver a cargar los datos iniciales y reproducir una serie de transacciones para finalizar con los datos en el mismo estado en que estaban después de realizar las transacciones originales.
Durabilidad. Una vez concluida una transacción, sus efectos son permanentes en el sistema. Las modificaciones persisten aún en el caso de producirse un error del sistema.
Especificar y exigir transacciones
Los programadores de SQL son los responsables de iniciar y finalizar las transacciones en puntos que exijan la coherencia lógica de los datos. El programador debe definir la secuencia de modificaciones de datos que los dejan en un estado coherente en relación con las reglas corporativas de la organización. El programador incluye estas instrucciones de modificación en una sola transacción de forma que SQL Server 2005 Database Engine (Motor de base de datos de SQL Server 2005) puede exigir la integridad física de la misma.
Es responsabilidad de un sistema de base de datos corporativo, como una instancia de Database Engine (Motor de base de datos), proporcionar los mecanismos que aseguren la integridad física de cada transacción. Database Engine (Motor de base de datos) proporciona:
Servicios de bloqueo que preserven el aislamiento de la transacción.
Servicios de registro que aseguren la durabilidad de la transacción. Aunque se produzca un error en el hardware del servidor, el sistema operativo o la instancia de Database Engine (Motor de base de datos), la instancia utiliza registros de transacciones, al reiniciar, para revertir automáticamente las transacciones incompletas al punto en que se produjo el error del sistema. Características de administración de transacciones que exigen la atomicidad y coherencia de la transacción. Una vez iniciada una transacción, debe concluirse correctamente; en caso contrario, la instancia de Database Engine (Motor de base de datos) deshará todas las modificaciones de datos realizadas desde que se inició la transacción.
Tipos de datos
Los objetos que contienen datos tienen asociado un tipo de datos que define la clase de datos, por ejemplo, carácter, entero o binario, que puede contener el objeto. Los siguientes objetos tienen tipos de datos:
Columnas de tablas y vistas.
Parámetros de procedimientos almacenados. Variables.
Funciones de Transact-SQL que devuelven uno o más valores de datos de un tipo de datos específico.
Procedimientos almacenados que devuelven un código, que siempre es de tipo integer.
Al asignar un tipo de datos a un objeto se definen cuatro atributos del objeto: El tipo de datos que contiene el objeto.
La longitud o tamaño del valor almacenado.
La precisión del número (sólo tipos de datos numéricos). La escala del número (sólo tipos de datos numéricos).
Todos los datos almacenados en Microsoft SQL Server 2005 deben ser compatibles con uno de estos tipos de datos básicos.
También pueden crearse dos tipos de datos definidos por el usuario:
Los tipos de datos de alias se crean a partir de tipos de datos básicos. Proporcionan un mecanismo para aplicar un nombre a un tipo de datos que sea más descriptivo que los tipos de valores que va a contener el objeto. Esto puede facilitar al administrador de la base de datos o al programador entender el uso que se piensa de cualquier objeto que se defina con el tipo de datos.
Los tipos de datos definidos por el usuario CLR se basan en tipos de datos creados en código administrado y cargados en un ensamblado de SQL Server.
Los tipos de datos de SQL Server 2005 se organizan en las siguientes categorías:
Numéricos exactos o bigint o decimal o int
o numeric o smallint o money o tinyint o smallmoney o bit
Cadenas de caracteres Unicode o nchar o ntext o nvarchar Numéricos aproximados o float o real Cadenas binarias o binary o image o varbinary Fecha y hora o datetime o smalldatetime Otros tipos de datos
o cursor o timestamp o sql_variant o uniqueidentifier o table o xml Cadenas de caracteres o char o text o varchar
En SQL Server 2005, según las características de almacenamiento, algunos tipos de datos están designados como pertenecientes a los siguientes grupos:
• Tipos de datos de valores grandes: varchar(max), nvarchar(max) y
varbinary(max)
• Tipos de datos de objetos grandes: text, ntext, image, varchar(max),