Diseño y programación de bases de datos con SQL Server 2008 (ejemplo)

30
Diseño y programación de bases de datos con SQL Server 2008 Pedro López-Belmonte / Aroa Solana Ejemplo de lectura

Transcript of Diseño y programación de bases de datos con SQL Server 2008 (ejemplo)

Page 1: Diseño y programación de bases de datos con SQL Server 2008 (ejemplo)

Diseño y programación de bases dedatos con SQL Server 2008

Pedro López-Belmonte / Aroa Solana

Ejem

plo d

e lec

tura

Page 2: Diseño y programación de bases de datos con SQL Server 2008 (ejemplo)

Sipnosis

En este manual se tratan las diferentes tareas necesarias para llevar a cabo el diseño de una basede datos, y su implementación en SQL Server 2008.

Desde las tareas de diseño de los diferentes modelos, hasta la implementación física de losdiseños, pasando por la creación de objetos de base de datos, procedimientos almacenados,funciones definidas por el usuario, desencadenadores o el tipo de dato XML, se abordan todoslos temas necesarios para dejar en perfecto funcionamiento cualquier base de datos sobre SQLServer 2008.

También se exploran las características que aporta la última versión del sistema gestor de basede datos de Microsoft, como la integración con .NET 3.5 (objetos SQL CLR), o las nuevasaplicaciones del servidor, como los Reporting Services, Notification Services o los IntegrationServices, entre otras muchas novedades como los nuevos tipos de datos espaciales muy útilespara almacenar datos cartográficos.

Pedro López-Belmonte es Licenciado en Ciencias Físicas por laUniversidad Complutense de Madrid, con más de 8 años de experienciaen el mundo del desarrollo, consultoría y formación. Es especialista enherramientas de desarrollo .NET y bases de datos. Ha participado ennumerosos proyectos de desarrollo en entornos corporativos demediano y gran tamaño con .NET, SQL Server y SharePoint.Cuenta con varias certificaciones, entre las que se encuentran MCAD,MCTS SQL Sever & SharePoint. También cuenta con la certificaciónMCT, y desde el comienzo de su carrera profesional ha impartidoformación, una de sus pasiones.

Aroa Solana Ruiz es Microsoft Certified IT Professional en DatabaseDeveloper, también Microsoft Certified Technology Specialist en SQLServer 2005, .NET Framework 3.5, Windows Forms Applications,SQL Server 2005, al igual que Database Development en SQL Server2008.

Actualmente ostenta la certificación MCT (Microsoft CertifiedTrainer) que la permite impartir un gran número de cursos oficiales deMicrosoft y trabajar como formadora en Alhambra-Eidos.

Ha impartido formación sobre la tecnología .NET, desarrollo deaplicaciones Windows, Web, ADO, Distribuidas, WPF, WCF, WWF, Silverlight y UML, porotra parte imparte formación en administración de bases de datos SQL Server y desarrollo debases de datos SQL Server, tanto en 2005 como en 2008. Además posee experiencia en J2SE yJ2EE. Dentro de la gestión de procesos posee la certificación ITIL V2 Foundations.

Ejem

plo d

e lec

tura

Page 3: Diseño y programación de bases de datos con SQL Server 2008 (ejemplo)

Luarna

Diseño y programación de bases de datos con SQL Server 2008

© Pedro López-Belmonte – Alhambra Eidos© Aroa Solana – Alhambra Eidos© De esta edición: 2009, Luarna Ediciones, S.L.

www.luarna.com

Madrid, octubre de 2009

ISBN: 978-84-92684-59-5

Versión 1.0 (21-10-2009)

Cualquier forma de reproducción, distribución, comunicación pública o transformación de esta obra solo puede serrealizada con la autorización de sus titulares, salvo excepción prevista por la ley. Diríjase a CEDRO (Centro Españolde Derechos Reprográficos, www.cedro.org) si necesita fotocopiar, escanear o hacer copias digitales de algúnfragmento de esta obra.Ejem

plo d

e lec

tura

Page 4: Diseño y programación de bases de datos con SQL Server 2008 (ejemplo)

Dedicatoria de Aroa Solana

Este libro, se lo dedico a las amigas que hice en la Facultad, sin ellas hubiera acabado loca,además de que siempre han estado ahí tanto para lo bueno como para lo malo, por lo que quiero

decirles ¡Gracias Elena, Laura, Ana y Vita!.

Ejem

plo d

e lec

tura

Page 5: Diseño y programación de bases de datos con SQL Server 2008 (ejemplo)

Diseño y programación de bases de datoscon SQL Server 2008

Pedro López-BelmonteAroa Solana

Ejem

plo d

e lec

tura

Page 6: Diseño y programación de bases de datos con SQL Server 2008 (ejemplo)

Ejem

plo d

e lec

tura

Page 7: Diseño y programación de bases de datos con SQL Server 2008 (ejemplo)

P á g i n a | 7

IndiceIntroducción .................................................................................................................................... 15

Introducción .................................................................................................................................. 15Introducción a SQL Server 2008 ................................................................................................... 16Nuevas Características .................................................................................................................. 17

Funciones Básicas ..................................................................................................................... 17Funciones de Business Intelligence............................................................................................ 18

Herramientas de SQL Server 2008 ................................................................................................ 18Libros en pantalla ...................................................................................................................... 18SQL Server Configuration Manager .......................................................................................... 18El SQL Server Management Studio ........................................................................................... 19

Creación de los modelos Conceptual, Lógico y Físico .................................................................... 20Modelo Conceptual ....................................................................................................................... 20Etapas del diseño conceptual ......................................................................................................... 21El modelo entidad / relación .......................................................................................................... 21Ejemplos prácticos de diseño conceptual ....................................................................................... 25Modelo Lógico ............................................................................................................................. 29Paso del esquema conceptual al esquema lógico estándar .............................................................. 30Etapas en el diseño lógico ............................................................................................................. 31Particionamiento horizontal de relaciones ...................................................................................... 32Particionamiento vertical de relaciones .......................................................................................... 35Particionamiento mixto ................................................................................................................. 37Teoría de la normalización ............................................................................................................ 38Ejemplos prácticos de normalización ............................................................................................. 42Proceso de desnormalización ......................................................................................................... 47Modelo Físico ............................................................................................................................... 48Estrategias en el diseño físico ........................................................................................................ 48Conceptos básicos sobre gestión de ficheros .................................................................................. 49Organización de ficheros ............................................................................................................... 49Técnicas para el aumento de eficiencia .......................................................................................... 50

Seguridad ........................................................................................................................................ 52Inicios de sesión ............................................................................................................................ 52Roles ............................................................................................................................................ 62

Funciones fijas de servidor ........................................................................................................ 62Funciones de base de datos ........................................................................................................ 64Funciones de aplicación ............................................................................................................ 65

Esquemas ...................................................................................................................................... 68

Creación de una base de datos ........................................................................................................ 72¿Qué es una Base de Datos? .......................................................................................................... 72

Archivos de una Base de Datos ................................................................................................. 73Páginas ..................................................................................................................................... 73Extensiones ............................................................................................................................... 74Objetos de la Base de Datos ...................................................................................................... 75

Bases de Datos de Sistema ............................................................................................................ 76Master ....................................................................................................................................... 76TempDB ................................................................................................................................... 76Model ....................................................................................................................................... 77MSDB ...................................................................................................................................... 77

Elementos básicos para la creación de bases de datos .................................................................... 77Management Studio .................................................................................................................. 77Ejem

plo d

e lec

tura

Page 8: Diseño y programación de bases de datos con SQL Server 2008 (ejemplo)

P á g i n a | 8

CREATE DATABASE ............................................................................................................. 80Grupos de archivos .................................................................................................................... 88

Creación de un grupo de archivos .......................................................................................... 89Uso de los grupos de archivos ................................................................................................ 90

Esquemas .................................................................................................................................. 91

Creación de tablas ........................................................................................................................... 94Tipos de datos en SQL Server 2008 ............................................................................................... 95

CHAR ....................................................................................................................................... 95NCHAR .................................................................................................................................... 95VARCHAR ............................................................................................................................... 95NVARCHAR ............................................................................................................................ 96TEXT........................................................................................................................................ 96NTEXT ..................................................................................................................................... 96IMAGE ..................................................................................................................................... 96INT ........................................................................................................................................... 96BIGINT .................................................................................................................................... 96SMALLINT .............................................................................................................................. 96TINYINT .................................................................................................................................. 97DECIMAL/NUMERIC ............................................................................................................. 97FLOAT ..................................................................................................................................... 97REAL ....................................................................................................................................... 97MONEY ................................................................................................................................... 97SMALLMONEY ...................................................................................................................... 97DATETIME .............................................................................................................................. 97SMALLDATETIME ................................................................................................................. 98TIMESTAMP ........................................................................................................................... 98UNIQUEIDENTIFIER .............................................................................................................. 98BINARY ................................................................................................................................... 98VARBINARY ........................................................................................................................... 98BIT ........................................................................................................................................... 98XML ......................................................................................................................................... 99CURSOR .................................................................................................................................. 99TABLE ..................................................................................................................................... 99SQL_VARIANT ....................................................................................................................... 99

Creación de tablas ......................................................................................................................... 99Modificar tablas .......................................................................................................................... 100Eliminar tablas ............................................................................................................................ 101Propiedades de las columnas ....................................................................................................... 102

Valores DEFAULT ................................................................................................................. 102Valores IDENTITY ................................................................................................................. 103

Integridad de los datos ................................................................................................................ 104Integridad de Entidad .............................................................................................................. 104Integridad de Dominio............................................................................................................. 105Integridad Referencial ............................................................................................................. 105Tipos de restricciones .............................................................................................................. 105

PRIMARY KEY ................................................................................................................. 105FOREIGN KEY .................................................................................................................. 107Restricción UNIQUE........................................................................................................... 112Restricciones CHECK ......................................................................................................... 113Objetos RULE y DEFAULT................................................................................................ 116

RULE .............................................................................................................................. 116DEFAULT ...................................................................................................................... 117

Consideraciones sobre las restricciones ................................................................................... 117

Creación de Índices ....................................................................................................................... 119Ejem

plo d

e lec

tura

Page 9: Diseño y programación de bases de datos con SQL Server 2008 (ejemplo)

P á g i n a | 9

¿Qué es un índice? ...................................................................................................................... 119Tipos de índices .......................................................................................................................... 120

Índices Agrupados (Clustered) ................................................................................................ 120Índices No Agrupados (Nonclustered) ..................................................................................... 121

Índices no agrupados sobre una tabla ................................................................................... 122Índices no agrupados sobre un índice agrupado .................................................................... 122Índices únicos ...................................................................................................................... 123

Creación de índices ..................................................................................................................... 123Especificar orden para los campos ........................................................................................... 125

Include ................................................................................................................................ 125Factor de relleno .................................................................................................................. 126Rellenar Índice .................................................................................................................... 127Pasar por alto claves duplicadas ........................................................................................... 127Volver a generar el índice .................................................................................................... 128Volver a calcular estadísticas ............................................................................................... 128Almacenar resultados de orden intermedio en la base de datos tempdb ................................. 129Permitir procesamiento en línea de instrucciones DML ........................................................ 130Usar bloqueos de fila y de página al tener acceso al índice ................................................... 130Grado máximo de paralelismo ............................................................................................. 130Almacenamiento del índice.................................................................................................. 131

Partición de índices y tablas ........................................................................................................ 131Funciones de partición............................................................................................................. 132Esquemas de partición ............................................................................................................. 133Crear tablas e índices particionados ......................................................................................... 133Modificar funciones y esquemas de partición .......................................................................... 135

Insertar y extraer tablas de particiones ................................................................................. 135Mantenimiento de Particiones .............................................................................................. 137

Creación de vistas ......................................................................................................................... 138Como crear vistas........................................................................................................................ 138

Encriptación de la definición ................................................................................................... 143Enlazar a un esquema .............................................................................................................. 144Comprobar criterios ................................................................................................................ 144

Modificar y eliminar vistas .......................................................................................................... 145Vistas indexadas ......................................................................................................................... 145

Procedimientos Almacenados ....................................................................................................... 147Creación de Procedimientos Almacenados .................................................................................. 148

Llamadas a procedimientos ..................................................................................................... 149Procedimientos almacenados parametrizados........................................................................... 149Valor de Retorno ..................................................................................................................... 151Opciones Adicionales .............................................................................................................. 152

Estructuras de control de flujo y errores ...................................................................................... 153IF…ELSE ............................................................................................................................... 153WHILE…BREAK .................................................................................................................. 154CASE...................................................................................................................................... 155WAITFOR .............................................................................................................................. 155

Gestión de Errores ...................................................................................................................... 156La variable @@ERROR ......................................................................................................... 157RAISERROR .......................................................................................................................... 160

Mensaje ............................................................................................................................... 161Severidad ............................................................................................................................ 162Estado ................................................................................................................................. 162WITH.................................................................................................................................. 162

Consideraciones de seguridad y rendimiento ............................................................................... 165Ejem

plo d

e lec

tura

Page 10: Diseño y programación de bases de datos con SQL Server 2008 (ejemplo)

P á g i n a | 10

Seguridad ................................................................................................................................ 166Rendimiento............................................................................................................................ 166Depuración ............................................................................................................................. 167

Funciones definidas por el usuario ............................................................................................... 172Funciones escalares ..................................................................................................................... 173Funciones de tabla ...................................................................................................................... 176Funciones Deterministas y No Deterministas ............................................................................... 179Depuración de funciones definidas por el usuario ........................................................................ 181

Tipos de datos definidos por el usuario ........................................................................................ 183Creación del tipo de dato definido por el usuario ......................................................................... 183

TSQL ...................................................................................................................................... 184Management Studio ................................................................................................................ 185

Desencadenadores (triggers) ......................................................................................................... 191Tipos de Desencadenadores ........................................................................................................ 192

Desencadenadores DML ......................................................................................................... 192¿Restricciones?.................................................................................................................... 193Tablas de soporte ................................................................................................................. 194

Creación de un desencadenador ................................................................................................... 194Comprobar columnas .............................................................................................................. 197

Desencadenadores DDL .............................................................................................................. 199Los desencadenadores en el Management Studio ......................................................................... 201Consideraciones de rendimiento .................................................................................................. 205

Diseño de objetos SQL CLR ......................................................................................................... 206Integración con CLR ................................................................................................................... 206

Habilitar la integración ............................................................................................................ 208Visual Studio 2008 .................................................................................................................. 208

Atributos .NET .................................................................................................................... 212Implementación .......................................................................................................................... 213

Implementar ensamblados ....................................................................................................... 213Procedimientos almacenados CLR .............................................................................................. 216Funciones CLR ........................................................................................................................... 219

SqlFunction ............................................................................................................................. 220Funciones escalares ................................................................................................................. 221Funciones de tabla ................................................................................................................... 223

Agregados................................................................................................................................... 224SqlUserDefinedAggregate ....................................................................................................... 225Init .......................................................................................................................................... 226Accumulate ............................................................................................................................. 226Merge ..................................................................................................................................... 226Terminate ................................................................................................................................ 226

Desencadenadores CLR .............................................................................................................. 227SqlTrigger ............................................................................................................................... 229TriggerContext ........................................................................................................................ 229

SQL Server 2008 Reporting Services ........................................................................................... 231Arquitectura de los Servicios de Informes ................................................................................... 231

Capa de aplicación .................................................................................................................. 232Navegador de Internet ......................................................................................................... 232Herramientas de Informes .................................................................................................... 233Business Intelligence Development Studio........................................................................... 234Herramienta de Configuración de Superficie ........................................................................ 234Herramienta de Configuración del Servidor de Informes ...................................................... 235Ejem

plo d

e lec

tura

Page 11: Diseño y programación de bases de datos con SQL Server 2008 (ejemplo)

P á g i n a | 11

SQL Server Management Studio .......................................................................................... 235Aplicaciones personalizadas ................................................................................................ 236

Capa de servidor ..................................................................................................................... 236Servicio Web ....................................................................................................................... 236Servicio de Windows ........................................................................................................... 236Interfaces de programación .................................................................................................. 236Procesadores ....................................................................................................................... 236Extensiones ......................................................................................................................... 237

Autenticación .................................................................................................................. 237Extensiones de Proceso de datos ...................................................................................... 237Extensiones de presentación ............................................................................................ 237Extensiones de Proceso de Informes ................................................................................ 237Extensiones de Distribución ............................................................................................. 237

Capa de datos .......................................................................................................................... 237Bases de datos del servidor .................................................................................................. 237

Diseño de Informes ..................................................................................................................... 238Asistente para la Generación de Informes ................................................................................ 238

Diseño de un informe .................................................................................................................. 244Elementos de Datos ................................................................................................................. 244

Origen de datos (DataSource) .............................................................................................. 245Conjunto de datos (dataset) .................................................................................................. 246

Elementos del Informe ............................................................................................................ 246Regiones de datos ................................................................................................................ 247Elementos independientes.................................................................................................... 248

Estructura de un informe ............................................................................................................. 248Implementación de un informe .................................................................................................... 252

Soporte para consultas .................................................................................................................. 256Consultas para la devolución de datos ......................................................................................... 257

La cláusula WHERE ............................................................................................................... 258ORDER BY ............................................................................................................................ 260GROUP BY ............................................................................................................................ 261Agregados ............................................................................................................................... 262AVG ....................................................................................................................................... 262MIN / MAX ............................................................................................................................ 263COUNT .................................................................................................................................. 264Cláusula HAVING .................................................................................................................. 264Cláusula DISTINCT................................................................................................................ 265

Modificación de datos ................................................................................................................. 265INSERT .................................................................................................................................. 266UPDATE ................................................................................................................................ 266DELETE ................................................................................................................................. 267

Combinación de tablas ................................................................................................................ 267INNER JOIN .......................................................................................................................... 268OUTER JOIN ......................................................................................................................... 269FULL JOIN............................................................................................................................. 270UNION, EXCEPT & INTERSECT ......................................................................................... 271

Caso práctico .............................................................................................................................. 272

LINQ to SQL ................................................................................................................................ 274Modelo Objeto/Relacional........................................................................................................... 274Herramientas de generación de Entidades .................................................................................... 276

Uso de SQLMetal.................................................................................................................... 276Visual Studio LINQ to SQL Designer ..................................................................................... 278Ejem

plo d

e lec

tura

Page 12: Diseño y programación de bases de datos con SQL Server 2008 (ejemplo)

P á g i n a | 12

Consultar con LINQ to SQL .................................................................................................... 279Resumen ................................................................................................................................. 280

Uso de XML .................................................................................................................................. 281Recuperación de XML mediante FOR XML ............................................................................... 281

Introducción a la cláusula FOR XML ...................................................................................... 282Modo RAW......................................................................................................................... 284

Recuperación de datos en elementos de fila genéricos ...................................................... 284Recuperación de datos como elementos ........................................................................... 285Recuperación de datos utilizando un elemento raíz y nombre de elemento de filapersonalizado................................................................................................................... 285

Modo AUTO ....................................................................................................................... 288Recuperación de datos anidados utilizando el modo AUTO ............................................. 288Recuperación de datos como elementos ........................................................................... 289

Modo EXPLICIT ................................................................................................................ 291Tablas universales ........................................................................................................... 292Definición de asignaciones de columna en una tabla universal ......................................... 292Creación de una consulta para construir la tabla universal ................................................ 293

Modo PATH ....................................................................................................................... 295Recuperación de datos utilizando el modo PATH ............................................................. 295

Fragmentación de XML mediante OPENXML ............................................................................ 296Proceso de fragmentación de datos XML ................................................................................. 297

Procedimientos Almacenados para administrar árboles de nodos en memoria ...................... 297Creación del árbol mediante sp_xml_preparedocument .................................................... 298Quitar el árbol mediante sp_xml_removedocument .......................................................... 298

Sintaxis de OPENXML ........................................................................................................... 299Uso de una declaración de esquema ..................................................................................... 300

Uso del tipo de datos xml ............................................................................................................ 301El tipo de datos xml................................................................................................................. 302XQuery ................................................................................................................................... 303

Sintaxis de XQuery ............................................................................................................. 303Instrucciones FLOWR ..................................................................................................... 303

Los métodos query, value y exist ............................................................................................. 305El método query .................................................................................................................. 305El método value................................................................................................................... 305El método exists .................................................................................................................. 306

El método modify.................................................................................................................... 306El método nodes ...................................................................................................................... 307

Service Broker .............................................................................................................................. 310¿Qué es el Service Broker?.......................................................................................................... 310

Ventajas de Service Broker ..................................................................................................... 311Usos Típicos de Service Broker ............................................................................................... 311

Arquitectura del sistema de Service Broker ................................................................................. 311Tipo de mensaje ...................................................................................................................... 312Contrato .................................................................................................................................. 312Cola ........................................................................................................................................ 312Servicio................................................................................................................................... 312Programa de Servicio .............................................................................................................. 313

Arquitectura de conversación de Service Broker .......................................................................... 313Mensaje .................................................................................................................................. 314Conversación de diálogo ......................................................................................................... 314Grupo de conversación ............................................................................................................ 314Ruta ........................................................................................................................................ 315Enlace de servicio remoto........................................................................................................ 315Ejem

plo d

e lec

tura

Page 13: Diseño y programación de bases de datos con SQL Server 2008 (ejemplo)

P á g i n a | 13

Proceso de conversación de Service Broker ................................................................................. 315Arquitectura de seguridad de Service Broker ............................................................................... 317

Certificados ............................................................................................................................. 317Seguridad de transporte ........................................................................................................... 317Seguridad de Diálogo .............................................................................................................. 317

Creación de objetos de Service Broker ........................................................................................ 318Sintaxis para crear tipos de mensajes ....................................................................................... 318Sintaxis para crear contratos .................................................................................................... 319Sintaxis para crear colas .......................................................................................................... 321Sintaxis para crear servicios .................................................................................................... 322

Envío y recepción de mensajes .................................................................................................... 323Sintaxis para enviar mensajes .................................................................................................. 323

Sintaxis para recibir mensajes ..................................................................................................... 325

FILESTREAM .............................................................................................................................. 329Uso de FileStream ....................................................................................................................... 330

Almacenamiento de FileStream ............................................................................................... 330Seguridad Integrada ............................................................................................................. 330Administración Integrada .................................................................................................... 331

Habilitar FILESTREAM ............................................................................................................. 331Administrar datos FILESTREAM usando Transact-SQL ............................................................. 332

Actualizar datos FILESTREAM .............................................................................................. 333Eliminar datos FILESTREAM ................................................................................................ 333

Administrar daos FILESTREAM usando Win32 ......................................................................... 333Leer la ruta de acceso al archivo .............................................................................................. 333Leer el contexto de la transacción ............................................................................................ 334Obtener un identificador de archivos de Win32 ....................................................................... 334

La API OpenSqlFilestream .................................................................................................. 334Parámetros....................................................................................................................... 335FilestreamPath ................................................................................................................ 335DesiredAccess ................................................................................................................. 335OpenOptions ................................................................................................................... 335FilestreamTransactionContext ......................................................................................... 336FilestreamTransactionContextLength .............................................................................. 336AllocationSize .................................................................................................................. 336

Conflictos entre Win32 y Transact-SQL ...................................................................................... 336Ejemplos ................................................................................................................................. 337

Abrir un BLOB de FILESTREAM para acceso de escritura ................................................. 337Abrir un BLOB de FILESTREAM para acceso de lectura .................................................... 337Abrir y cerrar varios archivos BLOB de FILESTREAM ...................................................... 338No se puede cerrar un cursor................................................................................................ 338

Cómo crear una base de datos habilitada para FILESTREAM ..................................................... 339Crear una base de datos habilitada para FILESTREAM ........................................................... 339

Cómo mover una base de datos habilitada para FILESTREAM ................................................... 340Crear una tabla para almacenar datos FILESTREAM .................................................................. 341Prácticas recomendadas............................................................................................................... 341

Configuración física y mantenimiento ..................................................................................... 341Diseño físico de base de datos ................................................................................................. 342

Datos Espaciales ............................................................................................................................ 343Datos espaciales .......................................................................................................................... 343

Poblar datos espaciales ............................................................................................................ 344GML ....................................................................................................................................... 347

Objetos Geométricos ........................................................................................................... 347Elementos de GML ................................................................................................................. 350Ejem

plo d

e lec

tura

Page 14: Diseño y programación de bases de datos con SQL Server 2008 (ejemplo)

P á g i n a | 14

Polígonos, delimitadores interiores y Multipolígonos ........................................................... 351Tres Dimensiones ................................................................................................................ 351

Resolución Caso Práctico .............................................................................................................. 356Listado de clientes por comercial ..................................................................................... 356Listado de clientes potenciales por comercial ................................................................... 356Listado de envíos a clientes.............................................................................................. 357Listado de pedidos a proveedores ..................................................................................... 357Listado de productos bajos en stock ................................................................................. 357Total ventas por comercial ............................................................................................... 358

Ejem

plo d

e lec

tura

Page 15: Diseño y programación de bases de datos con SQL Server 2008 (ejemplo)

P á g i n a | 15

Introducción

IntroducciónSQL Server 2008 es la última versión del Sistema Gestor de Bases de Datos de Microsoft para elmercado empresarial. Esta última versión muestra grandes avances con respecto a sus predecesora(sobre todo SQL Server 2000) y, aunque solo está disponible para la plataforma Windows, comienza aser un serio competidor para sistemas como Oracle, orientados a bases de datos de gran tamaño.

Esta última versión cuenta con varias ediciones, incluyendo una versión gratuita (SQL ServerExpress), todas ellas con ediciones de 32 y 64 bit.

SQL Server surgió de la colaboración entre Microsoft y Sybase, además de IBM y Ashton-Tate. Laprimera versión fue desarrollada para OS/2 en 1988, y no era más que una pequeña base de datos. Dehecho, el sistema operativo OS/2 fue desarrollado conjuntamente por IBM y Microsoft para darsoporte a Sybase SQL Server

La primera edición de SQL Server para Windows fue la 4.2 desarrollada en 1993, (compatible conWindows NT). SQL Server 4.2 era una base de datos para pequeños entornos (desktop database), confuncionalidad limitada y no demasiado potente. En 1994, Microsoft y Sybase deciden no continuar suunión con SQL Server. Esto originó una nueva versión de SQL Server por parte de Microsoft en 1995.Ej

emplo

de

lectu

ra

Page 16: Diseño y programación de bases de datos con SQL Server 2008 (ejemplo)

P á g i n a | 16

La primera versión independiente de SQL Server fue la 6.05. En esta versión se introdujeron una seriede mejoras en cuanto a rendimiento y funcionalidad que permitían considerar a este sistema adecuadopara gestionar bases de datos de pequeños negocios o aplicaciones de Internet. La siguiente versión, la6.5, fue lanzada en 1996.

En 1998, Microsoft lanzó SQL Server 7.0, que supuso un cambio en cuanto a su situación en elmercado de los RDBMS. El gran número de mejoras en cuanto a rendimiento, potencia y facilidad deuso, así como la gran cantidad de características y aplicaciones auxiliares, incluidas en el producto sincoste adicional, situaron a SQL Server como alternativa a otros sistemas tales como Oracle o DB2 enel entorno de negocios de tamaño medio.

Con SQL Server 2000, Microsoft terminó de consolidar su posición en el mercado de los SistemasGestores de Bases de Datos. Esta versión ya está dirigida al entorno empresarial, debido a surendimiento, escalabilidad y robustez. Lo bueno es que Microsoft consiguió alcanzar estos objetivossin sacrificar la facilidad de uso y el gran número de herramientas de desarrollo, gestión y análisisincluidas en SQL Server. De hecho, en el año 2001 Oracle cedió su posición de dominio, pasando eltestigo a SQL Server (34% del mercado, contra el 40%). Esta situación siguió su curso en 2002,cuando SQL Server aumentó su cuota al 45% del mercado, mientras que la de Oracle bajaba al 27%.

La última versión de SQL Server es capaz de competir con grandes sistemas como Oracle o DB2.Muchas organizaciones de gran tamaño adoptaron en su día SQL Server 2000 y lo hacen hoy con SQLServer 2005 y 2008, como Xerox, Nasdaq, Groupama, ING, y un largo etc. Para comprender estemovimiento en torno al RDBMS (Relational DataBase Management System) de Microsoft, hay queunir que las cifras de las pruebas rendimiento (benchmarks) a las que se someten a SQL Server seacercan a las cifras de Oracle, junto con la facilidad de uso y coste del sistema de Microsoft, encontraposición con la complejidad y elevado precio del sistema de Oracle.

Introducción a SQL Server 2008SQL Server 2008 incluye una gran cantidad de nuevas características que permiten una gestión másracional y eficaz del mismo, aumentan el rendimiento, la escalabilidad y la estabilidad del servidor y,permiten una configuración avanzada a nivel de servicios, seguridad del servidor, etc.

Entre las nuevas características, quizás la más llamativa sea el soporte para compatibilidad con .NET.Esto permite la programación de ensamblados en C# o Visual Basic 2008 y su ejecución en SQLServer, lo que abre un gran abanico de posibilidades complementando la funcionalidad queproporciona T-SQL.

Además, nos encontramos con soporte completo para XML, incluyendo un nuevo tipo de dato XML,que permite el almacenamiento de documentos de este tipo en formato nativo, y posibilita el uso defunciones de búsqueda y manipulación en código XML, como XQuery o XPath directamente en elpropio campo de la tabla. También permite la validación de la estructura del propio documento contraesquemas XSD.

Las herramientas de configuración y mantenimiento también han sufrido una renovación completa. ElAdministrador Corporativo, o el Analizador de Consultas de SQL Server 2000 dejan paso al SQLServer Management Studio (SSMS), que agrupa y amplia la funcionalidad de ambos. Esta nuevaherramienta permite gestión multiservidor tanto de servidores OLTP como de servidores OLAP ogestión de funciones adicionales. Una nueva característica muy interesante es la posibilidad de crearuna solución, lo que permite una gestión más eficaz de proyectos de desarrollo, así como laintegración con Visual Source Safe, que posibilita el trabajo en grupo y el control de código fuente.

SQL Server incorpora una nueva herramienta denominada Business Intelligence DevelopmentStudio, que no es más que una versión reducida de Visual Studio 2008. Esta nueva herramienta sirveEj

emplo

de

lectu

ra

Page 17: Diseño y programación de bases de datos con SQL Server 2008 (ejemplo)

P á g i n a | 17

para desarrollar proyectos de integración con .NET, o también otros como proyectos de AnalysisServices, Integration Services o Reporting Services.

SQL Server amplia y mejora los Reporting Services (SSRS), que aunque inicialmente fueronconcebidos para aparecer con esta última versión del servidor, Microsoft decidió publicar una versiónreducida para SQL Server 2000. También incluye un mejorado y ampliado entorno para los Serviciosde Integración (SQL Server Integration Services, SSIS), anteriormente conocidos como DataTransformation Services.

Otra de las nuevas características la constituye el Service Broker, que es un entorno de trabajodiseñado para la distribución asíncrona de mensajería.

Todas estas características se agrupan dentro de SQL Server 2005 y ahora en 2008 clasificadas segúnsus distintas ediciones, que describo a continuación:

· Express: Esta edición es la evolución del antiguo MSDE, la versión gratuita de SQL Server2000. Sigue siendo gratuita y, aunque limitada, incorpora un pequeño entorno gráfico deadministración y permite un máximo de 50 conexiones concurrentes (suficiente para cualquierentorno pequeño).

· Workgroup: Está diseñada para entornos y departamentos pequeños y medianos. Poseemuchas de las características de SQL Server, pero no contiene las de alto nivel.

· Standard: Esta versión está destinada al entorno medio. Contiene prácticamente todas lascaracterísticas, como los Servicios de Análisis, o los Servicios de Integración, pero eliminalas opciones de alta disponibilidad, como particionado o indexación online.

· Developer: Esta versión contiene todas las opciones, pero al ser una versión destinada aentornos de prueba y laboratorio, contiene limitaciones en cuanto a CPUs soportadas y alicencias.

· Enterprise: Esta es la versión completa, la más potente, escalable y robusta y, por supuesto, lamás cara. Está destinada al entorno empresarial de tamaño medio-grande, donde elrendimiento, la alta disponibilidad y la escalabilidad son cruciales.

Nuevas CaracterísticasLas nuevas características soportadas por SQL Server 2008 se pueden dividir en dos grandes grupos:Funciones Básicas y Business Intelligence. Cada versión soporta algunas características, exceptuandolas versiones Enterprise y Developer, que como hemos visto antes, las soportan todas. Veamos unresumen de algunas de ellas:

Funciones Básicas· Todas las versiones soportan integración con .NET (CLR), autenticación y autorización

avanzada, optimización automática de Bases de Datos, importación y exportación de datos, elnuevo tipo de dato XML, consultas recursivas, gestión de errores con estructurasTRY…CATCH, la herramienta Express Manager (indicada para la versión Express y esgratuita), conexión dedicada para el administrador, adición de memoria en caliente,encriptación de datos, la herramienta Management Studio, vistas de sistema, herramientas deReporting Services, integración con Microsoft Baseline Security Analyzer (MBSA),replicación (transaccional y de mezcla), Service Broker, procedimientos almacenados, vistas ydesencadenadores, tipos definidos por el usuario, indexación XML nativa, búsquedas de textoEjem

plo d

e lec

tura

Page 18: Diseño y programación de bases de datos con SQL Server 2008 (ejemplo)

P á g i n a | 18

completo en datos XML y manipulación con XQUERY y el Best Practices Analyzer (se puededescargar en: http://www.microsoft.com/downloads/details.aspx?familyid=b352eb1f-d3ca-44ee-893e-9e07339c1f22&displaylang=en)

· La versión Express no soporta búsqueda de texto completo en campos definidos para ello, asícomo la programación de trabajos, o el traslado de los logs de transacciones a otra base dedatos (Log Shipping).

· La versión Workgroup no soporta la funcionalidad de espejo (DB Mirroring), el DatabaseTuning Advisor (sustituye al Index Tunning Wizard), el failover clustering, los Servicios deIntegración, los Servicios de Notificación, y los web services, o soporte para http.

· La versión Standard no soporta particionado de tablas, replicación Oracle, indexación onlinede tablas y vistas, restauración de bases de datos online, operaciones de indexación enparalelo, índices en vistas, integración de flujo de datos, disponibilidad de la base de datos enoperaciones de undo durante la restauración, transformaciones avanzadas como minería dedatos o minería de texto, o optimización avanzada del rendimiento de modelos de minería.

Funciones de Business Intelligence· Todas las versiones proporcionan soporte nativo para web services, Reporting Services

(incluyendo múltiples orígenes de datos), funciones analíticas y optimización de consultas tipoestrella, y el Business Intelligence Development Studio.

· La versión Express no soporta integración con el Management Studio, el profiler y otrasherramientas, y tampoco soporta el generador de informes para el usuario final.

· La versión Workgroup no soporta el modelado de datos según el Modelo DimensionalUnificado (UDM), el Data warehousing, y el Data mining.

· La versión Standard no soporta cacheo automático de datos, suscripciones ligadas a datos,writebacks en dimensiones y celdas, cubos particionados, proceso de cubos en paralelo,sincronización de servidores y escalado externo de servidores de informes.

Herramientas de SQL Server 2008La nueva versión de SQL Server trae consigo un buen puñado de nuevas herramientas, algunasnuevas, y otras simplemente una evolución de las anteriores. Vamos a repasar las más importantes,para conocer su funcionalidad.

Libros en pantallaLos libros en pantalla de SQL Server han sufrido una buena revisión, y ahora utilizan la nueva interfazde ayuda de .NET 2008, que proporciona nuevos modelos de organización de datos, búsquedas porpreferencias, online, en local, y muchas otras opciones.

SQL Server Configuration ManagerEsta herramienta agrupa la funcionalidad de varias en la anterior versión de SQL Server. Básicamente,su ámbito de aplicación se centra en la gestión avanzada de los servicios de soporte de SQL Server,para los cuales presenta un amplio abanico de opciones, y en la configuración de red del servidor.Ej

emplo

de

lectu

ra

Page 19: Diseño y programación de bases de datos con SQL Server 2008 (ejemplo)

P á g i n a | 19

El SQL Server Management StudioEl SQL Server Management Studio es la nueva herramienta de administración de SQL Server, yrepresenta una gran evolución frente a las versiones anteriores. Hereda su aspecto y algo defuncionalidad de Visual Studio 2008, además de integrar un gran número de funciones que antesestaban disponibles como herramientas independientes.

Ejem

plo d

e lec

tura

Page 20: Diseño y programación de bases de datos con SQL Server 2008 (ejemplo)

P á g i n a | 20

Creación de los modelos Conceptual,Lógico y Físico

Modelo ConceptualComo ya se ha visto en el tema anterior, el diseño conceptual, que constituye la primera etapa en eldiseño de una base de datos, consiste en obtener una buena representación de los recursos deinformación de la empresa, con independencia de usuario o aplicaciones en particular y fuera deconsideraciones sobre eficiencia del ordenador. Puesto que no se corresponde con ningún nivel de laarquitectura ANSI/X3/SPARC, sino que es un paso previo, tiende a ser no tenido en cuenta a la horade proceder al diseño de una base de datos. Esto no es aconsejable, ya que el diseño lógico parte delesquema conceptual y, si éste no es correcto, o no representa fielmente la información del mundo real,el esquema de la base de datos no será estable, viéndonos obligados a reajustarlo constantementedebido a las deficiencias arrastradas desde esta etapa de diseño. De ahí la importancia de realizar unbuen esquema conceptual, que represente fielmente las características del mundo real.

Otro error que se suele cometer en esta etapa de diseño es el de considerar aspectos tales como laeficiencia del equipo hardware en el que se vaya a montar la base de datos, o SGBD's concretos. Comoya se ha dicho, el esquema conceptual debe representar la información fuera de consideraciones sobrehardware y sobre el SGBD sobre el que se implementará. Por lo tanto, se pueden establecer lassiguientes características que debe cumplir un buen esquema conceptual:Ej

emplo

de

lectu

ra

Page 21: Diseño y programación de bases de datos con SQL Server 2008 (ejemplo)

P á g i n a | 21

Debe representar fielmente la información del mundo real.

· Es independiente del SGBD

· Es independiente del Hardware

Conviene no olvidar, por lo tanto, que un buen diseño del esquema conceptual, influirá positivamenteen el resto de etapas.

Etapas del diseño conceptualLa fase de diseño conceptual, puede subdividirse a su vez en dos etapas:

1. Etapa de análisis de requisitos: En esta etapa se debe responder a la pregunta "¿Quérepresentar?". El objetivo es elaborar un esquema descriptivo de la realidad, en el que seprovean detalles de los datos a representar. Dicho esquema se obtiene mediante el estudio uobservación del mundo real (estudio de las reglas de la empresa, entrevista a los usuarios,etc.). Aunque existen muchas respuestas sobre el modo de recoger dicha información, la másutilizada es el lenguaje natural que, aunque carece del formalismo que pueden infligirotros métodos, permite una mejor y más fácil comprensión de la información por parte delusuario, y le permite especificar los requisitos sin la intervención de formalismos. Este primeresquema percibido bruto (como lo llaman Benci y Rolland), se ira refinando sucesivamente,hasta llegar al esquema conceptual.

2. Etapa de conceptualización: En esta etapa se debe responder a la pregunta "¿Cómorepresentar?". En ella se transforma el esquema obtenido en la primera, medianterefinaciones sucesivas. Se deberá obtener el esquema conceptual mediante unarepresentación normalizada, que se apoye en un modelo de datos que cumpla determinadaspropiedades (según Piattini y De Miguel): coherencia, plenitud, no redundancia, simplicidad,fidelidad, etc. El modelo que se estudiará es el Modelo Entidad / relación (en adelante referidocomo ME/R o modelo E/R), que es el más utilizado hoy en día.

El modelo entidad / relaciónEl modelo E/R fue propuesto por Peter P. Chen en dos artículos que publicó en los años 1976 y 1977.En ellos define dicho modelo como una vista unificada de los datos, centrándose en la estructuralógica y abstracta de los datos, como representación del mundo real, con independencia deconsideraciones de tipo físico. Posteriormente se fueron proponiendo nuevas aportaciones al modelo,lo cual explica que no exista uno sólo, sino distintos modelos según los autores.

Los objetivos que debe cumplir un esquema conceptual son los siguientes (Piattini y De Miguel):

1. Captar y almacenar el universo del discurso mediante una descripción rigurosa.

2. Aislar la representación de la información de los requisitos de máquina y exigencias de cadausuario en particular

3. Independizar la definición de la información de los SGBD en concreto.

A continuación se describirá el proceso de creación de un esquema conceptual, siguiendo el modeloE/R. Éste se basa en una representación gráfica de una serie de entidades relacionadas entre sí. Alutilizar una representación de este tipo, el modelo E/R permite distinguir fácilmente y a simple vista,las relaciones existentes entre las distintas entidades. Existen muchas formas de representarlo, comoya se ha comentado; la que se utilizará aquí no es, por supuesto, la única forma de hacerlo. Loselementos de los que se componen son los siguientes:Ej

emplo

de

lectu

ra

Page 22: Diseño y programación de bases de datos con SQL Server 2008 (ejemplo)

P á g i n a | 22

1. Entidades: Una entidad es "una persona, lugar, cosa, concepto o suceso, real o abstracto, deinterés para la empresa" (ANSI 1977). En el modelo E/R, se representa por un rectángulo, conel nombre de dicha entidad escrito en la parte superior. Por ejemplo, la Figura 1 representa laentidad automóvil.

Figura 1

2. Atributos: Un atributo es cualquier característica que describe a una entidad. Los atributos deuna entidad se colocan dentro del rectángulo que representa dicha entidad, justo debajo delnombre de ésta. Por ejemplo, se puede decir que un automóvil tiene las siguientescaracterísticas: nº de matricula, marca, modelo y color, lo cual se muestra en la Figura 2.

Figura 2

3. Clave: La clave de una entidad es un atributo o conjunto de atributos de dicha entidad, queson capaces de identificar unívocamente una ocurrencia de una entidad. Es decir, siconocemos el valor de dichos atributos, seremos capaces de conocer a que ocurrencia deentidad, entre todas las posibles, hace referencia. Esto implica que los valores de los atributosclave no se pueden repetir para dos ocurrencias de la misma entidad. En nuestro ejemplo,seremos capaces de identificar de que automóvil estamos hablando, con sólo conocer el valordel atributo matrícula, ya que no existe una misma matrícula para dos automóviles distintos.Los atributos marca, modelo o color no identifican unívocamente una ocurrencia de la entidad,ya que pueden existir dos automóviles distintos de la misma marca, modelo o color. En elmodelo E/R, un atributo clave se representa subrayando dicho atributo.

Figura 3

4. Relación: Una relación representa, como su propio nombre indica, una correspondencia entredos entidades. Si tenemos dos entidades automóvil y persona, podemos tener una relaciónentre ellas. Dicha relación se puede establecer en ambos sentidos:

§ Una persona posee un automóvil, y

§ Un automóvil pertenece a una persona.

5. Cardinalidad de una relación: La cardinalidad de una relación representa el número deocurrencias que se pueden dar de una relación. Puede ser de tres tipos:

§ Cardinalidad 1-1: cada ocurrencia de una entidad se relaciona con una ocurrencia deotra entidad. Ej: una persona posee un automóvil. Se representa como indica la Figura 4.

Ejem

plo d

e lec

tura

Page 23: Diseño y programación de bases de datos con SQL Server 2008 (ejemplo)

P á g i n a | 23

Figura 4

§ Cardinalidad 1-N: también llamada uno a muchos. Cada ocurrencia de una entidadpuede relacionarse con varias ocurrencias de otra entidad. Ej.: una persona poseevarios automóviles. Se representa como muestra la Figura 5.

Figura 5

§ Cardinalidad N-M: también llamada muchos a muchos. Cada ocurrencia de unaentidad puede relacionarse con varias ocurrencias de otra entidad y viceversa. Ej.: unapersona posee varios automóviles y un automóvil puede pertenecer a varias personas.Se representa como aparece en la Figura 6.

Figura 6

6. Cardinalidad máxima de una relación: representa el número máximo de ocurrencias de unaentidad con las que se puede relacionarse otra entidad. Ej.: una persona puede tener comomáximo tres automóviles.

7. Cardinalidad mínima de una relación: representa el número mínimo de ocurrencias de unaentidad con las que se puede relacionarse otra entidad. Ej.: un automóvil debe pertenecercomo mínimo a una persona.

8. Entidad débil: se dice que una entidad es débil, o es dependiente de otra, cuando no somoscapaces de conocer a que ocurrencia de entidad nos estamos refiriendo, ni siquiera conociendosu clave, sino que debemos conocer el valor de algún otro atributo de otra entidad. Porejemplo, si tenemos las entidades edificio (con el atributo clave codigo_edificio) y planta (conel atributo codigo_planta), ésta última es una entidad débil, ya que no somos capaces deidentificar una planta con sólo conocer el código de la planta, sino que además se necesitaconocer el código del edificio al que se hace referencia, para determinar la planta dentro deledificio.

Figura 7

En general, en una relación se suele representar conjuntamente las cardinalidades máxima y mínima.En los anteriores casos no se han considerado las cardinalidades mínimas. Éstas vienen a representar laEj

emplo

de

lectu

ra

Page 24: Diseño y programación de bases de datos con SQL Server 2008 (ejemplo)

P á g i n a | 24

opcionalidad de la ocurrencia de una entidad en una relación, es decir, si dicha ocurrencia se debe darobligatoriamente, o si por el contrario se puede obviar. Los tipos de cardinalidades son los queaparecen en la Figura 8, (nos fijaremos sólo en un sentido de la relación, el de la izquierda).

Figura 8

Veamos a continuación unos ejemplos para comprender mejor las cardinalidades máxima y mínima.Como se podrá comprobar, las cardinalidades de una relación se ponen en la última relación a la quese hace referencia, por ejemplo, si se tienen las entidades alumno y asignatura, la cardinalidad de larelación un alumno cursa asignaturas, se pondrá al lado de la entidad asignatura.

En el siguiente ejemplo (Figura 9), se tiene una relación 1-1 en la que un automóvil pertenece a unaúnica persona (cardinalidad máxima 1), sin la posibilidad de que exista un automóvil que no tengadueño (cardinalidad mínima 1). Esto significa que en el modelo no interesa tener información deaquellas personas que no tengan automóvil.

Figura 9

En la Figura 10, se tiene una relación 1-1 en la que una persona puede tener un automóvil comomucho (cardinalidad máxima 1), o puede no tener ninguno (cardinalidad mínima 0). Esto significa queel modelo interesa tener información de todas las personas, aunque no tengan automóvil.

Figura 10

En el siguiente ejemplo (Figura 11), se tiene una relación 1-N, en la que un profesor puede dar clase amuchos alumnos (cardinalidad máxima N), pero como mínimo debe hacerlo a uno (cardinalidadmínima 1). Esto significa que en el modelo no interesa tener información de aquellos profesores queno dan clase.

Figura 11

En el siguiente ejemplo, se tiene una relación N-N, en la que una persona puede tener variosautomóviles (cardinalidad máxima N), pero puede que no tenga ninguno (cardinalidad mínima 0). EstoEj

emplo

de

lectu

ra

Page 25: Diseño y programación de bases de datos con SQL Server 2008 (ejemplo)

P á g i n a | 25

significa que en el modelo interesa tener información de todas las personas, aunque no tenganautomóvil.

Figura 12

Para concluir esta sección se verá un ejemplo completo que representará todos los conceptos vistoshasta ahora. Supongamos que se desea establecer un modelo conceptual para la gestión de unabiblioteca. Se desean tener almacenados todos los libros que la componen. Para cada libro interesaconocer el ISBN, el título, el autor o autores, la editorial, el año de publicación y la materia. De cadaautor se quiere conocer su nombre, apellidos y nacionalidad. Un autor podrá haber escrito varioslibros, de la misma forma que en un libro pueden participar varios autores. De la editorial se deseaconocer el nombre y la ciudad. A dicha biblioteca podrán estar suscritos varios usuarios. De ellos sequiere saber su DNI, número de socio, nombre, apellidos, dirección y teléfono. Por cuestionesdirectivas, se limita el número de ejemplares prestados a cada usuario a uno. Se dispone, a su vez, deun único ejemplar de cada libro, por lo que un libro prestado a un usuario, no podrá ser prestado a otrohasta que se devuelva. Deberá quedar constancia de la fecha de préstamo de cada ejemplar.

Lo más destacable del anterior ejemplo es la entidad préstamo. Es una entidad débil que depende delibro y de socio, ya que para diferenciar un préstamo de otro, se necesita saber no sólo el libro, sino elsocio al cual se ha prestado. También se pueden observar que las cardinalidades mínimas son 1. Estoquiere decir que sólo se guardará información de las entidades cuando exista, al menos, una ocurrenciade la entidad. Las únicas relaciones que tienen cardinalidad opcional, son las que tienen como origen odestino a la entidad préstamo, lo cual es lógico, ya que tendremos información de todas las entidades,aunque todavía no se haya realizado ningún préstamo.

Figura 13

Ejemplos prácticos de diseño conceptualA continuación resolveremos unos problemas de diseño conceptual, para ir familiarizando al lectorcon los conceptos vistos hasta ahora. Para realizarlos se utilizará la S-Designor, que es unaherramienta CASE que abarca gran parte del ciclo de vida de las aplicaciones, incluyendo el diseño deesquemas conceptuales. No se preocupe si no conoce la herramienta, ya que se verá en detalle enpróximos temas, simplemente quédese con la idea general de la construcción del esquema.Ej

emplo

de

lectu

ra

Page 26: Diseño y programación de bases de datos con SQL Server 2008 (ejemplo)

P á g i n a | 26

El problema que nos planteamos es el siguiente. Supóngase que se desea informatizar una tienda dediscos. Para ello se desean tener almacenados los nombres de todos los discos disponibles, además desus cantantes y canciones. Así mismo se desean almacenar los clientes que han comprado en dichatienda. Pues bien, empezaremos identificando las entidades, entendiendo por entidad un grupo decaracterísticas que tienen entidad propia. Como primera entidad, podemos establecer los discos que sevenden, ya que se desea conocer información de ellos, como puede ser un código que lo identifiquedentro de la estantería. Por otro lado se desea almacenar todos los artistas que intervienen en los discosde nuestra tienda, y para cada uno de ellos se desea conocer su nombre y apellidos, por lo tanto yatenemos identificada una segunda entidad. Además, se desea conocer todas las canciones que estándisponibles en los discos, identificada cada una de ellas por un código de canción, y que ademástendrán sus propias letras. Pues ya tenemos la tercera entidad. La cuarta estará formada por losclientes, de los cuales se desea almacenar su nombre, apellidos, dirección y teléfono, y que podránestar identificados internamente por un código de cliente.

Figura 14

Una vez establecidas las entidades, sólo nos queda relacionarlas. Podemos observar las siguientesrelaciones:

1. Entre disco y canción: en un disco pueden aparecer varias canciones, y cada canción puedeestar en varios discos (N-M).

2. Entre cantante y canción: un cantante puede componer varias canciones, y una canción puedeestar compuesta por varios cantantes (N-M).

3. Entre cliente y disco: un cliente puede comprar varios discos, pero un disco sólo puede sercomprado por un cliente 1-N.

Por lo tanto, el esquema conceptual es que muestra la Figura 15:

Figura 15

Vamos a plantearnos otro problema. Supongamos que se desea tener almacenados todos los datos delos profesores de una empresa dedicada a impartir cursos, así como una breve descripción de éstos, ylos alumnos a los cuales se les ha impartido. Empezamos identificando entidades. De un profesor sedesea conocer su nombre y apellidos, dirección y despacho, por lo tanto establece una entidad. Otraentidad podría ser el alumno, del cual se desea conocer su nombre, apellidos, dirección y teléfono. NiEj

emplo

de

lectu

ra

Page 27: Diseño y programación de bases de datos con SQL Server 2008 (ejemplo)

P á g i n a | 27

que decir tiene que el curso describe otra entidad, de la cual se desea conocer su descripción. Sinembargo, podemos recurrir a un procedimiento muy usual, denominado tipificación de estados, muyusado en el diseño conceptual, y que consiste en tener una entidad que tipifique los posibles estadosque puede tomar un atributo. La principal ventaja de este procedimiento radica en que muchas vecessupone un ahorro de espacio de almacenamiento (por ejemplo al identificar nombres de ciudadeslargas con un solo número) además de una estandarización de los datos almacenados (el estado sólo sealmacena una vez). Por ejemplo podemos tipificar las ciudades, para lo cual creamos una nuevaentidad ciudad, donde se almacenará un código y la descripción de la ciudad. Cuando almacenemos laciudad de un alumno, sólo deberemos especificar el código de la ciudad.

Una vez establecidas las entidades, vamos a definir las relaciones entre ellas.

1. Profesor y Curso: un profesor puede impartir varios cursos, pero un curso sólo puede serimpartido por un profesor (1-N).

2. Alumno y Curso: un alumno puede asistir a varios cursos, y a un curso pueden asistir variosalumnos (N-M).

3. Alumno y Ciudad: un alumno vive en una ciudad, y una ciudad puede tener varios alumnos(1-N).

Por lo tanto, el esquema conceptual es el mostrado en la Figura .

Figura 16

Figura 17Ejem

plo d

e lec

tura

Page 28: Diseño y programación de bases de datos con SQL Server 2008 (ejemplo)

P á g i n a | 28

Cabe destacar que el atributo calificación se da como consecuencia de la relación entre las entidadescurso y alumno. Por lo que podrá ser introducido en la entidad intermedia que surja cuando se haga elpaso a tablas (véase siguiente capítulo).

Vamos a ver un último ejemplo. Supóngase un banco que desea almacenar todos sus clientes, ademásde los productos que puede ofrecer a éstos. Cada cliente podrá escoger entre todos estos productos el olos que más le plazcan (créditos, fondos de inversión, libretas de ahorro, etc.). De la misma forma,dicho banco tiene intereses en otras empresas, por lo que desea conocer en todo momento la situaciónde dichas empresas, para poder mejorar su política de inversiones. Puesto que dicho banco estaconstituido como sociedad anónima, desea almacenar todos los componentes de su consejo deadministración (actuales y ex-miembros) así como todas las actas de las reuniones ordinarias yextraordinarias. Las decisiones de inversión en estas empresas saldrán como resultado de dichasreuniones, así como la oferta de nuevos productos.

Como habrá podido observar, este ejemplo es un poco más complejo, pero no desespere, el proceso essimilar al de los demás ejemplos. Empezaremos definiendo entidades y las veremos representadas enla Figura .

1. Cliente: se desea conocer su nombre, apellidos, dirección y NIF, y estará identificado por uncódigo interno cod_cliente.

2. Producto: del cual queremos saber su descripción y estará identificado por un código internocod_producto.

3. Empresa: identifica las empresas en las cuales el banco ha invertido. De ellas se desea conocersu código, nombre y CIF.

4. Consejo: establece los componentes del consejo de administración. Para ello se almacenará elnombre, apellidos y código de cargo de cada uno de sus componentes, y si el cargo es vigenteo no. Podremos utilizar una nueva entidad que tipifique los tipos de cargo.

5. Tipo_cargo: describe los posibles cargos que puede tomar una persona en el consejo deadministración, y esta compuesto por un código de tipo de cargo, y una descripción del mismo(secretario, presidente, etc.).

6. Reunión: entidad encargada de describir la información de las actas de las reuniones. Susatributos son cod_reunión, fecha, extraordinaria, que especifica si la reunión ha sido ordinariao extraordinaria y una descripción.

Figura 18

Ejem

plo d

e lec

tura

Page 29: Diseño y programación de bases de datos con SQL Server 2008 (ejemplo)

P á g i n a | 29

Figura 19

Identifiquemos ahora las relaciones. Su representación gráfica aparece en la Figura :

1. Cliente y producto: cada cliente puede escoger varios productos, y cada producto puede serofrecido a varios clientes.

2. Consejo y cargo: un miembro del consejo sólo tiene un cargo, y cada cargo puede pertenecer amás de un miembro.

3. Reunión y consejo: a cada reunión pueden asistir varios miembros del consejo deadministración, y cada miembro puede asistir a más de una reunión.

4. Reunión y producto: de cada reunión puede salir la oferta de más de un nuevo producto perocada producto nuevo sólo puede salir de una reunión.

5. Reunión y empresa: de cada reunión pueden salir decisiones de invertir en más de unaempresa, y cada decisión de inversión sólo sale de una reunión.

Modelo LógicoComo ya se ha señalado, el diseño lógico de una base de datos consta de dos etapas: el diseño lógicoestándar y el diseño lógico específico. En el diseño lógico estándar, se toma el esquema conceptualresultante de la fase de diseño conceptual, y teniendo en cuenta los requisitos de proceso, de construyeun esquema lógico estándar (ELS), que se apoya en un modelo lógico estándar (MLS), que será elmismo modelo de datos soportado por el SGBD a utilizar (relacional, jerárquico, etc.), pero sin lasrestricciones de ningún producto comercial en concreto. En nuestro caso se utilizará el MLSrelacional. Una buena forma de describir el ELS es utilizando el lenguaje estándar del MLS (porejemplo SQL).

Una vez obtenido el ELS, y considerando el modelo lógico específico (MLE) propio del SGBD a usar(ORACLE, INFORMIX, SQL-SERVER, etc.), se elabora el esquema lógico específico (ELE). Aligual que en el caso anterior, una buena forma de describirlo es utilizando el lenguaje de definición dedatos (LDD) del producto especifico utilizado (en el caso de SQL-SERVER, se usará el TRANSACTSQL). El diseño lógico específico está muy ligado a la fase de diseño físico, ya que ambos dependenmucho del SGBD que se utilice.Ej

emplo

de

lectu

ra

Page 30: Diseño y programación de bases de datos con SQL Server 2008 (ejemplo)

P á g i n a | 30

En la fase de diseño lógico, además de las herramientas ya descritas (MLS, MLE, lenguajes SQL), sedisponen de otras que permiten establecer un buen diseño lógico, como por ejemplo la normalización,la desnormalización, etc., que ya se verán más adelante en este tema.

Paso del esquema conceptual al esquema lógico estándarLo primero que hay que realizar en la fase de diseño lógico, es obtener el esquema lógico estándar, apartir del esquema conceptual obtenido en la primera fase. Las reglas que permiten pasar del modeloE/R al esquema lógico, son las que a continuación se explican:

· Cada entidad se transforma en una relación: esto es, cada entidad genera una tabla, con susmismos atributos, incluyendo las claves.

· Cada relación N-M genera una tabla: las relaciones entre entidades con cardinalidad N-Mgeneran una tabla, con los atributos clave de ambas entidades.

· En cada relación 1-N, la entidad con cardinalidad N importa los atributos clave que contiene laentidad con cardinalidad 1.

· Cada relación dependiente, importa la clave de la otra entidad, como clave.

Para entender mejor el funcionamiento de este método, veamos el paso a tablas del ejemplo visto en eltema anterior acerca de la gestión de una biblioteca. La entidad editorial está relacionada con laentidad libro con cardinalidad 1-N, por lo tanto, la entidad libro, con cardinalidad N, importa la clavede la entidad editorial, con cardinalidad 1. A su vez, está relacionada con la entidad autor, pero en estecaso, la cardinalidad es N-M, lo que implica que se generará una tabla intermedia, en la que sealmacenarán las claves de ambas entidades. Esta tabla, a la que denominaremos Libro_autor mantienela información de los códigos de libros junto con los códigos de autores. Posteriormente, si se deseaextraer más información, tanto del libro como del autor, se deberá acceder a sendas tablas. Por últimose dispone de la entidad Préstamo, que es dependiente tanto de la entidad Libro como de la entidadUsuario, lo que quiere decir que se generará una tabla, con los atributos de la entidad Préstamo ademásde las claves de las entidades de las que es dependiente, es decir, ISBN y Num_socio, que entraráncomo claves en dicha tabla. Esta última relación obtenida, mantiene información de qué libros hansido prestados a qué usuarios y en qué fecha. El esquema de las tablas resultantes es el que se muestraen la Figura .

Figura 20

Veamos ahora el paso a tabla de otro ejemplo visto en el tema anterior, cuyo esquema conceptual es elque muestra la Figura .

Empezaremos identificando las relaciones, y concretando las tablas que generarán:

1. Cliente-Disco: puesto que es una relación 1-N, la entidad disco generará una tabla con susatributos, e importará el atributo clave de la entidad con cardinalidad 1, es decir, cod_cliente.A su vez, la entidad cliente generará su propia tabla, con sus propios atributos, es decir,cod_cliente, nombre, apellidos y teléfono.Ejem

plo d

e lec

tura