SlideShare une entreprise Scribd logo
1  sur  30
Télécharger pour lire hors ligne
Diseño y programación de bases de
datos con SQL Server 2008

Pedro López-Belmonte / Aroa Solana
Sipnosis

En este manual se tratan las diferentes tareas necesarias para llevar a cabo el diseño de una base
de 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 los
diseñ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 todos
los temas necesarios para dejar en perfecto funcionamiento cualquier base de datos sobre SQL
Server 2008.

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




                        Pedro López-Belmonte es Licenciado en Ciencias Físicas por la
                        Universidad Complutense de Madrid, con más de 8 años de experiencia
                        en el mundo del desarrollo, consultoría y formación. Es especialista en
                        herramientas de desarrollo .NET y bases de datos. Ha participado en
                        numerosos proyectos de desarrollo en entornos corporativos de
                        mediano 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ón
                        MCT, y desde el comienzo de su carrera profesional ha impartido
                        formación, una de sus pasiones.




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

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

                         Ha impartido formación sobre la tecnología .NET, desarrollo de
aplicaciones Windows, Web, ADO, Distribuidas, WPF, WCF, WWF, Silverlight y UML, por
otra parte imparte formación en administración de bases de datos SQL Server y desarrollo de
bases de datos SQL Server, tanto en 2005 como en 2008. Además posee experiencia en J2SE y
J2EE. Dentro de la gestión de procesos posee la certificación ITIL V2 Foundations.
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 ser
realizada con la autorización de sus titulares, salvo excepción prevista por la ley. Diríjase a CEDRO (Centro Español
de Derechos Reprográficos, www.cedro.org) si necesita fotocopiar, escanear o hacer copias digitales de algún
fragmento de esta obra.
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!.
Diseño y programación de bases de datos
          con SQL Server 2008

           Pedro López-Belmonte
                Aroa Solana
Indice
Introducción .................................................................................................................................... 15
  Introducción .................................................................................................................................. 15
  Introducción a SQL Server 2008 ................................................................................................... 16
  Nuevas Características .................................................................................................................. 17
     Funciones Básicas ..................................................................................................................... 17
     Funciones de Business Intelligence............................................................................................ 18
  Herramientas de SQL Server 2008 ................................................................................................ 18
     Libros en pantalla ...................................................................................................................... 18
     SQL Server Configuration Manager .......................................................................................... 18
     El SQL Server Management Studio ........................................................................................... 19
Creación de los modelos Conceptual, Lógico y Físico .................................................................... 20
  Modelo Conceptual ....................................................................................................................... 20
  Etapas del diseño conceptual ......................................................................................................... 21
  El modelo entidad / relación .......................................................................................................... 21
  Ejemplos prácticos de diseño conceptual ....................................................................................... 25
  Modelo Lógico ............................................................................................................................. 29
  Paso del esquema conceptual al esquema lógico estándar ..............................................................30
  Etapas en el diseño lógico ............................................................................................................. 31
  Particionamiento horizontal de relaciones ...................................................................................... 32
  Particionamiento vertical de relaciones .......................................................................................... 35
  Particionamiento mixto ................................................................................................................. 37
  Teoría de la normalización ............................................................................................................ 38
  Ejemplos prácticos de normalización............................................................................................. 42
  Proceso de desnormalización......................................................................................................... 47
  Modelo Físico ............................................................................................................................... 48
  Estrategias en el diseño físico........................................................................................................ 48
  Conceptos básicos sobre gestión de ficheros .................................................................................. 49
  Organización de ficheros ............................................................................................................... 49
  Técnicas para el aumento de eficiencia ..........................................................................................50
Seguridad ........................................................................................................................................ 52
  Inicios de sesión ............................................................................................................................ 52
  Roles ............................................................................................................................................ 62
     Funciones fijas de servidor ........................................................................................................ 62
     Funciones de base de datos ........................................................................................................ 64
     Funciones 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 ................................................................................................. 73
    Páginas ..................................................................................................................................... 73
    Extensiones ............................................................................................................................... 74
    Objetos de la Base de Datos ......................................................................................................75
  Bases de Datos de Sistema ............................................................................................................76
    Master .......................................................................................................................................76
    TempDB ................................................................................................................................... 76
    Model ....................................................................................................................................... 77
    MSDB ...................................................................................................................................... 77
  Elementos básicos para la creación de bases de datos .................................................................... 77
    Management Studio .................................................................................................................. 77

                                                                                                                                  Página |7
CREATE DATABASE .............................................................................................................80
       Grupos de archivos.................................................................................................................... 88
         Creación de un grupo de archivos .......................................................................................... 89
         Uso de los grupos de archivos ................................................................................................ 90
       Esquemas .................................................................................................................................. 91
Creación de tablas ........................................................................................................................... 94
  Tipos de datos en SQL Server 2008............................................................................................... 95
     CHAR ....................................................................................................................................... 95
     NCHAR .................................................................................................................................... 95
     VARCHAR ............................................................................................................................... 95
     NVARCHAR ............................................................................................................................ 96
     TEXT........................................................................................................................................ 96
     NTEXT ..................................................................................................................................... 96
     IMAGE ..................................................................................................................................... 96
     INT ........................................................................................................................................... 96
     BIGINT .................................................................................................................................... 96
     SMALLINT .............................................................................................................................. 96
     TINYINT .................................................................................................................................. 97
     DECIMAL/NUMERIC ............................................................................................................. 97
     FLOAT ..................................................................................................................................... 97
     REAL ....................................................................................................................................... 97
     MONEY ................................................................................................................................... 97
     SMALLMONEY ...................................................................................................................... 97
     DATETIME ..............................................................................................................................97
     SMALLDATETIME ................................................................................................................. 98
     TIMESTAMP ........................................................................................................................... 98
     UNIQUEIDENTIFIER.............................................................................................................. 98
     BINARY................................................................................................................................... 98
     VARBINARY........................................................................................................................... 98
     BIT ........................................................................................................................................... 98
     XML ......................................................................................................................................... 99
     CURSOR .................................................................................................................................. 99
     TABLE ..................................................................................................................................... 99
     SQL_VARIANT ....................................................................................................................... 99
  Creación de tablas ......................................................................................................................... 99
  Modificar tablas .......................................................................................................................... 100
  Eliminar tablas ............................................................................................................................ 101
  Propiedades de las columnas ....................................................................................................... 102
     Valores DEFAULT ................................................................................................................. 102
     Valores IDENTITY................................................................................................................. 103
  Integridad de los datos ................................................................................................................ 104
     Integridad de Entidad .............................................................................................................. 104
     Integridad de Dominio............................................................................................................. 105
     Integridad Referencial ............................................................................................................. 105
     Tipos de restricciones .............................................................................................................. 105
        PRIMARY KEY ................................................................................................................. 105
        FOREIGN KEY .................................................................................................................. 107
        Restricción UNIQUE........................................................................................................... 112
        Restricciones CHECK ......................................................................................................... 113
        Objetos RULE y DEFAULT................................................................................................ 116
          RULE .............................................................................................................................. 116
          DEFAULT ...................................................................................................................... 117
     Consideraciones sobre las restricciones ................................................................................... 117
Creación de Índices ....................................................................................................................... 119

                                                                                                                                  Página |8
¿Qué es un índice? ...................................................................................................................... 119
   Tipos 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 ..................................................................................................................... 123
     Especificar orden para los campos ........................................................................................... 125
        Include ................................................................................................................................ 125
        Factor de relleno .................................................................................................................. 126
        Rellenar Índice .................................................................................................................... 127
        Pasar por alto claves duplicadas ........................................................................................... 127
        Volver a generar el índice .................................................................................................... 128
        Volver a calcular estadísticas ............................................................................................... 128
        Almacenar resultados de orden intermedio en la base de datos tempdb ................................. 129
        Permitir procesamiento en línea de instrucciones DML ........................................................ 130
        Usar bloqueos de fila y de página al tener acceso al índice ................................................... 130
        Grado máximo de paralelismo ............................................................................................. 130
        Almacenamiento del índice.................................................................................................. 131
   Partición de índices y tablas ........................................................................................................ 131
     Funciones de partición............................................................................................................. 132
     Esquemas de partición ............................................................................................................. 133
     Crear tablas e índices particionados ......................................................................................... 133
     Modificar funciones y esquemas de partición .......................................................................... 135
        Insertar y extraer tablas de particiones ................................................................................. 135
        Mantenimiento de Particiones .............................................................................................. 137
Creación de vistas ......................................................................................................................... 138
  Como crear vistas........................................................................................................................ 138
    Encriptación de la definición ................................................................................................... 143
    Enlazar a un esquema .............................................................................................................. 144
    Comprobar criterios ................................................................................................................ 144
  Modificar y eliminar vistas.......................................................................................................... 145
  Vistas indexadas ......................................................................................................................... 145
Procedimientos Almacenados ....................................................................................................... 147
  Creación de Procedimientos Almacenados .................................................................................. 148
    Llamadas a procedimientos ..................................................................................................... 149
    Procedimientos almacenados parametrizados........................................................................... 149
    Valor de Retorno ..................................................................................................................... 151
    Opciones Adicionales .............................................................................................................. 152
  Estructuras de control de flujo y errores ...................................................................................... 153
    IF…ELSE ............................................................................................................................... 153
    WHILE…BREAK .................................................................................................................. 154
    CASE...................................................................................................................................... 155
    WAITFOR .............................................................................................................................. 155
  Gestión de Errores ...................................................................................................................... 156
    La variable @@ERROR ......................................................................................................... 157
    RAISERROR .......................................................................................................................... 160
       Mensaje............................................................................................................................... 161
       Severidad ............................................................................................................................ 162
       Estado ................................................................................................................................. 162
       WITH.................................................................................................................................. 162
  Consideraciones de seguridad y rendimiento ............................................................................... 165


                                                                                                                                Página |9
Seguridad ................................................................................................................................ 166
       Rendimiento............................................................................................................................ 166
       Depuración ............................................................................................................................. 167
Funciones definidas por el usuario ............................................................................................... 172
  Funciones escalares ..................................................................................................................... 173
  Funciones de tabla ...................................................................................................................... 176
  Funciones Deterministas y No Deterministas............................................................................... 179
  Depuración de funciones definidas por el usuario ........................................................................ 181
Tipos de datos definidos por el usuario ........................................................................................ 183
  Creación del tipo de dato definido por el usuario ......................................................................... 183
    TSQL ...................................................................................................................................... 184
    Management Studio ................................................................................................................ 185
Desencadenadores (triggers)......................................................................................................... 191
  Tipos de Desencadenadores ........................................................................................................ 192
    Desencadenadores DML ......................................................................................................... 192
      ¿Restricciones?.................................................................................................................... 193
      Tablas de soporte................................................................................................................. 194
  Creación de un desencadenador ................................................................................................... 194
    Comprobar columnas .............................................................................................................. 197
  Desencadenadores DDL .............................................................................................................. 199
  Los desencadenadores en el Management Studio ......................................................................... 201
  Consideraciones de rendimiento .................................................................................................. 205
Diseño de objetos SQL CLR ......................................................................................................... 206
  Integración con CLR ................................................................................................................... 206
     Habilitar la integración ............................................................................................................ 208
     Visual Studio 2008 .................................................................................................................. 208
        Atributos .NET .................................................................................................................... 212
  Implementación .......................................................................................................................... 213
     Implementar ensamblados ....................................................................................................... 213
  Procedimientos almacenados CLR .............................................................................................. 216
  Funciones CLR ........................................................................................................................... 219
     SqlFunction............................................................................................................................. 220
     Funciones escalares ................................................................................................................. 221
     Funciones de tabla ................................................................................................................... 223
  Agregados................................................................................................................................... 224
     SqlUserDefinedAggregate ....................................................................................................... 225
     Init .......................................................................................................................................... 226
     Accumulate ............................................................................................................................. 226
     Merge ..................................................................................................................................... 226
     Terminate................................................................................................................................ 226
  Desencadenadores CLR .............................................................................................................. 227
     SqlTrigger ............................................................................................................................... 229
     TriggerContext ........................................................................................................................ 229
SQL Server 2008 Reporting Services ........................................................................................... 231
  Arquitectura de los Servicios de Informes ................................................................................... 231
    Capa de aplicación .................................................................................................................. 232
      Navegador de Internet ......................................................................................................... 232
      Herramientas de Informes .................................................................................................... 233
      Business Intelligence Development Studio........................................................................... 234
      Herramienta de Configuración de Superficie........................................................................ 234
      Herramienta de Configuración del Servidor de Informes ...................................................... 235


                                                                                                                                 P á g i n a | 10
SQL Server Management Studio.......................................................................................... 235
        Aplicaciones personalizadas ................................................................................................ 236
     Capa de servidor ..................................................................................................................... 236
        Servicio Web ....................................................................................................................... 236
        Servicio de Windows ........................................................................................................... 236
        Interfaces de programación .................................................................................................. 236
        Procesadores ....................................................................................................................... 236
        Extensiones ......................................................................................................................... 237
           Autenticación .................................................................................................................. 237
           Extensiones de Proceso de datos ...................................................................................... 237
           Extensiones de presentación ............................................................................................ 237
           Extensiones de Proceso de Informes ................................................................................ 237
           Extensiones de Distribución............................................................................................. 237
     Capa de datos .......................................................................................................................... 237
        Bases de datos del servidor .................................................................................................. 237
   Diseño de Informes ..................................................................................................................... 238
     Asistente para la Generación de Informes ................................................................................ 238
   Diseño de un informe .................................................................................................................. 244
     Elementos de Datos ................................................................................................................. 244
        Origen de datos (DataSource) .............................................................................................. 245
        Conjunto de datos (dataset) .................................................................................................. 246
     Elementos del Informe ............................................................................................................ 246
        Regiones de datos ................................................................................................................ 247
        Elementos independientes.................................................................................................... 248
   Estructura de un informe ............................................................................................................. 248
   Implementación de un informe .................................................................................................... 252
Soporte para consultas .................................................................................................................. 256
  Consultas para la devolución de datos ......................................................................................... 257
    La cláusula WHERE ............................................................................................................... 258
    ORDER BY ............................................................................................................................ 260
    GROUP BY ............................................................................................................................ 261
    Agregados ............................................................................................................................... 262
    AVG ....................................................................................................................................... 262
    MIN / MAX ............................................................................................................................ 263
    COUNT .................................................................................................................................. 264
    Cláusula HAVING .................................................................................................................. 264
    Cláusula DISTINCT................................................................................................................ 265
  Modificación de datos ................................................................................................................. 265
    INSERT .................................................................................................................................. 266
    UPDATE ................................................................................................................................ 266
    DELETE ................................................................................................................................. 267
  Combinación de tablas ................................................................................................................ 267
    INNER JOIN .......................................................................................................................... 268
    OUTER JOIN ......................................................................................................................... 269
    FULL JOIN............................................................................................................................. 270
    UNION, EXCEPT & INTERSECT ......................................................................................... 271
  Caso práctico .............................................................................................................................. 272


LINQ to SQL ................................................................................................................................ 274
  Modelo Objeto/Relacional........................................................................................................... 274
  Herramientas de generación de Entidades .................................................................................... 276
    Uso de SQLMetal.................................................................................................................... 276
    Visual Studio LINQ to SQL Designer ..................................................................................... 278

                                                                                                                             P á g i n a | 11
Consultar con LINQ to SQL .................................................................................................... 279
       Resumen ................................................................................................................................. 280
Uso de XML .................................................................................................................................. 281
  Recuperación de XML mediante FOR XML ............................................................................... 281
    Introducción a la cláusula FOR XML ...................................................................................... 282
       Modo RAW......................................................................................................................... 284
          Recuperación de datos en elementos de fila genéricos ...................................................... 284
          Recuperación de datos como elementos ........................................................................... 285
          Recuperación de datos utilizando un elemento raíz y nombre de elemento de fila
          personalizado................................................................................................................... 285
       Modo AUTO ....................................................................................................................... 288
          Recuperación de datos anidados utilizando el modo AUTO ............................................. 288
          Recuperación de datos como elementos ........................................................................... 289
       Modo EXPLICIT ................................................................................................................ 291
          Tablas universales ........................................................................................................... 292
          Definición de asignaciones de columna en una tabla universal ......................................... 292
          Creación de una consulta para construir la tabla universal ................................................ 293
       Modo PATH ....................................................................................................................... 295
          Recuperación de datos utilizando el modo PATH............................................................. 295
  Fragmentación de XML mediante OPENXML ............................................................................ 296
    Proceso de fragmentación de datos XML................................................................................. 297
       Procedimientos Almacenados para administrar árboles de nodos en memoria ...................... 297
          Creación del árbol mediante sp_xml_preparedocument .................................................... 298
          Quitar el árbol mediante sp_xml_removedocument .......................................................... 298
    Sintaxis de OPENXML ........................................................................................................... 299
       Uso de una declaración de esquema ..................................................................................... 300
  Uso del tipo de datos xml ............................................................................................................ 301
    El tipo de datos xml................................................................................................................. 302
    XQuery ................................................................................................................................... 303
       Sintaxis de XQuery ............................................................................................................. 303
          Instrucciones FLOWR ..................................................................................................... 303
    Los métodos query, value y exist ............................................................................................. 305
       El método query .................................................................................................................. 305
       El método value................................................................................................................... 305
       El método exists .................................................................................................................. 306
    El método modify.................................................................................................................... 306
    El método nodes ...................................................................................................................... 307
Service Broker .............................................................................................................................. 310
  ¿Qué es el Service Broker?.......................................................................................................... 310
    Ventajas de Service Broker ..................................................................................................... 311
    Usos Típicos de Service Broker ............................................................................................... 311
  Arquitectura del sistema de Service Broker ................................................................................. 311
    Tipo de mensaje ...................................................................................................................... 312
    Contrato .................................................................................................................................. 312
    Cola ........................................................................................................................................ 312
    Servicio................................................................................................................................... 312
    Programa de Servicio .............................................................................................................. 313
  Arquitectura de conversación de Service Broker .......................................................................... 313
    Mensaje .................................................................................................................................. 314
    Conversación de diálogo ......................................................................................................... 314
    Grupo de conversación ............................................................................................................ 314
    Ruta ........................................................................................................................................ 315
    Enlace de servicio remoto........................................................................................................ 315


                                                                                                                               P á g i n a | 12
Proceso de conversación de Service Broker ................................................................................. 315
   Arquitectura de seguridad de Service Broker ............................................................................... 317
     Certificados ............................................................................................................................. 317
     Seguridad de transporte ........................................................................................................... 317
     Seguridad de Diálogo .............................................................................................................. 317
   Creación de objetos de Service Broker ........................................................................................ 318
     Sintaxis para crear tipos de mensajes ....................................................................................... 318
     Sintaxis para crear contratos .................................................................................................... 319
     Sintaxis para crear colas .......................................................................................................... 321
     Sintaxis para crear servicios .................................................................................................... 322
   Envío y recepción de mensajes .................................................................................................... 323
     Sintaxis para enviar mensajes .................................................................................................. 323
   Sintaxis para recibir mensajes ..................................................................................................... 325
FILESTREAM.............................................................................................................................. 329
  Uso de FileStream....................................................................................................................... 330
    Almacenamiento de FileStream ............................................................................................... 330
       Seguridad Integrada ............................................................................................................. 330
       Administración Integrada .................................................................................................... 331
  Habilitar FILESTREAM ............................................................................................................. 331
  Administrar datos FILESTREAM usando Transact-SQL ............................................................. 332
    Actualizar datos FILESTREAM .............................................................................................. 333
    Eliminar datos FILESTREAM ................................................................................................ 333
  Administrar daos FILESTREAM usando Win32 ......................................................................... 333
    Leer la ruta de acceso al archivo .............................................................................................. 333
    Leer el contexto de la transacción ............................................................................................ 334
    Obtener un identificador de archivos de Win32 ....................................................................... 334
       La API OpenSqlFilestream .................................................................................................. 334
         Parámetros....................................................................................................................... 335
         FilestreamPath ................................................................................................................ 335
         DesiredAccess ................................................................................................................. 335
         OpenOptions ................................................................................................................... 335
         FilestreamTransactionContext ......................................................................................... 336
         FilestreamTransactionContextLength .............................................................................. 336
         AllocationSize.................................................................................................................. 336
  Conflictos entre Win32 y Transact-SQL ...................................................................................... 336
    Ejemplos ................................................................................................................................. 337
       Abrir un BLOB de FILESTREAM para acceso de escritura ................................................. 337
       Abrir un BLOB de FILESTREAM para acceso de lectura .................................................... 337
       Abrir y cerrar varios archivos BLOB de FILESTREAM ...................................................... 338
       No se puede cerrar un cursor................................................................................................ 338
  Cómo crear una base de datos habilitada para FILESTREAM ..................................................... 339
    Crear una base de datos habilitada para FILESTREAM ........................................................... 339
  Cómo mover una base de datos habilitada para FILESTREAM ................................................... 340
  Crear una tabla para almacenar datos FILESTREAM .................................................................. 341
  Prácticas recomendadas............................................................................................................... 341
    Configuración física y mantenimiento ..................................................................................... 341
    Diseño físico de base de datos ................................................................................................. 342
Datos Espaciales ............................................................................................................................ 343
  Datos espaciales .......................................................................................................................... 343
    Poblar datos espaciales ............................................................................................................ 344
    GML ....................................................................................................................................... 347
      Objetos Geométricos ........................................................................................................... 347
    Elementos de GML ................................................................................................................. 350


                                                                                                                             P á g i n a | 13
Polígonos, delimitadores interiores y Multipolígonos ........................................................... 351
          Tres Dimensiones ................................................................................................................ 351
Resolución Caso Práctico .............................................................................................................. 356
         Listado de clientes por comercial ..................................................................................... 356
         Listado de clientes potenciales por comercial ................................................................... 356
         Listado de envíos a clientes.............................................................................................. 357
         Listado de pedidos a proveedores..................................................................................... 357
         Listado de productos bajos en stock ................................................................................. 357
         Total ventas por comercial ............................................................................................... 358




                                                                                                                          P á g i n a | 14
Introducción

Introducción
SQL Server 2008 es la última versión del Sistema Gestor de Bases de Datos de Microsoft para el
mercado 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 a
ser 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 Server
Express), 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. La
primera versión fue desarrollada para OS/2 en 1988, y no era más que una pequeña base de datos. De
hecho, el sistema operativo OS/2 fue desarrollado conjuntamente por IBM y Microsoft para dar
soporte a Sybase SQL Server

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




                                                                                   P á g i n a | 15
La primera versión independiente de SQL Server fue la 6.05. En esta versión se introdujeron una serie
de mejoras en cuanto a rendimiento y funcionalidad que permitían considerar a este sistema adecuado
para gestionar bases de datos de pequeños negocios o aplicaciones de Internet. La siguiente versión, la
6.5, fue lanzada en 1996.

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

Con SQL Server 2000, Microsoft terminó de consolidar su posición en el mercado de los Sistemas
Gestores de Bases de Datos. Esta versión ya está dirigida al entorno empresarial, debido a su
rendimiento, escalabilidad y robustez. Lo bueno es que Microsoft consiguió alcanzar estos objetivos
sin sacrificar la facilidad de uso y el gran número de herramientas de desarrollo, gestión y análisis
incluidas en SQL Server. De hecho, en el año 2001 Oracle cedió su posición de dominio, pasando el
testigo 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 SQL
Server 2005 y 2008, como Xerox, Nasdaq, Groupama, ING, y un largo etc. Para comprender este
movimiento en torno al RDBMS (Relational DataBase Management System) de Microsoft, hay que
unir que las cifras de las pruebas rendimiento (benchmarks) a las que se someten a SQL Server se
acercan a las cifras de Oracle, junto con la facilidad de uso y coste del sistema de Microsoft, en
contraposición con la complejidad y elevado precio del sistema de Oracle.


Introducción a SQL Server 2008
SQL Server 2008 incluye una gran cantidad de nuevas características que permiten una gestión más
racional 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 SQL
Server, lo que abre un gran abanico de posibilidades complementando la funcionalidad que
proporciona 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 de
funciones de búsqueda y manipulación en código XML, como XQuery o XPath directamente en el
propio campo de la tabla. También permite la validación de la estructura del propio documento contra
esquemas XSD.

Las herramientas de configuración y mantenimiento también han sufrido una renovación completa. El
Administrador Corporativo, o el Analizador de Consultas de SQL Server 2000 dejan paso al SQL
Server Management Studio (SSMS), que agrupa y amplia la funcionalidad de ambos. Esta nueva
herramienta permite gestión multiservidor tanto de servidores OLTP como de servidores OLAP o
gestión de funciones adicionales. Una nueva característica muy interesante es la posibilidad de crear
una solución, lo que permite una gestión más eficaz de proyectos de desarrollo, así como la
integració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 Development
Studio, que no es más que una versión reducida de Visual Studio 2008. Esta nueva herramienta sirve

                                                                                         P á g i n a | 16
para desarrollar proyectos de integración con .NET, o también otros como proyectos de Analysis
Services, Integration Services o Reporting Services.

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

Otra de las nuevas características la constituye el Service Broker, que es un entorno de trabajo
diseñ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ún
sus distintas ediciones, que describo a continuación:

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

   ·    Workgroup: Está diseñada para entornos y departamentos pequeños y medianos. Posee
        muchas 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 las
        características, como los Servicios de Análisis, o los Servicios de Integración, pero elimina
        las 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 a
        entornos de prueba y laboratorio, contiene limitaciones en cuanto a CPUs soportadas y a
        licencias.

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


Nuevas Características
Las 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, exceptuando
las versiones Enterprise y Developer, que como hemos visto antes, las soportan todas. Veamos un
resumen 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, el
        nuevo tipo de dato XML, consultas recursivas, gestión de errores con estructuras
        TRY…CATCH, la herramienta Express Manager (indicada para la versión Express y es
        gratuita), conexión dedicada para el administrador, adición de memoria en caliente,
        encriptación de datos, la herramienta Management Studio, vistas de sistema, herramientas de
        Reporting Services, integración con Microsoft Baseline Security Analyzer (MBSA),
        replicación (transaccional y de mezcla), Service Broker, procedimientos almacenados, vistas y
        desencadenadores, tipos definidos por el usuario, indexación XML nativa, búsquedas de texto


                                                                                        P á g i n a | 17
completo en datos XML y manipulación con XQUERY y el Best Practices Analyzer (se puede
        descargar 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 de
        datos (Log Shipping).

    ·   La versión Workgroup no soporta la funcionalidad de espejo (DB Mirroring), el Database
        Tuning Advisor (sustituye al Index Tunning Wizard), el failover clustering, los Servicios de
        Integració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 online
        de tablas y vistas, restauración de bases de datos online, operaciones de indexación en
        paralelo, índices en vistas, integración de flujo de datos, disponibilidad de la base de datos en
        operaciones de undo durante la restauración, transformaciones avanzadas como minería de
        datos 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 tipo
        estrella, y el Business Intelligence Development Studio.

    ·   La versión Express no soporta integración con el Management Studio, el profiler y otras
        herramientas, 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 Dimensional
        Unificado (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 2008
La nueva versión de SQL Server trae consigo un buen puñado de nuevas herramientas, algunas
nuevas, y otras simplemente una evolución de las anteriores. Vamos a repasar las más importantes,
para conocer su funcionalidad.


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


SQL Server Configuration Manager
Esta 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.

                                                                                         P á g i n a | 18
El SQL Server Management Studio
El SQL Server Management Studio es la nueva herramienta de administración de SQL Server, y
representa una gran evolución frente a las versiones anteriores. Hereda su aspecto y algo de
funcionalidad de Visual Studio 2008, además de integrar un gran número de funciones que antes
estaban disponibles como herramientas independientes.




                                                                                    P á g i n a | 19
Creación de los modelos Conceptual,
                               Lógico y Físico

Modelo Conceptual
Como ya se ha visto en el tema anterior, el diseño conceptual, que constituye la primera etapa en el
diseño de una base de datos, consiste en obtener una buena representación de los recursos de
información de la empresa, con independencia de usuario o aplicaciones en particular y fuera de
consideraciones sobre eficiencia del ordenador. Puesto que no se corresponde con ningún nivel de la
arquitectura ANSI/X3/SPARC, sino que es un paso previo, tiende a ser no tenido en cuenta a la hora
de proceder al diseño de una base de datos. Esto no es aconsejable, ya que el diseño lógico parte del
esquema 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 constantemente
debido a las deficiencias arrastradas desde esta etapa de diseño. De ahí la importancia de realizar un
buen 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 la
eficiencia del equipo hardware en el que se vaya a montar la base de datos, o SGBD's concretos. Como
ya se ha dicho, el esquema conceptual debe representar la información fuera de consideraciones sobre
hardware y sobre el SGBD sobre el que se implementará. Por lo tanto, se pueden establecer las
siguientes características que debe cumplir un buen esquema conceptual:


                                                                                      P á g i n a | 20
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á positivamente
en el resto de etapas.


Etapas del diseño conceptual
La 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 se
       provean detalles de los datos a representar. Dicho esquema se obtiene mediante el estudio u
       observació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ás
       utilizada es el lenguaje natural que, aunque carece del formalismo que pueden infligir
       otros métodos, permite una mejor y más fácil comprensión de la información por parte del
       usuario, y le permite especificar los requisitos sin la intervención de formalismos. Este primer
       esquema 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ómo
       representar?". En ella se transforma el esquema obtenido en la primera, mediante
       refinaciones sucesivas. Se deberá obtener el esquema conceptual mediante una
       representación normalizada, que se apoye en un modelo de datos que cumpla determinadas
       propiedades (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 referido
       como ME/R o modelo E/R), que es el más utilizado hoy en día.


El modelo entidad / relación
El 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 estructura
lógica y abstracta de los datos, como representación del mundo real, con independencia de
consideraciones 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 cada
       usuario 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 modelo
E/R. Éste se basa en una representación gráfica de una serie de entidades relacionadas entre sí. Al
utilizar 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, como
ya se ha comentado; la que se utilizará aquí no es, por supuesto, la única forma de hacerlo. Los
elementos de los que se componen son los siguientes:

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




                                            Figura 1

2. Atributos: Un atributo es cualquier característica que describe a una entidad. Los atributos de
   una entidad se colocan dentro del rectángulo que representa dicha entidad, justo debajo del
   nombre de ésta. Por ejemplo, se puede decir que un automóvil tiene las siguientes
   caracterí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, que
   son capaces de identificar unívocamente una ocurrencia de una entidad. Es decir, si
   conocemos el valor de dichos atributos, seremos capaces de conocer a que ocurrencia de
   entidad, entre todas las posibles, hace referencia. Esto implica que los valores de los atributos
   clave 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 valor
   del 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 el
   modelo 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 entre
   dos entidades. Si tenemos dos entidades automóvil y persona, podemos tener una relación
   entre 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 de
   ocurrencias 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 de
          otra entidad. Ej: una persona posee un automóvil. Se representa como indica la Figura 4.




                                                                                    P á g i n a | 22
Figura 4

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




                                                Figura 5

            §   Cardinalidad N-M: también llamada muchos a muchos. Cada ocurrencia de una
                entidad puede relacionarse con varias ocurrencias de otra entidad y viceversa. Ej.: una
                persona 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 una
       entidad con las que se puede relacionarse otra entidad. Ej.: una persona puede tener como
       máximo tres automóviles.

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

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




                                                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 la

                                                                                        P á g i n a | 23
opcionalidad de la ocurrencia de una entidad en una relación, es decir, si dicha ocurrencia se debe dar
obligatoriamente, o si por el contrario se puede obviar. Los tipos de cardinalidades son los que
aparecen 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 que
se hace referencia, por ejemplo, si se tienen las entidades alumno y asignatura, la cardinalidad de la
relació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 tenga
dueño (cardinalidad mínima 1). Esto significa que en el modelo no interesa tener información de
aquellas 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 como
mucho (cardinalidad máxima 1), o puede no tener ninguno (cardinalidad mínima 0). Esto significa que
el 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 a
muchos alumnos (cardinalidad máxima N), pero como mínimo debe hacerlo a uno (cardinalidad
mínima 1). Esto significa que en el modelo no interesa tener información de aquellos profesores que
no dan clase.




                                               Figura 11

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

                                                                                       P á g i n a | 24
significa que en el modelo interesa tener información de todas las personas, aunque no tengan
automóvil.




                                                Figura 12

Para concluir esta sección se verá un ejemplo completo que representará todos los conceptos vistos
hasta ahora. Supongamos que se desea establecer un modelo conceptual para la gestión de una
biblioteca. Se desean tener almacenados todos los libros que la componen. Para cada libro interesa
conocer el ISBN, el título, el autor o autores, la editorial, el año de publicación y la materia. De cada
autor se quiere conocer su nombre, apellidos y nacionalidad. Un autor podrá haber escrito varios
libros, de la misma forma que en un libro pueden participar varios autores. De la editorial se desea
conocer el nombre y la ciudad. A dicha biblioteca podrán estar suscritos varios usuarios. De ellos se
quiere saber su DNI, número de socio, nombre, apellidos, dirección y teléfono. Por cuestiones
directivas, se limita el número de ejemplares prestados a cada usuario a uno. Se dispone, a su vez, de
un único ejemplar de cada libro, por lo que un libro prestado a un usuario, no podrá ser prestado a otro
hasta 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 de
libro y de socio, ya que para diferenciar un préstamo de otro, se necesita saber no sólo el libro, sino el
socio al cual se ha prestado. También se pueden observar que las cardinalidades mínimas son 1. Esto
quiere decir que sólo se guardará información de las entidades cuando exista, al menos, una ocurrencia
de la entidad. Las únicas relaciones que tienen cardinalidad opcional, son las que tienen como origen o
destino 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 conceptual
A continuación resolveremos unos problemas de diseño conceptual, para ir familiarizando al lector
con los conceptos vistos hasta ahora. Para realizarlos se utilizará la S-Designor, que es una
herramienta CASE que abarca gran parte del ciclo de vida de las aplicaciones, incluyendo el diseño de
esquemas conceptuales. No se preocupe si no conoce la herramienta, ya que se verá en detalle en
próximos temas, simplemente quédese con la idea general de la construcción del esquema.


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




                                                Figura 14

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

    1. Entre disco y canción: en un disco pueden aparecer varias canciones, y cada canción puede
       estar en varios discos (N-M).
    2. Entre cantante y canción: un cantante puede componer varias canciones, y una canción puede
       estar compuesta por varios cantantes (N-M).
    3. Entre cliente y disco: un cliente puede comprar varios discos, pero un disco sólo puede ser
       comprado 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 de
los profesores de una empresa dedicada a impartir cursos, así como una breve descripción de éstos, y
los alumnos a los cuales se les ha impartido. Empezamos identificando entidades. De un profesor se
desea conocer su nombre y apellidos, dirección y despacho, por lo tanto establece una entidad. Otra
entidad podría ser el alumno, del cual se desea conocer su nombre, apellidos, dirección y teléfono. Ni

                                                                                          P á g i n a | 26
que decir tiene que el curso describe otra entidad, de la cual se desea conocer su descripción. Sin
embargo, podemos recurrir a un procedimiento muy usual, denominado tipificación de estados, muy
usado en el diseño conceptual, y que consiste en tener una entidad que tipifique los posibles estados
que puede tomar un atributo. La principal ventaja de este procedimiento radica en que muchas veces
supone un ahorro de espacio de almacenamiento (por ejemplo al identificar nombres de ciudades
largas con un solo número) además de una estandarización de los datos almacenados (el estado sólo se
almacena una vez). Por ejemplo podemos tipificar las ciudades, para lo cual creamos una nueva
entidad ciudad, donde se almacenará un código y la descripción de la ciudad. Cuando almacenemos la
ciudad 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 ser
       impartido por un profesor (1-N).
    2. Alumno y Curso: un alumno puede asistir a varios cursos, y a un curso pueden asistir varios
       alumnos (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 17

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

Vamos a ver un último ejemplo. Supóngase un banco que desea almacenar todos sus clientes, además
de los productos que puede ofrecer a éstos. Cada cliente podrá escoger entre todos estos productos el o
los 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ón
de dichas empresas, para poder mejorar su política de inversiones. Puesto que dicho banco esta
constituido como sociedad anónima, desea almacenar todos los componentes de su consejo de
administración (actuales y ex-miembros) así como todas las actas de las reuniones ordinarias y
extraordinarias. Las decisiones de inversión en estas empresas saldrán como resultado de dichas
reuniones, así como la oferta de nuevos productos.

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

    1. Cliente: se desea conocer su nombre, apellidos, dirección y NIF, y estará identificado por un
       código interno cod_cliente.
    2. Producto: del cual queremos saber su descripción y estará identificado por un código interno
       cod_producto.
    3. Empresa: identifica las empresas en las cuales el banco ha invertido. De ellas se desea conocer
       su código, nombre y CIF.
    4. Consejo: establece los componentes del consejo de administración. Para ello se almacenará el
       nombre, apellidos y código de cargo de cada uno de sus componentes, y si el cargo es vigente
       o 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 de
       administració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. Sus
       atributos son cod_reunión, fecha, extraordinaria, que especifica si la reunión ha sido ordinaria
       o extraordinaria y una descripción.




                                               Figura 18




                                                                                       P á g i n a | 28
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 ser
       ofrecido a varios clientes.
    2. Consejo y cargo: un miembro del consejo sólo tiene un cargo, y cada cargo puede pertenecer a
       más de un miembro.
    3. Reunión y consejo: a cada reunión pueden asistir varios miembros del consejo de
       administració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 pero
       cada 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 una
       empresa, y cada decisión de inversión sólo sale de una reunión.


Modelo Lógico
Como ya se ha señalado, el diseño lógico de una base de datos consta de dos etapas: el diseño lógico
estándar y el diseño lógico específico. En el diseño lógico estándar, se toma el esquema conceptual
resultante de la fase de diseño conceptual, y teniendo en cuenta los requisitos de proceso, de construye
un esquema lógico estándar (ELS), que se apoya en un modelo lógico estándar (MLS), que será el
mismo modelo de datos soportado por el SGBD a utilizar (relacional, jerárquico, etc.), pero sin las
restricciones de ningún producto comercial en concreto. En nuestro caso se utilizará el MLS
relacional. Una buena forma de describir el ELS es utilizando el lenguaje estándar del MLS (por
ejemplo 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). Al
igual que en el caso anterior, una buena forma de describirlo es utilizando el lenguaje de definición de
datos (LDD) del producto especifico utilizado (en el caso de SQL-SERVER, se usará el TRANSACT
SQL). El diseño lógico específico está muy ligado a la fase de diseño físico, ya que ambos dependen
mucho del SGBD que se utilice.


                                                                                        P á g i n a | 29
En la fase de diseño lógico, además de las herramientas ya descritas (MLS, MLE, lenguajes SQL), se
disponen 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ándar
Lo primero que hay que realizar en la fase de diseño lógico, es obtener el esquema lógico estándar, a
partir del esquema conceptual obtenido en la primera fase. Las reglas que permiten pasar del modelo
E/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 sus
        mismos atributos, incluyendo las claves.
    ·   Cada relación N-M genera una tabla: las relaciones entre entidades con cardinalidad N-M
        generan 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 la
        entidad 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 el
tema anterior acerca de la gestión de una biblioteca. La entidad editorial está relacionada con la
entidad libro con cardinalidad 1-N, por lo tanto, la entidad libro, con cardinalidad N, importa la clave
de la entidad editorial, con cardinalidad 1. A su vez, está relacionada con la entidad autor, pero en este
caso, la cardinalidad es N-M, lo que implica que se generará una tabla intermedia, en la que se
almacenarán las claves de ambas entidades. Esta tabla, a la que denominaremos Libro_autor mantiene
la información de los códigos de libros junto con los códigos de autores. Posteriormente, si se desea
extraer más información, tanto del libro como del autor, se deberá acceder a sendas tablas. Por último
se dispone de la entidad Préstamo, que es dependiente tanto de la entidad Libro como de la entidad
Usuario, lo que quiere decir que se generará una tabla, con los atributos de la entidad Préstamo además
de las claves de las entidades de las que es dependiente, es decir, ISBN y Num_socio, que entrarán
como claves en dicha tabla. Esta última relación obtenida, mantiene información de qué libros han
sido prestados a qué usuarios y en qué fecha. El esquema de las tablas resultantes es el que se muestra
en la Figura .




                                                Figura 20

Veamos ahora el paso a tabla de otro ejemplo visto en el tema anterior, cuyo esquema conceptual es el
que 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 sus
       atributos, 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.



                                                                                          P á g i n a | 30

Contenu connexe

Tendances

Libro introduccion SQL Server Express Edition 2012
Libro introduccion SQL Server Express Edition 2012Libro introduccion SQL Server Express Edition 2012
Libro introduccion SQL Server Express Edition 2012
Andreiitah Puliido
 
diferencias de access y base oppen office
diferencias de access y base oppen officediferencias de access y base oppen office
diferencias de access y base oppen office
Laura Duque Lindenman
 
Caracteristicas de sql server
Caracteristicas de sql serverCaracteristicas de sql server
Caracteristicas de sql server
Anthony Varela
 
Unidad 2. actividad 4
Unidad 2. actividad 4Unidad 2. actividad 4
Unidad 2. actividad 4
melasa7
 
SQL SERVER COMPACT EDITION
SQL SERVER COMPACT EDITIONSQL SERVER COMPACT EDITION
SQL SERVER COMPACT EDITION
Diana
 
Componentes de sql server 2008
Componentes de sql server 2008Componentes de sql server 2008
Componentes de sql server 2008
Jillian Motoharu
 
Sql Server Express Equipo 6
Sql Server Express Equipo 6Sql Server Express Equipo 6
Sql Server Express Equipo 6
eduardo martinez
 

Tendances (19)

Caracteristicas de dbms_SQL SERVER 2008
Caracteristicas de dbms_SQL SERVER 2008Caracteristicas de dbms_SQL SERVER 2008
Caracteristicas de dbms_SQL SERVER 2008
 
Libro introduccion SQL Server Express Edition 2012
Libro introduccion SQL Server Express Edition 2012Libro introduccion SQL Server Express Edition 2012
Libro introduccion SQL Server Express Edition 2012
 
Tarea 1 bd
Tarea 1 bdTarea 1 bd
Tarea 1 bd
 
INTRODUCCIÓN A SQL SERVER MANAGEMENT STUDIO 2008
INTRODUCCIÓN A SQL SERVER MANAGEMENT STUDIO 2008INTRODUCCIÓN A SQL SERVER MANAGEMENT STUDIO 2008
INTRODUCCIÓN A SQL SERVER MANAGEMENT STUDIO 2008
 
Base de Datos Grupo Los Informaticos
Base de Datos Grupo Los InformaticosBase de Datos Grupo Los Informaticos
Base de Datos Grupo Los Informaticos
 
diferencias de access y base oppen office
diferencias de access y base oppen officediferencias de access y base oppen office
diferencias de access y base oppen office
 
Separata uni sql2008 administracion
Separata uni sql2008 administracionSeparata uni sql2008 administracion
Separata uni sql2008 administracion
 
Ventajas y desventajas de access
Ventajas y desventajas de accessVentajas y desventajas de access
Ventajas y desventajas de access
 
Sql
SqlSql
Sql
 
Access 2007
Access 2007Access 2007
Access 2007
 
Caracteristicas de sql server
Caracteristicas de sql serverCaracteristicas de sql server
Caracteristicas de sql server
 
Designer oracle
Designer oracleDesigner oracle
Designer oracle
 
Base de datos
Base de datos Base de datos
Base de datos
 
Unidad 2. actividad 4
Unidad 2. actividad 4Unidad 2. actividad 4
Unidad 2. actividad 4
 
SQL SERVER COMPACT EDITION
SQL SERVER COMPACT EDITIONSQL SERVER COMPACT EDITION
SQL SERVER COMPACT EDITION
 
Infografía Access 2016
Infografía Access 2016Infografía Access 2016
Infografía Access 2016
 
Componentes de sql server 2008
Componentes de sql server 2008Componentes de sql server 2008
Componentes de sql server 2008
 
Sql Server Express Equipo 6
Sql Server Express Equipo 6Sql Server Express Equipo 6
Sql Server Express Equipo 6
 
Manual sql nivel i
Manual sql   nivel iManual sql   nivel i
Manual sql nivel i
 

En vedette

Administración de bases de datos con sql server 2008 (ejemplo)
Administración de bases de datos con sql server 2008 (ejemplo)Administración de bases de datos con sql server 2008 (ejemplo)
Administración de bases de datos con sql server 2008 (ejemplo)
Ronald Huere Arias
 
Novedades sql server 2008 para developers
Novedades sql server 2008 para developersNovedades sql server 2008 para developers
Novedades sql server 2008 para developers
Enrique Catala Bañuls
 
sql server
sql serversql server
sql server
Pcentro
 
Vistas En Sql Y My Sql
Vistas En Sql Y My SqlVistas En Sql Y My Sql
Vistas En Sql Y My Sql
Ziscko
 
Minería datos con SQL Server 2012
Minería datos con SQL Server 2012Minería datos con SQL Server 2012
Minería datos con SQL Server 2012
Eduardo Castro
 
Tipos de base de datos de sql server 2008
Tipos de base de datos de sql server 2008Tipos de base de datos de sql server 2008
Tipos de base de datos de sql server 2008
Elizabeth Huaraya Apaza
 
Mejores practicas sql
Mejores practicas sqlMejores practicas sql
Mejores practicas sql
nnakasone
 
Migración de Base de Datos con SQL Developer
Migración de Base de Datos con SQL DeveloperMigración de Base de Datos con SQL Developer
Migración de Base de Datos con SQL Developer
Valentin Leonard Tabacaru
 
tutorial para crear una base de datos en sql
tutorial para crear una base de datos en sqltutorial para crear una base de datos en sql
tutorial para crear una base de datos en sql
itsl
 

En vedette (20)

Administración de bases de datos con sql server 2008 (ejemplo)
Administración de bases de datos con sql server 2008 (ejemplo)Administración de bases de datos con sql server 2008 (ejemplo)
Administración de bases de datos con sql server 2008 (ejemplo)
 
Los tipos de datos de sql server
Los tipos de datos de sql serverLos tipos de datos de sql server
Los tipos de datos de sql server
 
Administración y programación en sql server
Administración y programación en sql serverAdministración y programación en sql server
Administración y programación en sql server
 
Base de datos en sql
Base de datos en sqlBase de datos en sql
Base de datos en sql
 
Tipos de datos. Ejercicios en SQLServer
Tipos de datos. Ejercicios en SQLServerTipos de datos. Ejercicios en SQLServer
Tipos de datos. Ejercicios en SQLServer
 
Operadores en el lenguaje sql
Operadores en el lenguaje sqlOperadores en el lenguaje sql
Operadores en el lenguaje sql
 
Novedades sql server 2008 para developers
Novedades sql server 2008 para developersNovedades sql server 2008 para developers
Novedades sql server 2008 para developers
 
Martín Josué Sanchez Miranda 28 años
Martín Josué Sanchez Miranda 28 añosMartín Josué Sanchez Miranda 28 años
Martín Josué Sanchez Miranda 28 años
 
Tipos de datos en sql
Tipos de datos en sqlTipos de datos en sql
Tipos de datos en sql
 
Insertar editarborrar registros sql_server_tutorial 2015
Insertar editarborrar registros sql_server_tutorial 2015Insertar editarborrar registros sql_server_tutorial 2015
Insertar editarborrar registros sql_server_tutorial 2015
 
Modelos Relacionales SQL Server
Modelos Relacionales SQL ServerModelos Relacionales SQL Server
Modelos Relacionales SQL Server
 
sql server
sql serversql server
sql server
 
Vistas En Sql Y My Sql
Vistas En Sql Y My SqlVistas En Sql Y My Sql
Vistas En Sql Y My Sql
 
Minería datos con SQL Server 2012
Minería datos con SQL Server 2012Minería datos con SQL Server 2012
Minería datos con SQL Server 2012
 
Tipos de base de datos de sql server 2008
Tipos de base de datos de sql server 2008Tipos de base de datos de sql server 2008
Tipos de base de datos de sql server 2008
 
Seguridad sql server
Seguridad sql serverSeguridad sql server
Seguridad sql server
 
Mejores practicas sql
Mejores practicas sqlMejores practicas sql
Mejores practicas sql
 
Migración de Base de Datos con SQL Developer
Migración de Base de Datos con SQL DeveloperMigración de Base de Datos con SQL Developer
Migración de Base de Datos con SQL Developer
 
tutorial para crear una base de datos en sql
tutorial para crear una base de datos en sqltutorial para crear una base de datos en sql
tutorial para crear una base de datos en sql
 
Tipos de datos sql server 2014
Tipos de datos sql server 2014Tipos de datos sql server 2014
Tipos de datos sql server 2014
 

Similaire à Diseño y programación de bases de datos con sql server 2008

Administración de bases de datos con sql server 2008 (ejemplo)
Administración de bases de datos con sql server 2008 (ejemplo)Administración de bases de datos con sql server 2008 (ejemplo)
Administración de bases de datos con sql server 2008 (ejemplo)
Yol Gt
 
Diseño y programación de bases de datos con sql server 2008 (ejemplo)
Diseño y programación de bases de datos con sql server 2008 (ejemplo)Diseño y programación de bases de datos con sql server 2008 (ejemplo)
Diseño y programación de bases de datos con sql server 2008 (ejemplo)
La Positiva Seguros
 
Curso de SQL y EXCEL IMPORTANTE PARA .pdf
Curso de SQL y EXCEL IMPORTANTE PARA .pdfCurso de SQL y EXCEL IMPORTANTE PARA .pdf
Curso de SQL y EXCEL IMPORTANTE PARA .pdf
expertoleonelmartine
 
Microsoft MCSA Windows Server 2008 y 2012
Microsoft MCSA Windows Server 2008 y 2012Microsoft MCSA Windows Server 2008 y 2012
Microsoft MCSA Windows Server 2008 y 2012
Cas Trainining
 
Aplicacion mvc entity_framework_login_membership
Aplicacion mvc entity_framework_login_membershipAplicacion mvc entity_framework_login_membership
Aplicacion mvc entity_framework_login_membership
Jose B Flores P
 
2 Integracion Forms Bpel
2  Integracion Forms Bpel2  Integracion Forms Bpel
2 Integracion Forms Bpel
Pedro Gallardo
 
Informe general de proyecto imes
Informe general de proyecto imesInforme general de proyecto imes
Informe general de proyecto imes
imes2011
 

Similaire à Diseño y programación de bases de datos con sql server 2008 (20)

Administración de bases de datos con sql server 2008 (ejemplo)
Administración de bases de datos con sql server 2008 (ejemplo)Administración de bases de datos con sql server 2008 (ejemplo)
Administración de bases de datos con sql server 2008 (ejemplo)
 
Diseño y programación de bases de datos con sql server 2008 (ejemplo)
Diseño y programación de bases de datos con sql server 2008 (ejemplo)Diseño y programación de bases de datos con sql server 2008 (ejemplo)
Diseño y programación de bases de datos con sql server 2008 (ejemplo)
 
Curso de SQL y EXCEL IMPORTANTE PARA .pdf
Curso de SQL y EXCEL IMPORTANTE PARA .pdfCurso de SQL y EXCEL IMPORTANTE PARA .pdf
Curso de SQL y EXCEL IMPORTANTE PARA .pdf
 
Diplomado Técnico SQL Server 2012 - Sesión 6/8
Diplomado Técnico SQL Server 2012 - Sesión 6/8Diplomado Técnico SQL Server 2012 - Sesión 6/8
Diplomado Técnico SQL Server 2012 - Sesión 6/8
 
Catalogo formación MCT - MVP
Catalogo formación MCT - MVPCatalogo formación MCT - MVP
Catalogo formación MCT - MVP
 
Introducción.docx
Introducción.docxIntroducción.docx
Introducción.docx
 
Microsoft sql server 2012
Microsoft sql server 2012Microsoft sql server 2012
Microsoft sql server 2012
 
Practica 4
Practica 4Practica 4
Practica 4
 
SEMANA 1 Introduccion.pptx
SEMANA 1 Introduccion.pptxSEMANA 1 Introduccion.pptx
SEMANA 1 Introduccion.pptx
 
Microsoft MCSA Windows Server 2008 y 2012
Microsoft MCSA Windows Server 2008 y 2012Microsoft MCSA Windows Server 2008 y 2012
Microsoft MCSA Windows Server 2008 y 2012
 
Practica 5
Practica 5Practica 5
Practica 5
 
Plan Unidades
Plan UnidadesPlan Unidades
Plan Unidades
 
Aplicacion mvc entity_framework_login_membership
Aplicacion mvc entity_framework_login_membershipAplicacion mvc entity_framework_login_membership
Aplicacion mvc entity_framework_login_membership
 
TriggerDB Brochure
TriggerDB BrochureTriggerDB Brochure
TriggerDB Brochure
 
Introducción al Desarrollo para SharePoint con Visual Studio 2008
Introducción al Desarrollo para SharePoint con Visual Studio 2008Introducción al Desarrollo para SharePoint con Visual Studio 2008
Introducción al Desarrollo para SharePoint con Visual Studio 2008
 
2 Integracion Forms Bpel
2  Integracion Forms Bpel2  Integracion Forms Bpel
2 Integracion Forms Bpel
 
Apertura - Paola Pullas
Apertura - Paola Pullas Apertura - Paola Pullas
Apertura - Paola Pullas
 
SDK PALESTRA
SDK PALESTRASDK PALESTRA
SDK PALESTRA
 
Informe general de proyecto imes
Informe general de proyecto imesInforme general de proyecto imes
Informe general de proyecto imes
 
Teamnet centro de competencia
Teamnet centro de competenciaTeamnet centro de competencia
Teamnet centro de competencia
 

Plus de Israel Hernandez

Curso de linux para novatos, brutos y extremadamente torpes
Curso de linux para novatos, brutos y extremadamente torpesCurso de linux para novatos, brutos y extremadamente torpes
Curso de linux para novatos, brutos y extremadamente torpes
Israel Hernandez
 

Plus de Israel Hernandez (8)

Introducion a POO
Introducion a POOIntroducion a POO
Introducion a POO
 
Elaboración de un proyecto de investigación
Elaboración de un proyecto de investigaciónElaboración de un proyecto de investigación
Elaboración de un proyecto de investigación
 
Antología de Estudio de Mercado
Antología de Estudio de MercadoAntología de Estudio de Mercado
Antología de Estudio de Mercado
 
Ayuda para Manual
Ayuda para ManualAyuda para Manual
Ayuda para Manual
 
Mantenimiento preventivo de hardware de computadoras
Mantenimiento preventivo de hardware de computadorasMantenimiento preventivo de hardware de computadoras
Mantenimiento preventivo de hardware de computadoras
 
Examen practico final de cisco
Examen practico final de ciscoExamen practico final de cisco
Examen practico final de cisco
 
Curso de linux para novatos, brutos y extremadamente torpes
Curso de linux para novatos, brutos y extremadamente torpesCurso de linux para novatos, brutos y extremadamente torpes
Curso de linux para novatos, brutos y extremadamente torpes
 
Introduccion a sql
Introduccion a sqlIntroduccion a sql
Introduccion a sql
 

Diseño y programación de bases de datos con sql server 2008

  • 1. Diseño y programación de bases de datos con SQL Server 2008 Pedro López-Belmonte / Aroa Solana
  • 2. Sipnosis En este manual se tratan las diferentes tareas necesarias para llevar a cabo el diseño de una base de 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 los diseñ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 todos los temas necesarios para dejar en perfecto funcionamiento cualquier base de datos sobre SQL Server 2008. También se exploran las características que aporta la última versión del sistema gestor de base de datos de Microsoft, como la integración con .NET 3.5 (objetos SQL CLR), o las nuevas aplicaciones del servidor, como los Reporting Services, Notification Services o los Integration Services, entre otras muchas novedades como los nuevos tipos de datos espaciales muy útiles para almacenar datos cartográficos. Pedro López-Belmonte es Licenciado en Ciencias Físicas por la Universidad Complutense de Madrid, con más de 8 años de experiencia en el mundo del desarrollo, consultoría y formación. Es especialista en herramientas de desarrollo .NET y bases de datos. Ha participado en numerosos proyectos de desarrollo en entornos corporativos de mediano 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ón MCT, y desde el comienzo de su carrera profesional ha impartido formación, una de sus pasiones. Aroa Solana Ruiz es Microsoft Certified IT Professional en Database Developer, también Microsoft Certified Technology Specialist en SQL Server 2005, .NET Framework 3.5, Windows Forms Applications, SQL Server 2005, al igual que Database Development en SQL Server 2008. Actualmente ostenta la certificación MCT (Microsoft Certified Trainer) que la permite impartir un gran número de cursos oficiales de Microsoft y trabajar como formadora en Alhambra-Eidos. Ha impartido formación sobre la tecnología .NET, desarrollo de aplicaciones Windows, Web, ADO, Distribuidas, WPF, WCF, WWF, Silverlight y UML, por otra parte imparte formación en administración de bases de datos SQL Server y desarrollo de bases de datos SQL Server, tanto en 2005 como en 2008. Además posee experiencia en J2SE y J2EE. Dentro de la gestión de procesos posee la certificación ITIL V2 Foundations.
  • 3. 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 ser realizada con la autorización de sus titulares, salvo excepción prevista por la ley. Diríjase a CEDRO (Centro Español de Derechos Reprográficos, www.cedro.org) si necesita fotocopiar, escanear o hacer copias digitales de algún fragmento de esta obra.
  • 4. 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!.
  • 5. Diseño y programación de bases de datos con SQL Server 2008 Pedro López-Belmonte Aroa Solana
  • 6.
  • 7. Indice Introducción .................................................................................................................................... 15 Introducción .................................................................................................................................. 15 Introducción a SQL Server 2008 ................................................................................................... 16 Nuevas Características .................................................................................................................. 17 Funciones Básicas ..................................................................................................................... 17 Funciones de Business Intelligence............................................................................................ 18 Herramientas de SQL Server 2008 ................................................................................................ 18 Libros en pantalla ...................................................................................................................... 18 SQL Server Configuration Manager .......................................................................................... 18 El SQL Server Management Studio ........................................................................................... 19 Creación de los modelos Conceptual, Lógico y Físico .................................................................... 20 Modelo Conceptual ....................................................................................................................... 20 Etapas del diseño conceptual ......................................................................................................... 21 El modelo entidad / relación .......................................................................................................... 21 Ejemplos prácticos de diseño conceptual ....................................................................................... 25 Modelo Lógico ............................................................................................................................. 29 Paso del esquema conceptual al esquema lógico estándar ..............................................................30 Etapas en el diseño lógico ............................................................................................................. 31 Particionamiento horizontal de relaciones ...................................................................................... 32 Particionamiento vertical de relaciones .......................................................................................... 35 Particionamiento mixto ................................................................................................................. 37 Teoría de la normalización ............................................................................................................ 38 Ejemplos prácticos de normalización............................................................................................. 42 Proceso de desnormalización......................................................................................................... 47 Modelo Físico ............................................................................................................................... 48 Estrategias en el diseño físico........................................................................................................ 48 Conceptos básicos sobre gestión de ficheros .................................................................................. 49 Organización de ficheros ............................................................................................................... 49 Técnicas para el aumento de eficiencia ..........................................................................................50 Seguridad ........................................................................................................................................ 52 Inicios de sesión ............................................................................................................................ 52 Roles ............................................................................................................................................ 62 Funciones fijas de servidor ........................................................................................................ 62 Funciones de base de datos ........................................................................................................ 64 Funciones 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 ................................................................................................. 73 Páginas ..................................................................................................................................... 73 Extensiones ............................................................................................................................... 74 Objetos de la Base de Datos ......................................................................................................75 Bases de Datos de Sistema ............................................................................................................76 Master .......................................................................................................................................76 TempDB ................................................................................................................................... 76 Model ....................................................................................................................................... 77 MSDB ...................................................................................................................................... 77 Elementos básicos para la creación de bases de datos .................................................................... 77 Management Studio .................................................................................................................. 77 Página |7
  • 8. CREATE DATABASE .............................................................................................................80 Grupos de archivos.................................................................................................................... 88 Creación de un grupo de archivos .......................................................................................... 89 Uso de los grupos de archivos ................................................................................................ 90 Esquemas .................................................................................................................................. 91 Creación de tablas ........................................................................................................................... 94 Tipos de datos en SQL Server 2008............................................................................................... 95 CHAR ....................................................................................................................................... 95 NCHAR .................................................................................................................................... 95 VARCHAR ............................................................................................................................... 95 NVARCHAR ............................................................................................................................ 96 TEXT........................................................................................................................................ 96 NTEXT ..................................................................................................................................... 96 IMAGE ..................................................................................................................................... 96 INT ........................................................................................................................................... 96 BIGINT .................................................................................................................................... 96 SMALLINT .............................................................................................................................. 96 TINYINT .................................................................................................................................. 97 DECIMAL/NUMERIC ............................................................................................................. 97 FLOAT ..................................................................................................................................... 97 REAL ....................................................................................................................................... 97 MONEY ................................................................................................................................... 97 SMALLMONEY ...................................................................................................................... 97 DATETIME ..............................................................................................................................97 SMALLDATETIME ................................................................................................................. 98 TIMESTAMP ........................................................................................................................... 98 UNIQUEIDENTIFIER.............................................................................................................. 98 BINARY................................................................................................................................... 98 VARBINARY........................................................................................................................... 98 BIT ........................................................................................................................................... 98 XML ......................................................................................................................................... 99 CURSOR .................................................................................................................................. 99 TABLE ..................................................................................................................................... 99 SQL_VARIANT ....................................................................................................................... 99 Creación de tablas ......................................................................................................................... 99 Modificar tablas .......................................................................................................................... 100 Eliminar tablas ............................................................................................................................ 101 Propiedades de las columnas ....................................................................................................... 102 Valores DEFAULT ................................................................................................................. 102 Valores IDENTITY................................................................................................................. 103 Integridad de los datos ................................................................................................................ 104 Integridad de Entidad .............................................................................................................. 104 Integridad de Dominio............................................................................................................. 105 Integridad Referencial ............................................................................................................. 105 Tipos de restricciones .............................................................................................................. 105 PRIMARY KEY ................................................................................................................. 105 FOREIGN KEY .................................................................................................................. 107 Restricción UNIQUE........................................................................................................... 112 Restricciones CHECK ......................................................................................................... 113 Objetos RULE y DEFAULT................................................................................................ 116 RULE .............................................................................................................................. 116 DEFAULT ...................................................................................................................... 117 Consideraciones sobre las restricciones ................................................................................... 117 Creación de Índices ....................................................................................................................... 119 Página |8
  • 9. ¿Qué es un índice? ...................................................................................................................... 119 Tipos 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 ..................................................................................................................... 123 Especificar orden para los campos ........................................................................................... 125 Include ................................................................................................................................ 125 Factor de relleno .................................................................................................................. 126 Rellenar Índice .................................................................................................................... 127 Pasar por alto claves duplicadas ........................................................................................... 127 Volver a generar el índice .................................................................................................... 128 Volver a calcular estadísticas ............................................................................................... 128 Almacenar resultados de orden intermedio en la base de datos tempdb ................................. 129 Permitir procesamiento en línea de instrucciones DML ........................................................ 130 Usar bloqueos de fila y de página al tener acceso al índice ................................................... 130 Grado máximo de paralelismo ............................................................................................. 130 Almacenamiento del índice.................................................................................................. 131 Partición de índices y tablas ........................................................................................................ 131 Funciones de partición............................................................................................................. 132 Esquemas de partición ............................................................................................................. 133 Crear tablas e índices particionados ......................................................................................... 133 Modificar funciones y esquemas de partición .......................................................................... 135 Insertar y extraer tablas de particiones ................................................................................. 135 Mantenimiento de Particiones .............................................................................................. 137 Creación de vistas ......................................................................................................................... 138 Como crear vistas........................................................................................................................ 138 Encriptación de la definición ................................................................................................... 143 Enlazar a un esquema .............................................................................................................. 144 Comprobar criterios ................................................................................................................ 144 Modificar y eliminar vistas.......................................................................................................... 145 Vistas indexadas ......................................................................................................................... 145 Procedimientos Almacenados ....................................................................................................... 147 Creación de Procedimientos Almacenados .................................................................................. 148 Llamadas a procedimientos ..................................................................................................... 149 Procedimientos almacenados parametrizados........................................................................... 149 Valor de Retorno ..................................................................................................................... 151 Opciones Adicionales .............................................................................................................. 152 Estructuras de control de flujo y errores ...................................................................................... 153 IF…ELSE ............................................................................................................................... 153 WHILE…BREAK .................................................................................................................. 154 CASE...................................................................................................................................... 155 WAITFOR .............................................................................................................................. 155 Gestión de Errores ...................................................................................................................... 156 La variable @@ERROR ......................................................................................................... 157 RAISERROR .......................................................................................................................... 160 Mensaje............................................................................................................................... 161 Severidad ............................................................................................................................ 162 Estado ................................................................................................................................. 162 WITH.................................................................................................................................. 162 Consideraciones de seguridad y rendimiento ............................................................................... 165 Página |9
  • 10. Seguridad ................................................................................................................................ 166 Rendimiento............................................................................................................................ 166 Depuración ............................................................................................................................. 167 Funciones definidas por el usuario ............................................................................................... 172 Funciones escalares ..................................................................................................................... 173 Funciones de tabla ...................................................................................................................... 176 Funciones Deterministas y No Deterministas............................................................................... 179 Depuración de funciones definidas por el usuario ........................................................................ 181 Tipos de datos definidos por el usuario ........................................................................................ 183 Creación del tipo de dato definido por el usuario ......................................................................... 183 TSQL ...................................................................................................................................... 184 Management Studio ................................................................................................................ 185 Desencadenadores (triggers)......................................................................................................... 191 Tipos de Desencadenadores ........................................................................................................ 192 Desencadenadores DML ......................................................................................................... 192 ¿Restricciones?.................................................................................................................... 193 Tablas de soporte................................................................................................................. 194 Creación de un desencadenador ................................................................................................... 194 Comprobar columnas .............................................................................................................. 197 Desencadenadores DDL .............................................................................................................. 199 Los desencadenadores en el Management Studio ......................................................................... 201 Consideraciones de rendimiento .................................................................................................. 205 Diseño de objetos SQL CLR ......................................................................................................... 206 Integración con CLR ................................................................................................................... 206 Habilitar la integración ............................................................................................................ 208 Visual Studio 2008 .................................................................................................................. 208 Atributos .NET .................................................................................................................... 212 Implementación .......................................................................................................................... 213 Implementar ensamblados ....................................................................................................... 213 Procedimientos almacenados CLR .............................................................................................. 216 Funciones CLR ........................................................................................................................... 219 SqlFunction............................................................................................................................. 220 Funciones escalares ................................................................................................................. 221 Funciones de tabla ................................................................................................................... 223 Agregados................................................................................................................................... 224 SqlUserDefinedAggregate ....................................................................................................... 225 Init .......................................................................................................................................... 226 Accumulate ............................................................................................................................. 226 Merge ..................................................................................................................................... 226 Terminate................................................................................................................................ 226 Desencadenadores CLR .............................................................................................................. 227 SqlTrigger ............................................................................................................................... 229 TriggerContext ........................................................................................................................ 229 SQL Server 2008 Reporting Services ........................................................................................... 231 Arquitectura de los Servicios de Informes ................................................................................... 231 Capa de aplicación .................................................................................................................. 232 Navegador de Internet ......................................................................................................... 232 Herramientas de Informes .................................................................................................... 233 Business Intelligence Development Studio........................................................................... 234 Herramienta de Configuración de Superficie........................................................................ 234 Herramienta de Configuración del Servidor de Informes ...................................................... 235 P á g i n a | 10
  • 11. SQL Server Management Studio.......................................................................................... 235 Aplicaciones personalizadas ................................................................................................ 236 Capa de servidor ..................................................................................................................... 236 Servicio Web ....................................................................................................................... 236 Servicio de Windows ........................................................................................................... 236 Interfaces de programación .................................................................................................. 236 Procesadores ....................................................................................................................... 236 Extensiones ......................................................................................................................... 237 Autenticación .................................................................................................................. 237 Extensiones de Proceso de datos ...................................................................................... 237 Extensiones de presentación ............................................................................................ 237 Extensiones de Proceso de Informes ................................................................................ 237 Extensiones de Distribución............................................................................................. 237 Capa de datos .......................................................................................................................... 237 Bases de datos del servidor .................................................................................................. 237 Diseño de Informes ..................................................................................................................... 238 Asistente para la Generación de Informes ................................................................................ 238 Diseño de un informe .................................................................................................................. 244 Elementos de Datos ................................................................................................................. 244 Origen de datos (DataSource) .............................................................................................. 245 Conjunto de datos (dataset) .................................................................................................. 246 Elementos del Informe ............................................................................................................ 246 Regiones de datos ................................................................................................................ 247 Elementos independientes.................................................................................................... 248 Estructura de un informe ............................................................................................................. 248 Implementación de un informe .................................................................................................... 252 Soporte para consultas .................................................................................................................. 256 Consultas para la devolución de datos ......................................................................................... 257 La cláusula WHERE ............................................................................................................... 258 ORDER BY ............................................................................................................................ 260 GROUP BY ............................................................................................................................ 261 Agregados ............................................................................................................................... 262 AVG ....................................................................................................................................... 262 MIN / MAX ............................................................................................................................ 263 COUNT .................................................................................................................................. 264 Cláusula HAVING .................................................................................................................. 264 Cláusula DISTINCT................................................................................................................ 265 Modificación de datos ................................................................................................................. 265 INSERT .................................................................................................................................. 266 UPDATE ................................................................................................................................ 266 DELETE ................................................................................................................................. 267 Combinación de tablas ................................................................................................................ 267 INNER JOIN .......................................................................................................................... 268 OUTER JOIN ......................................................................................................................... 269 FULL JOIN............................................................................................................................. 270 UNION, EXCEPT & INTERSECT ......................................................................................... 271 Caso práctico .............................................................................................................................. 272 LINQ to SQL ................................................................................................................................ 274 Modelo Objeto/Relacional........................................................................................................... 274 Herramientas de generación de Entidades .................................................................................... 276 Uso de SQLMetal.................................................................................................................... 276 Visual Studio LINQ to SQL Designer ..................................................................................... 278 P á g i n a | 11
  • 12. Consultar con LINQ to SQL .................................................................................................... 279 Resumen ................................................................................................................................. 280 Uso de XML .................................................................................................................................. 281 Recuperación de XML mediante FOR XML ............................................................................... 281 Introducción a la cláusula FOR XML ...................................................................................... 282 Modo RAW......................................................................................................................... 284 Recuperación de datos en elementos de fila genéricos ...................................................... 284 Recuperación de datos como elementos ........................................................................... 285 Recuperación de datos utilizando un elemento raíz y nombre de elemento de fila personalizado................................................................................................................... 285 Modo AUTO ....................................................................................................................... 288 Recuperación de datos anidados utilizando el modo AUTO ............................................. 288 Recuperación de datos como elementos ........................................................................... 289 Modo EXPLICIT ................................................................................................................ 291 Tablas universales ........................................................................................................... 292 Definición de asignaciones de columna en una tabla universal ......................................... 292 Creación de una consulta para construir la tabla universal ................................................ 293 Modo PATH ....................................................................................................................... 295 Recuperación de datos utilizando el modo PATH............................................................. 295 Fragmentación de XML mediante OPENXML ............................................................................ 296 Proceso de fragmentación de datos XML................................................................................. 297 Procedimientos Almacenados para administrar árboles de nodos en memoria ...................... 297 Creación del árbol mediante sp_xml_preparedocument .................................................... 298 Quitar el árbol mediante sp_xml_removedocument .......................................................... 298 Sintaxis de OPENXML ........................................................................................................... 299 Uso de una declaración de esquema ..................................................................................... 300 Uso del tipo de datos xml ............................................................................................................ 301 El tipo de datos xml................................................................................................................. 302 XQuery ................................................................................................................................... 303 Sintaxis de XQuery ............................................................................................................. 303 Instrucciones FLOWR ..................................................................................................... 303 Los métodos query, value y exist ............................................................................................. 305 El método query .................................................................................................................. 305 El método value................................................................................................................... 305 El método exists .................................................................................................................. 306 El método modify.................................................................................................................... 306 El método nodes ...................................................................................................................... 307 Service Broker .............................................................................................................................. 310 ¿Qué es el Service Broker?.......................................................................................................... 310 Ventajas de Service Broker ..................................................................................................... 311 Usos Típicos de Service Broker ............................................................................................... 311 Arquitectura del sistema de Service Broker ................................................................................. 311 Tipo de mensaje ...................................................................................................................... 312 Contrato .................................................................................................................................. 312 Cola ........................................................................................................................................ 312 Servicio................................................................................................................................... 312 Programa de Servicio .............................................................................................................. 313 Arquitectura de conversación de Service Broker .......................................................................... 313 Mensaje .................................................................................................................................. 314 Conversación de diálogo ......................................................................................................... 314 Grupo de conversación ............................................................................................................ 314 Ruta ........................................................................................................................................ 315 Enlace de servicio remoto........................................................................................................ 315 P á g i n a | 12
  • 13. Proceso de conversación de Service Broker ................................................................................. 315 Arquitectura de seguridad de Service Broker ............................................................................... 317 Certificados ............................................................................................................................. 317 Seguridad de transporte ........................................................................................................... 317 Seguridad de Diálogo .............................................................................................................. 317 Creación de objetos de Service Broker ........................................................................................ 318 Sintaxis para crear tipos de mensajes ....................................................................................... 318 Sintaxis para crear contratos .................................................................................................... 319 Sintaxis para crear colas .......................................................................................................... 321 Sintaxis para crear servicios .................................................................................................... 322 Envío y recepción de mensajes .................................................................................................... 323 Sintaxis para enviar mensajes .................................................................................................. 323 Sintaxis para recibir mensajes ..................................................................................................... 325 FILESTREAM.............................................................................................................................. 329 Uso de FileStream....................................................................................................................... 330 Almacenamiento de FileStream ............................................................................................... 330 Seguridad Integrada ............................................................................................................. 330 Administración Integrada .................................................................................................... 331 Habilitar FILESTREAM ............................................................................................................. 331 Administrar datos FILESTREAM usando Transact-SQL ............................................................. 332 Actualizar datos FILESTREAM .............................................................................................. 333 Eliminar datos FILESTREAM ................................................................................................ 333 Administrar daos FILESTREAM usando Win32 ......................................................................... 333 Leer la ruta de acceso al archivo .............................................................................................. 333 Leer el contexto de la transacción ............................................................................................ 334 Obtener un identificador de archivos de Win32 ....................................................................... 334 La API OpenSqlFilestream .................................................................................................. 334 Parámetros....................................................................................................................... 335 FilestreamPath ................................................................................................................ 335 DesiredAccess ................................................................................................................. 335 OpenOptions ................................................................................................................... 335 FilestreamTransactionContext ......................................................................................... 336 FilestreamTransactionContextLength .............................................................................. 336 AllocationSize.................................................................................................................. 336 Conflictos entre Win32 y Transact-SQL ...................................................................................... 336 Ejemplos ................................................................................................................................. 337 Abrir un BLOB de FILESTREAM para acceso de escritura ................................................. 337 Abrir un BLOB de FILESTREAM para acceso de lectura .................................................... 337 Abrir y cerrar varios archivos BLOB de FILESTREAM ...................................................... 338 No se puede cerrar un cursor................................................................................................ 338 Cómo crear una base de datos habilitada para FILESTREAM ..................................................... 339 Crear una base de datos habilitada para FILESTREAM ........................................................... 339 Cómo mover una base de datos habilitada para FILESTREAM ................................................... 340 Crear una tabla para almacenar datos FILESTREAM .................................................................. 341 Prácticas recomendadas............................................................................................................... 341 Configuración física y mantenimiento ..................................................................................... 341 Diseño físico de base de datos ................................................................................................. 342 Datos Espaciales ............................................................................................................................ 343 Datos espaciales .......................................................................................................................... 343 Poblar datos espaciales ............................................................................................................ 344 GML ....................................................................................................................................... 347 Objetos Geométricos ........................................................................................................... 347 Elementos de GML ................................................................................................................. 350 P á g i n a | 13
  • 14. Polígonos, delimitadores interiores y Multipolígonos ........................................................... 351 Tres Dimensiones ................................................................................................................ 351 Resolución Caso Práctico .............................................................................................................. 356 Listado de clientes por comercial ..................................................................................... 356 Listado de clientes potenciales por comercial ................................................................... 356 Listado de envíos a clientes.............................................................................................. 357 Listado de pedidos a proveedores..................................................................................... 357 Listado de productos bajos en stock ................................................................................. 357 Total ventas por comercial ............................................................................................... 358 P á g i n a | 14
  • 15. Introducción Introducción SQL Server 2008 es la última versión del Sistema Gestor de Bases de Datos de Microsoft para el mercado 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 a ser 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 Server Express), 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. La primera versión fue desarrollada para OS/2 en 1988, y no era más que una pequeña base de datos. De hecho, el sistema operativo OS/2 fue desarrollado conjuntamente por IBM y Microsoft para dar soporte a Sybase SQL Server La primera edición de SQL Server para Windows fue la 4.2 desarrollada en 1993, (compatible con Windows NT). SQL Server 4.2 era una base de datos para pequeños entornos (desktop database), con funcionalidad limitada y no demasiado potente. En 1994, Microsoft y Sybase deciden no continuar su unión con SQL Server. Esto originó una nueva versión de SQL Server por parte de Microsoft en 1995. P á g i n a | 15
  • 16. La primera versión independiente de SQL Server fue la 6.05. En esta versión se introdujeron una serie de mejoras en cuanto a rendimiento y funcionalidad que permitían considerar a este sistema adecuado para gestionar bases de datos de pequeños negocios o aplicaciones de Internet. La siguiente versión, la 6.5, fue lanzada en 1996. En 1998, Microsoft lanzó SQL Server 7.0, que supuso un cambio en cuanto a su situación en el mercado de los RDBMS. El gran número de mejoras en cuanto a rendimiento, potencia y facilidad de uso, así como la gran cantidad de características y aplicaciones auxiliares, incluidas en el producto sin coste adicional, situaron a SQL Server como alternativa a otros sistemas tales como Oracle o DB2 en el entorno de negocios de tamaño medio. Con SQL Server 2000, Microsoft terminó de consolidar su posición en el mercado de los Sistemas Gestores de Bases de Datos. Esta versión ya está dirigida al entorno empresarial, debido a su rendimiento, escalabilidad y robustez. Lo bueno es que Microsoft consiguió alcanzar estos objetivos sin sacrificar la facilidad de uso y el gran número de herramientas de desarrollo, gestión y análisis incluidas en SQL Server. De hecho, en el año 2001 Oracle cedió su posición de dominio, pasando el testigo 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 SQL Server 2005 y 2008, como Xerox, Nasdaq, Groupama, ING, y un largo etc. Para comprender este movimiento en torno al RDBMS (Relational DataBase Management System) de Microsoft, hay que unir que las cifras de las pruebas rendimiento (benchmarks) a las que se someten a SQL Server se acercan a las cifras de Oracle, junto con la facilidad de uso y coste del sistema de Microsoft, en contraposición con la complejidad y elevado precio del sistema de Oracle. Introducción a SQL Server 2008 SQL Server 2008 incluye una gran cantidad de nuevas características que permiten una gestión más racional 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 SQL Server, lo que abre un gran abanico de posibilidades complementando la funcionalidad que proporciona 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 de funciones de búsqueda y manipulación en código XML, como XQuery o XPath directamente en el propio campo de la tabla. También permite la validación de la estructura del propio documento contra esquemas XSD. Las herramientas de configuración y mantenimiento también han sufrido una renovación completa. El Administrador Corporativo, o el Analizador de Consultas de SQL Server 2000 dejan paso al SQL Server Management Studio (SSMS), que agrupa y amplia la funcionalidad de ambos. Esta nueva herramienta permite gestión multiservidor tanto de servidores OLTP como de servidores OLAP o gestión de funciones adicionales. Una nueva característica muy interesante es la posibilidad de crear una solución, lo que permite una gestión más eficaz de proyectos de desarrollo, así como la integració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 Development Studio, que no es más que una versión reducida de Visual Studio 2008. Esta nueva herramienta sirve P á g i n a | 16
  • 17. para desarrollar proyectos de integración con .NET, o también otros como proyectos de Analysis Services, Integration Services o Reporting Services. SQL Server amplia y mejora los Reporting Services (SSRS), que aunque inicialmente fueron concebidos para aparecer con esta última versión del servidor, Microsoft decidió publicar una versión reducida para SQL Server 2000. También incluye un mejorado y ampliado entorno para los Servicios de Integración (SQL Server Integration Services, SSIS), anteriormente conocidos como Data Transformation Services. Otra de las nuevas características la constituye el Service Broker, que es un entorno de trabajo diseñ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ún sus distintas ediciones, que describo a continuación: · Express: Esta edición es la evolución del antiguo MSDE, la versión gratuita de SQL Server 2000. Sigue siendo gratuita y, aunque limitada, incorpora un pequeño entorno gráfico de administración y permite un máximo de 50 conexiones concurrentes (suficiente para cualquier entorno pequeño). · Workgroup: Está diseñada para entornos y departamentos pequeños y medianos. Posee muchas 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 las características, como los Servicios de Análisis, o los Servicios de Integración, pero elimina las 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 a entornos de prueba y laboratorio, contiene limitaciones en cuanto a CPUs soportadas y a licencias. · Enterprise: Esta es la versión completa, la más potente, escalable y robusta y, por supuesto, la más cara. Está destinada al entorno empresarial de tamaño medio-grande, donde el rendimiento, la alta disponibilidad y la escalabilidad son cruciales. Nuevas Características Las 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, exceptuando las versiones Enterprise y Developer, que como hemos visto antes, las soportan todas. Veamos un resumen 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, el nuevo tipo de dato XML, consultas recursivas, gestión de errores con estructuras TRY…CATCH, la herramienta Express Manager (indicada para la versión Express y es gratuita), conexión dedicada para el administrador, adición de memoria en caliente, encriptación de datos, la herramienta Management Studio, vistas de sistema, herramientas de Reporting Services, integración con Microsoft Baseline Security Analyzer (MBSA), replicación (transaccional y de mezcla), Service Broker, procedimientos almacenados, vistas y desencadenadores, tipos definidos por el usuario, indexación XML nativa, búsquedas de texto P á g i n a | 17
  • 18. completo en datos XML y manipulación con XQUERY y el Best Practices Analyzer (se puede descargar 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 de datos (Log Shipping). · La versión Workgroup no soporta la funcionalidad de espejo (DB Mirroring), el Database Tuning Advisor (sustituye al Index Tunning Wizard), el failover clustering, los Servicios de Integració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 online de tablas y vistas, restauración de bases de datos online, operaciones de indexación en paralelo, índices en vistas, integración de flujo de datos, disponibilidad de la base de datos en operaciones de undo durante la restauración, transformaciones avanzadas como minería de datos 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 tipo estrella, y el Business Intelligence Development Studio. · La versión Express no soporta integración con el Management Studio, el profiler y otras herramientas, 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 Dimensional Unificado (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 2008 La nueva versión de SQL Server trae consigo un buen puñado de nuevas herramientas, algunas nuevas, y otras simplemente una evolución de las anteriores. Vamos a repasar las más importantes, para conocer su funcionalidad. Libros en pantalla Los libros en pantalla de SQL Server han sufrido una buena revisión, y ahora utilizan la nueva interfaz de ayuda de .NET 2008, que proporciona nuevos modelos de organización de datos, búsquedas por preferencias, online, en local, y muchas otras opciones. SQL Server Configuration Manager Esta 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. P á g i n a | 18
  • 19. El SQL Server Management Studio El SQL Server Management Studio es la nueva herramienta de administración de SQL Server, y representa una gran evolución frente a las versiones anteriores. Hereda su aspecto y algo de funcionalidad de Visual Studio 2008, además de integrar un gran número de funciones que antes estaban disponibles como herramientas independientes. P á g i n a | 19
  • 20. Creación de los modelos Conceptual, Lógico y Físico Modelo Conceptual Como ya se ha visto en el tema anterior, el diseño conceptual, que constituye la primera etapa en el diseño de una base de datos, consiste en obtener una buena representación de los recursos de información de la empresa, con independencia de usuario o aplicaciones en particular y fuera de consideraciones sobre eficiencia del ordenador. Puesto que no se corresponde con ningún nivel de la arquitectura ANSI/X3/SPARC, sino que es un paso previo, tiende a ser no tenido en cuenta a la hora de proceder al diseño de una base de datos. Esto no es aconsejable, ya que el diseño lógico parte del esquema 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 constantemente debido a las deficiencias arrastradas desde esta etapa de diseño. De ahí la importancia de realizar un buen 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 la eficiencia del equipo hardware en el que se vaya a montar la base de datos, o SGBD's concretos. Como ya se ha dicho, el esquema conceptual debe representar la información fuera de consideraciones sobre hardware y sobre el SGBD sobre el que se implementará. Por lo tanto, se pueden establecer las siguientes características que debe cumplir un buen esquema conceptual: P á g i n a | 20
  • 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á positivamente en el resto de etapas. Etapas del diseño conceptual La 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 se provean detalles de los datos a representar. Dicho esquema se obtiene mediante el estudio u observació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ás utilizada es el lenguaje natural que, aunque carece del formalismo que pueden infligir otros métodos, permite una mejor y más fácil comprensión de la información por parte del usuario, y le permite especificar los requisitos sin la intervención de formalismos. Este primer esquema 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ómo representar?". En ella se transforma el esquema obtenido en la primera, mediante refinaciones sucesivas. Se deberá obtener el esquema conceptual mediante una representación normalizada, que se apoye en un modelo de datos que cumpla determinadas propiedades (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 referido como ME/R o modelo E/R), que es el más utilizado hoy en día. El modelo entidad / relación El 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 estructura lógica y abstracta de los datos, como representación del mundo real, con independencia de consideraciones 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 cada usuario 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 modelo E/R. Éste se basa en una representación gráfica de una serie de entidades relacionadas entre sí. Al utilizar 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, como ya se ha comentado; la que se utilizará aquí no es, por supuesto, la única forma de hacerlo. Los elementos de los que se componen son los siguientes: P á g i n a | 21
  • 22. 1. Entidades: Una entidad es "una persona, lugar, cosa, concepto o suceso, real o abstracto, de interés para la empresa" (ANSI 1977). En el modelo E/R, se representa por un rectángulo, con el nombre de dicha entidad escrito en la parte superior. Por ejemplo, la Figura 1 representa la entidad automóvil. Figura 1 2. Atributos: Un atributo es cualquier característica que describe a una entidad. Los atributos de una entidad se colocan dentro del rectángulo que representa dicha entidad, justo debajo del nombre de ésta. Por ejemplo, se puede decir que un automóvil tiene las siguientes caracterí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, que son capaces de identificar unívocamente una ocurrencia de una entidad. Es decir, si conocemos el valor de dichos atributos, seremos capaces de conocer a que ocurrencia de entidad, entre todas las posibles, hace referencia. Esto implica que los valores de los atributos clave 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 valor del 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 el modelo 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 entre dos entidades. Si tenemos dos entidades automóvil y persona, podemos tener una relación entre 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 de ocurrencias 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 de otra entidad. Ej: una persona posee un automóvil. Se representa como indica la Figura 4. P á g i n a | 22
  • 23. Figura 4 § Cardinalidad 1-N: también llamada uno a muchos. Cada ocurrencia de una entidad puede relacionarse con varias ocurrencias de otra entidad. Ej.: una persona posee varios automóviles. Se representa como muestra la Figura 5. Figura 5 § Cardinalidad N-M: también llamada muchos a muchos. Cada ocurrencia de una entidad puede relacionarse con varias ocurrencias de otra entidad y viceversa. Ej.: una persona 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 una entidad con las que se puede relacionarse otra entidad. Ej.: una persona puede tener como máximo tres automóviles. 7. Cardinalidad mínima de una relación: representa el número mínimo de ocurrencias de una entidad con las que se puede relacionarse otra entidad. Ej.: un automóvil debe pertenecer como mínimo a una persona. 8. Entidad débil: se dice que una entidad es débil, o es dependiente de otra, cuando no somos capaces de conocer a que ocurrencia de entidad nos estamos refiriendo, ni siquiera conociendo su clave, sino que debemos conocer el valor de algún otro atributo de otra entidad. Por ejemplo, si tenemos las entidades edificio (con el atributo clave codigo_edificio) y planta (con el atributo codigo_planta), ésta última es una entidad débil, ya que no somos capaces de identificar una planta con sólo conocer el código de la planta, sino que además se necesita conocer el código del edificio al que se hace referencia, para determinar la planta dentro del edificio. 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 la P á g i n a | 23
  • 24. opcionalidad de la ocurrencia de una entidad en una relación, es decir, si dicha ocurrencia se debe dar obligatoriamente, o si por el contrario se puede obviar. Los tipos de cardinalidades son los que aparecen 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 que se hace referencia, por ejemplo, si se tienen las entidades alumno y asignatura, la cardinalidad de la relació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 tenga dueño (cardinalidad mínima 1). Esto significa que en el modelo no interesa tener información de aquellas 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 como mucho (cardinalidad máxima 1), o puede no tener ninguno (cardinalidad mínima 0). Esto significa que el 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 a muchos alumnos (cardinalidad máxima N), pero como mínimo debe hacerlo a uno (cardinalidad mínima 1). Esto significa que en el modelo no interesa tener información de aquellos profesores que no dan clase. Figura 11 En el siguiente ejemplo, se tiene una relación N-N, en la que una persona puede tener varios automóviles (cardinalidad máxima N), pero puede que no tenga ninguno (cardinalidad mínima 0). Esto P á g i n a | 24
  • 25. significa que en el modelo interesa tener información de todas las personas, aunque no tengan automóvil. Figura 12 Para concluir esta sección se verá un ejemplo completo que representará todos los conceptos vistos hasta ahora. Supongamos que se desea establecer un modelo conceptual para la gestión de una biblioteca. Se desean tener almacenados todos los libros que la componen. Para cada libro interesa conocer el ISBN, el título, el autor o autores, la editorial, el año de publicación y la materia. De cada autor se quiere conocer su nombre, apellidos y nacionalidad. Un autor podrá haber escrito varios libros, de la misma forma que en un libro pueden participar varios autores. De la editorial se desea conocer el nombre y la ciudad. A dicha biblioteca podrán estar suscritos varios usuarios. De ellos se quiere saber su DNI, número de socio, nombre, apellidos, dirección y teléfono. Por cuestiones directivas, se limita el número de ejemplares prestados a cada usuario a uno. Se dispone, a su vez, de un único ejemplar de cada libro, por lo que un libro prestado a un usuario, no podrá ser prestado a otro hasta 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 de libro y de socio, ya que para diferenciar un préstamo de otro, se necesita saber no sólo el libro, sino el socio al cual se ha prestado. También se pueden observar que las cardinalidades mínimas son 1. Esto quiere decir que sólo se guardará información de las entidades cuando exista, al menos, una ocurrencia de la entidad. Las únicas relaciones que tienen cardinalidad opcional, son las que tienen como origen o destino 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 conceptual A continuación resolveremos unos problemas de diseño conceptual, para ir familiarizando al lector con los conceptos vistos hasta ahora. Para realizarlos se utilizará la S-Designor, que es una herramienta CASE que abarca gran parte del ciclo de vida de las aplicaciones, incluyendo el diseño de esquemas conceptuales. No se preocupe si no conoce la herramienta, ya que se verá en detalle en próximos temas, simplemente quédese con la idea general de la construcción del esquema. P á g i n a | 25
  • 26. El problema que nos planteamos es el siguiente. Supóngase que se desea informatizar una tienda de discos. Para ello se desean tener almacenados los nombres de todos los discos disponibles, además de sus cantantes y canciones. Así mismo se desean almacenar los clientes que han comprado en dicha tienda. Pues bien, empezaremos identificando las entidades, entendiendo por entidad un grupo de características que tienen entidad propia. Como primera entidad, podemos establecer los discos que se venden, ya que se desea conocer información de ellos, como puede ser un código que lo identifique dentro de la estantería. Por otro lado se desea almacenar todos los artistas que intervienen en los discos de nuestra tienda, y para cada uno de ellos se desea conocer su nombre y apellidos, por lo tanto ya tenemos identificada una segunda entidad. Además, se desea conocer todas las canciones que están disponibles en los discos, identificada cada una de ellas por un código de canción, y que además tendrán sus propias letras. Pues ya tenemos la tercera entidad. La cuarta estará formada por los clientes, de los cuales se desea almacenar su nombre, apellidos, dirección y teléfono, y que podrán estar identificados internamente por un código de cliente. Figura 14 Una vez establecidas las entidades, sólo nos queda relacionarlas. Podemos observar las siguientes relaciones: 1. Entre disco y canción: en un disco pueden aparecer varias canciones, y cada canción puede estar en varios discos (N-M). 2. Entre cantante y canción: un cantante puede componer varias canciones, y una canción puede estar compuesta por varios cantantes (N-M). 3. Entre cliente y disco: un cliente puede comprar varios discos, pero un disco sólo puede ser comprado 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 de los profesores de una empresa dedicada a impartir cursos, así como una breve descripción de éstos, y los alumnos a los cuales se les ha impartido. Empezamos identificando entidades. De un profesor se desea conocer su nombre y apellidos, dirección y despacho, por lo tanto establece una entidad. Otra entidad podría ser el alumno, del cual se desea conocer su nombre, apellidos, dirección y teléfono. Ni P á g i n a | 26
  • 27. que decir tiene que el curso describe otra entidad, de la cual se desea conocer su descripción. Sin embargo, podemos recurrir a un procedimiento muy usual, denominado tipificación de estados, muy usado en el diseño conceptual, y que consiste en tener una entidad que tipifique los posibles estados que puede tomar un atributo. La principal ventaja de este procedimiento radica en que muchas veces supone un ahorro de espacio de almacenamiento (por ejemplo al identificar nombres de ciudades largas con un solo número) además de una estandarización de los datos almacenados (el estado sólo se almacena una vez). Por ejemplo podemos tipificar las ciudades, para lo cual creamos una nueva entidad ciudad, donde se almacenará un código y la descripción de la ciudad. Cuando almacenemos la ciudad 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 ser impartido por un profesor (1-N). 2. Alumno y Curso: un alumno puede asistir a varios cursos, y a un curso pueden asistir varios alumnos (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 17 P á g i n a | 27
  • 28. Cabe destacar que el atributo calificación se da como consecuencia de la relación entre las entidades curso y alumno. Por lo que podrá ser introducido en la entidad intermedia que surja cuando se haga el paso a tablas (véase siguiente capítulo). Vamos a ver un último ejemplo. Supóngase un banco que desea almacenar todos sus clientes, además de los productos que puede ofrecer a éstos. Cada cliente podrá escoger entre todos estos productos el o los 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ón de dichas empresas, para poder mejorar su política de inversiones. Puesto que dicho banco esta constituido como sociedad anónima, desea almacenar todos los componentes de su consejo de administración (actuales y ex-miembros) así como todas las actas de las reuniones ordinarias y extraordinarias. Las decisiones de inversión en estas empresas saldrán como resultado de dichas reuniones, así como la oferta de nuevos productos. Como habrá podido observar, este ejemplo es un poco más complejo, pero no desespere, el proceso es similar al de los demás ejemplos. Empezaremos definiendo entidades y las veremos representadas en la Figura . 1. Cliente: se desea conocer su nombre, apellidos, dirección y NIF, y estará identificado por un código interno cod_cliente. 2. Producto: del cual queremos saber su descripción y estará identificado por un código interno cod_producto. 3. Empresa: identifica las empresas en las cuales el banco ha invertido. De ellas se desea conocer su código, nombre y CIF. 4. Consejo: establece los componentes del consejo de administración. Para ello se almacenará el nombre, apellidos y código de cargo de cada uno de sus componentes, y si el cargo es vigente o 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 de administració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. Sus atributos son cod_reunión, fecha, extraordinaria, que especifica si la reunión ha sido ordinaria o extraordinaria y una descripción. Figura 18 P á g i n a | 28
  • 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 ser ofrecido a varios clientes. 2. Consejo y cargo: un miembro del consejo sólo tiene un cargo, y cada cargo puede pertenecer a más de un miembro. 3. Reunión y consejo: a cada reunión pueden asistir varios miembros del consejo de administració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 pero cada 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 una empresa, y cada decisión de inversión sólo sale de una reunión. Modelo Lógico Como ya se ha señalado, el diseño lógico de una base de datos consta de dos etapas: el diseño lógico estándar y el diseño lógico específico. En el diseño lógico estándar, se toma el esquema conceptual resultante de la fase de diseño conceptual, y teniendo en cuenta los requisitos de proceso, de construye un esquema lógico estándar (ELS), que se apoya en un modelo lógico estándar (MLS), que será el mismo modelo de datos soportado por el SGBD a utilizar (relacional, jerárquico, etc.), pero sin las restricciones de ningún producto comercial en concreto. En nuestro caso se utilizará el MLS relacional. Una buena forma de describir el ELS es utilizando el lenguaje estándar del MLS (por ejemplo 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). Al igual que en el caso anterior, una buena forma de describirlo es utilizando el lenguaje de definición de datos (LDD) del producto especifico utilizado (en el caso de SQL-SERVER, se usará el TRANSACT SQL). El diseño lógico específico está muy ligado a la fase de diseño físico, ya que ambos dependen mucho del SGBD que se utilice. P á g i n a | 29
  • 30. En la fase de diseño lógico, además de las herramientas ya descritas (MLS, MLE, lenguajes SQL), se disponen 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ándar Lo primero que hay que realizar en la fase de diseño lógico, es obtener el esquema lógico estándar, a partir del esquema conceptual obtenido en la primera fase. Las reglas que permiten pasar del modelo E/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 sus mismos atributos, incluyendo las claves. · Cada relación N-M genera una tabla: las relaciones entre entidades con cardinalidad N-M generan 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 la entidad 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 el tema anterior acerca de la gestión de una biblioteca. La entidad editorial está relacionada con la entidad libro con cardinalidad 1-N, por lo tanto, la entidad libro, con cardinalidad N, importa la clave de la entidad editorial, con cardinalidad 1. A su vez, está relacionada con la entidad autor, pero en este caso, la cardinalidad es N-M, lo que implica que se generará una tabla intermedia, en la que se almacenarán las claves de ambas entidades. Esta tabla, a la que denominaremos Libro_autor mantiene la información de los códigos de libros junto con los códigos de autores. Posteriormente, si se desea extraer más información, tanto del libro como del autor, se deberá acceder a sendas tablas. Por último se dispone de la entidad Préstamo, que es dependiente tanto de la entidad Libro como de la entidad Usuario, lo que quiere decir que se generará una tabla, con los atributos de la entidad Préstamo además de las claves de las entidades de las que es dependiente, es decir, ISBN y Num_socio, que entrarán como claves en dicha tabla. Esta última relación obtenida, mantiene información de qué libros han sido prestados a qué usuarios y en qué fecha. El esquema de las tablas resultantes es el que se muestra en la Figura . Figura 20 Veamos ahora el paso a tabla de otro ejemplo visto en el tema anterior, cuyo esquema conceptual es el que 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 sus atributos, 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. P á g i n a | 30