• No se han encontrado resultados

67968713-SQL-2005-Completo

N/A
N/A
Protected

Academic year: 2021

Share "67968713-SQL-2005-Completo"

Copied!
630
0
0

Texto completo

(1)

2007

Programa 5 Estrellas

SQL Server 2005

Estrella 1

Unidad 1

Introducción a las bases de

datos

(2)

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

(3)

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

(4)

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

(5)

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

(6)

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

(7)

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

(8)

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

(9)

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

(10)

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

(11)

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

(12)

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

(13)

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

(14)

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

(15)

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.

(16)

 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

(17)

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.

(18)

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.

(19)

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.

(20)

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.

(21)

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

(22)

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.

(23)

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.

(24)

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

(25)

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

(26)

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.

(27)

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

(28)

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.

(29)

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_.

(30)

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.

(31)

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

(32)

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.

(33)

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.

(34)

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

(35)

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),

Referencias

Documento similar

a) Se podría migrar a un manejador de bases de datos más potente como Microsoft SQL Server. b) Se puede hacer que los sistemas sean indispensable para cualquier encargado de la

Debido al riesgo de producir malformaciones congénitas graves, en la Unión Europea se han establecido una serie de requisitos para su prescripción y dispensación con un Plan

Como medida de precaución, puesto que talidomida se encuentra en el semen, todos los pacientes varones deben usar preservativos durante el tratamiento, durante la interrupción

The part I assessment is coordinated involving all MSCs and led by the RMS who prepares a draft assessment report, sends the request for information (RFI) with considerations,

1.- El diamante tallado mas grande del mundo es la Primera Estrella de África (montada en el cetro real británico y guardado en la Torre de Londres). Su volumen es de 1.84

1 de 26.. Cálculo Relacional Orientado a Tuplas. Equivalencia entre Cálculo Relacional y Álgebra Relacional: El Algoritmo de Reducción de Codd... Tema

Esta herramienta gratuita facilita las tareas necesarias para la gestión de Microsoft SQL Server Express, permitiendo modificar las configuraciones de la base de datos y

Al hacer consultas a la base de datos, SQL permite utilizar operaciones algebraicas