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

Diseo y programacin de bases de datos con SQL Server 2008 PedroLpez-Belmonte / Aroa Solana

Sipnosis En este manual se tratan las diferentes tareasnecesarias para llevar a cabo el diseo de una base de datos, y suimplementacin en SQL Server 2008. Desde las tareas de diseo de losdiferentes modelos, hasta la implementacin fsica de los diseos,pasando por la creacin de objetos de base de datos, procedimientosalmacenados, funciones definidas por el usuario, desencadenadores oel tipo de dato XML, se abordan todos los temas necesarios paradejar en perfecto funcionamiento cualquier base de datos sobre SQLServer 2008. Tambin se exploran las caractersticas que aporta laltima versin del sistema gestor de base de datos de Microsoft, comola integracin con .NET 3.5 (objetos SQL CLR), o las nuevasaplicaciones del servidor, como los Reporting Services,Notification Services o los Integration Services, entre otrasmuchas novedades como los nuevos tipos de datos espaciales muytiles para almacenar datos cartogrficos.

Pedro Lpez-Belmonte es Licenciado en Ciencias Fsicas por laUniversidad Complutense de Madrid, con ms de 8 aos de experienciaen el mundo del desarrollo, consultora y formacin. Es especialistaen herramientas de desarrollo .NET y bases de datos. Ha participadoen numerosos proyectos de desarrollo en entornos corporativos demediano y gran tamao con .NET, SQL Server y SharePoint. Cuenta convarias certificaciones, entre las que se encuentran MCAD, MCTS SQLSever & SharePoint. Tambin cuenta con la certificacin MCT, ydesde el comienzo de su carrera profesional ha impartido formacin,una de sus pasiones.

Aroa Solana Ruiz es Microsoft Certified IT Professional enDatabase Developer, tambin Microsoft Certified TechnologySpecialist en SQL Server 2005, .NET Framework 3.5, Windows FormsApplications, SQL Server 2005, al igual que Database Development enSQL Server 2008. Actualmente ostenta la certificacin MCT (MicrosoftCertified Trainer) que la permite impartir un gran nmero de cursosoficiales de Microsoft y trabajar como formadora en Alhambra-Eidos.Ha impartido formacin sobre la tecnologa .NET, desarrollo deaplicaciones Windows, Web, ADO, Distribuidas, WPF, WCF, WWF,Silverlight y UML, por otra parte imparte formacin en administracinde bases de datos SQL Server y desarrollo de bases de datos SQLServer, tanto en 2005 como en 2008. Adems posee experiencia en J2SEy J2EE. Dentro de la gestin de procesos posee la certificacin ITILV2 Foundations.

LuarnaDiseo y programacin de bases de datos con SQL Server 2008Pedro Lpez-Belmonte Alhambra Eidos Aroa Solana Alhambra Eidos Deesta edicin: 2009, Luarna Ediciones, S.L.

www.luarna.com

Madrid, octubre de 2009

ISBN: 978-84-92684-59-5 Versin 1.0 (21-10-2009)

Cualquier forma de reproduccin, distribucin, comunicacin pblicao transformacin de esta obra solo puede ser realizada con laautorizacin de sus titulares, salvo excepcin prevista por la ley.Dirjase a CEDRO (Centro Espaol de Derechos Reprogrficos,www.cedro.org) si necesita fotocopiar, escanear o hacer copiasdigitales de algn 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, adems de que siempre han estado ahtanto para lo bueno como para lo malo, por lo que quiero decirlesGracias Elena, Laura, Ana y Vita!.

Diseo y programacin de bases de datos con SQL Server 2008PedroLpez-Belmonte Aroa Solana

IndiceIntroduccin……………………………………………………………………………………………………………………15 Introduccin………………………………………………………………………………………………………………….15 Introduccin a SQL Server 2008………………………………………………………………………………………16 Nuevas Caractersticas……………………………………………………………………………………………………17 Funciones Bsicas………………………………………………………………………………………………………17 Funciones de BusinessIntelligence………………………………………………………………………………..18 Herramientas de SQL Server 2008……………………………………………………………………………………18 Libros en pantalla……………………………………………………………………………………………………….18 SQL Server Configuration Manager………………………………………………………………………………18 El SQL Server Management Studio……………………………………………………………………………….19 Creacin de los modelos Conceptual, Lgico y Fsico…………………………………………………………..20 Modelo Conceptual………………………………………………………………………………………………………..20 Etapas del diseo conceptual……………………………………………………………………………………………21 El modelo entidad / relacin…………………………………………………………………………………………….21 Ejemplos prcticos de diseo conceptual……………………………………………………………………………25 Modelo Lgico……………………………………………………………………………………………………………..29 Paso del esquema conceptual al esquema lgico estndar……………………………………………………..30Etapas en el diseo lgico……………………………………………………………………………………………….31 Particionamiento horizontal de relaciones…………………………………………………………………………..32 Particionamiento vertical de relaciones………………………………………………………………………………35 Particionamiento mixto…………………………………………………………………………………………………..37 Teora de la normalizacin………………………………………………………………………………………………38 Ejemplos prcticos denormalizacin…………………………………………………………………………………42 Proceso dedesnormalizacin……………………………………………………………………………………………47 Modelo Fsico……………………………………………………………………………………………………………….48 Estrategias en el diseofsico…………………………………………………………………………………………..48 Conceptos bsicos sobre gestin de ficheros……………………………………………………………………….49 Organizacin de ficheros…………………………………………………………………………………………………49 Tcnicas para el aumento de eficiencia………………………………………………………………………………50Seguridad……………………………………………………………………………………………………………………….52 Inicios de sesin…………………………………………………………………………………………………………….52 Roles…………………………………………………………………………………………………………………………..62 Funciones fijas de servidor…………………………………………………………………………………………..62 Funciones de base de datos…………………………………………………………………………………………..64 Funciones de aplicacin………………………………………………………………………………………………65 Esquemas……………………………………………………………………………………………………………………..68 Creacin de una base de datos…………………………………………………………………………………………..72 Qu es una Base de Datos?…………………………………………………………………………………………….72Archivos de una Base de Datos…………………………………………………………………………………….73 Pginas…………………………………………………………………………………………………………………….73 Extensiones……………………………………………………………………………………………………………….74 Objetos de la Base de Datos…………………………………………………………………………………………75Bases de Datos de Sistema………………………………………………………………………………………………76Master………………………………………………………………………………………………………………………76TempDB…………………………………………………………………………………………………………………..76 Model………………………………………………………………………………………………………………………77 MSDB……………………………………………………………………………………………………………………..77 Elementos bsicos para la creacin de bases de datos…………………………………………………………..77 Management Studio……………………………………………………………………………………………………77 Pgina |7

CREATE DATABASE……………………………………………………………………………………………….80Grupos dearchivos……………………………………………………………………………………………………..88 Creacin de un grupo de archivos………………………………………………………………………………89 Uso de los grupos de archivos……………………………………………………………………………………90 Esquemas………………………………………………………………………………………………………………….91 Creacin de tablas……………………………………………………………………………………………………………94 Tipos de datos en SQL Server2008…………………………………………………………………………………..95 CHAR………………………………………………………………………………………………………………………95 NCHAR……………………………………………………………………………………………………………………95 VARCHAR……………………………………………………………………………………………………………….95 NVARCHAR…………………………………………………………………………………………………………….96TEXT……………………………………………………………………………………………………………………….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………………………………………………………………………………………………………………97SMALLDATETIME…………………………………………………………………………………………………..98 TIMESTAMP……………………………………………………………………………………………………………98UNIQUEIDENTIFIER………………………………………………………………………………………………..98BINARY…………………………………………………………………………………………………………………..98VARBINARY……………………………………………………………………………………………………………98 BIT………………………………………………………………………………………………………………………….98 XML………………………………………………………………………………………………………………………..99 CURSOR………………………………………………………………………………………………………………….99 TABLE…………………………………………………………………………………………………………………….99 SQL_VARIANT………………………………………………………………………………………………………..99 Creacin de tablas………………………………………………………………………………………………………….99 Modificar tablas…………………………………………………………………………………………………………..100 Eliminar tablas…………………………………………………………………………………………………………….101 Propiedades de las columnas………………………………………………………………………………………….102 Valores DEFAULT…………………………………………………………………………………………………..102 ValoresIDENTITY…………………………………………………………………………………………………..103 Integridad de los datos………………………………………………………………………………………………….104 Integridad de Entidad………………………………………………………………………………………………..104 Integridad deDominio……………………………………………………………………………………………….105 Integridad Referencial……………………………………………………………………………………………….105 Tipos de restricciones………………………………………………………………………………………………..105 PRIMARY KEY…………………………………………………………………………………………………..105 FOREIGN KEY……………………………………………………………………………………………………107 RestriccinUNIQUE……………………………………………………………………………………………..112 Restricciones CHECK……………………………………………………………………………………………113 Objetos RULE yDEFAULT……………………………………………………………………………………116 RULE………………………………………………………………………………………………………………116 DEFAULT……………………………………………………………………………………………………….117 Consideraciones sobre las restricciones………………………………………………………………………..117 Creacin de ndices………………………………………………………………………………………………………..119 Pgina |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 ndiceagrupado…………………………………………………………..122 ndicesnicos……………………………………………………………………………………………………….123 Creacin 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 estadsticas…………………………………………………………………………………..128 Almacenar resultados de orden intermedio en la base de datostempdb …………………………… 129 Permitir procesamientoen lnea de instrucciones DML……………………………………………….. 130 Usarbloqueos de fila y de pgina al tener acceso al ndice…………………………………………… 130 Grado mximode paralelismo…………………………………………………………………………………130 Almacenamiento delndice……………………………………………………………………………………..131 Particin de ndices y tablas…………………………………………………………………………………………..131 Funciones departicin……………………………………………………………………………………………….132 Esquemas de particin……………………………………………………………………………………………….133 Crear tablas e ndices particionados……………………………………………………………………………..133 Modificar funciones y esquemas de particin………………………………………………………………..135 Insertar y extraer tablas de particiones………………………………………………………………………135 Mantenimiento de Particiones………………………………………………………………………………….137 Creacin de vistas………………………………………………………………………………………………………….138 Como crearvistas…………………………………………………………………………………………………………138 Encriptacin de la definicin………………………………………………………………………………………143 Enlazar a un esquema………………………………………………………………………………………………..144 Comprobar criterios………………………………………………………………………………………………….144 Modificar y eliminarvistas…………………………………………………………………………………………….145 Vistas indexadas………………………………………………………………………………………………………….145 Procedimientos Almacenados………………………………………………………………………………………….147 Creacin de Procedimientos Almacenados……………………………………………………………………….148 Llamadas a procedimientos………………………………………………………………………………………..149 Procedimientos almacenadosparametrizados…………………………………………………………………149 Valor de Retorno………………………………………………………………………………………………………151 Opciones Adicionales………………………………………………………………………………………………..152 Estructuras de control de flujo y errores…………………………………………………………………………..153 IFELSE……………………………………………………………………………………………………………….153 WHILEBREAK……………………………………………………………………………………………………154CASE……………………………………………………………………………………………………………………..155 WAITFOR………………………………………………………………………………………………………………155 Gestin de Errores……………………………………………………………………………………………………….156 La variable @@ERROR……………………………………………………………………………………………157 RAISERROR…………………………………………………………………………………………………………..160Mensaje……………………………………………………………………………………………………………….161 Severidad…………………………………………………………………………………………………………….162 Estado…………………………………………………………………………………………………………………162WITH………………………………………………………………………………………………………………….162 Consideraciones de seguridad y rendimiento…………………………………………………………………….165 Pgina |9

Seguridad………………………………………………………………………………………………………………..166Rendimiento…………………………………………………………………………………………………………….166 Depuracin……………………………………………………………………………………………………………..167 Funciones definidas por el usuario…………………………………………………………………………………..172 Funciones escalares………………………………………………………………………………………………………173 Funciones de tabla……………………………………………………………………………………………………….176 Funciones Deterministas y NoDeterministas…………………………………………………………………….179 Depuracin de funciones definidas por el usuario………………………………………………………………181 Tipos de datos definidos por el usuario…………………………………………………………………………….183 Creacin del tipo de dato definido por el usuario……………………………………………………………….183 TSQL……………………………………………………………………………………………………………………..184 Management Studio………………………………………………………………………………………………….185 Desencadenadores(triggers)……………………………………………………………………………………………191 Tipos de Desencadenadores…………………………………………………………………………………………..192 Desencadenadores DML……………………………………………………………………………………………192Restricciones?……………………………………………………………………………………………………..193 Tablas desoporte…………………………………………………………………………………………………..194 Creacin de un desencadenador………………………………………………………………………………………194 Comprobar columnas………………………………………………………………………………………………..197 Desencadenadores DDL………………………………………………………………………………………………..199 Los desencadenadores en el Management Studio……………………………………………………………….201 Consideraciones de rendimiento……………………………………………………………………………………..205 Diseo de objetos SQL CLR……………………………………………………………………………………………206 Integracin con CLR…………………………………………………………………………………………………….206 Habilitar la integracin………………………………………………………………………………………………208 Visual Studio 2008……………………………………………………………………………………………………208 Atributos .NET……………………………………………………………………………………………………..212 Implementacin…………………………………………………………………………………………………………..213 Implementar ensamblados………………………………………………………………………………………….213 Procedimientos almacenados CLR………………………………………………………………………………….216 Funciones CLR……………………………………………………………………………………………………………219SqlFunction……………………………………………………………………………………………………………..220 Funciones escalares…………………………………………………………………………………………………..221 Funciones de tabla…………………………………………………………………………………………………….223Agregados…………………………………………………………………………………………………………………..224 SqlUserDefinedAggregate………………………………………………………………………………………….225 Init…………………………………………………………………………………………………………………………226 Accumulate……………………………………………………………………………………………………………..226 Merge…………………………………………………………………………………………………………………….226Terminate………………………………………………………………………………………………………………..226 Desencadenadores CLR………………………………………………………………………………………………..227 SqlTrigger……………………………………………………………………………………………………………….229 TriggerContext…………………………………………………………………………………………………………229 SQL Server 2008 Reporting Services……………………………………………………………………………….231 Arquitectura de los Servicios de Informes………………………………………………………………………..231 Capa de aplicacin……………………………………………………………………………………………………232 Navegador de Internet……………………………………………………………………………………………232 Herramientas de Informes……………………………………………………………………………………….233 Business Intelligence DevelopmentStudio…………………………………………………………………234 Herramienta de Configuracin deSuperficie………………………………………………………………234 Herramienta de Configuracin del Servidor de Informes……………………………………………… 235 P g i na | 10

SQL Server ManagementStudio………………………………………………………………………………235 Aplicaciones personalizadas……………………………………………………………………………………236 Capa de servidor………………………………………………………………………………………………………236 Servicio Web………………………………………………………………………………………………………..236 Servicio de Windows……………………………………………………………………………………………..236 Interfaces de programacin……………………………………………………………………………………..236 Procesadores………………………………………………………………………………………………………..236 Extensiones………………………………………………………………………………………………………….237 Autenticacin……………………………………………………………………………………………………237 Extensiones de Proceso de datos…………………………………………………………………………..237 Extensiones de presentacin………………………………………………………………………………..237 Extensiones de Proceso de Informes……………………………………………………………………..237 Extensiones deDistribucin…………………………………………………………………………………237 Capa de datos…………………………………………………………………………………………………………..237 Bases de datos del servidor……………………………………………………………………………………..237 Diseo de Informes………………………………………………………………………………………………………238 Asistente para la Generacin de Informes……………………………………………………………………..238 Diseo 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 Elementosindependientes……………………………………………………………………………………….248 Estructura de un informe……………………………………………………………………………………………….248 Implementacin de un informe……………………………………………………………………………………….252 Soporte para consultas……………………………………………………………………………………………………256 Consultas para la devolucin de datos……………………………………………………………………………..257 La clusula WHERE…………………………………………………………………………………………………258 ORDER BY…………………………………………………………………………………………………………….260 GROUP BY…………………………………………………………………………………………………………….261 Agregados……………………………………………………………………………………………………………….262 AVG………………………………………………………………………………………………………………………262 MIN / MAX…………………………………………………………………………………………………………….263 COUNT………………………………………………………………………………………………………………….264 Clusula HAVING……………………………………………………………………………………………………264 ClusulaDISTINCT………………………………………………………………………………………………….265 Modificacin de datos…………………………………………………………………………………………………..265 INSERT………………………………………………………………………………………………………………….266 UPDATE………………………………………………………………………………………………………………..266 DELETE…………………………………………………………………………………………………………………267 Combinacin de tablas………………………………………………………………………………………………….267 INNER JOIN…………………………………………………………………………………………………………..268 OUTER JOIN………………………………………………………………………………………………………….269 FULLJOIN……………………………………………………………………………………………………………..270 UNION, EXCEPT & INTERSECT……………………………………………………………………………..271 Caso prctico………………………………………………………………………………………………………………272 LINQ to SQL………………………………………………………………………………………………………………..274 ModeloObjeto/Relacional……………………………………………………………………………………………..274 Herramientas de generacin de Entidades…………………………………………………………………………276 Uso deSQLMetal……………………………………………………………………………………………………..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 Recuperacin de XML mediante FOR XML…………………………………………………………………….281 Introduccin a la clusula FOR XML…………………………………………………………………………..282 ModoRAW………………………………………………………………………………………………………….284 Recuperacin de datos en elementos de fila genricos……………………………………………… 284Recuperacin de datos como elementos…………………………………………………………………285 Recuperacin de datos utilizando un elemento raz y nombre deelemento de filapersonalizado…………………………………………………………………………………………………….285 Modo AUTO………………………………………………………………………………………………………..288 Recuperacin de datos anidados utilizando el modo AUTO……………………………………… 288 Recuperacin dedatos como elementos…………………………………………………………………289 Modo EXPLICIT………………………………………………………………………………………………….291 Tablas universales……………………………………………………………………………………………..292 Definicin de asignaciones de columna en una tabla universal………………………………….. 292 Creacin de unaconsulta para construir la tabla universal………………………………………… 293 Modo PATH………………………………………………………………………………………………………..295 Recuperacin de datos utilizando el modoPATH…………………………………………………….295 Fragmentacin de XML mediante OPENXML………………………………………………………………….296 Proceso de fragmentacin de datosXML………………………………………………………………………297 Procedimientos Almacenados para administrar rboles de nodos enmemoria …………………. 297 Creacin del rbol mediantesp_xml_preparedocument……………………………………………. 298 Quitar elrbol mediante sp_xml_removedocument…………………………………………………. 298Sintaxis de OPENXML……………………………………………………………………………………………..299 Uso de una declaracin de esquema………………………………………………………………………….300 Uso del tipo de datos xml………………………………………………………………………………………………301 El tipo de datosxml…………………………………………………………………………………………………..302 XQuery…………………………………………………………………………………………………………………..303 Sintaxis de XQuery……………………………………………………………………………………………….303 Instrucciones FLOWR………………………………………………………………………………………..303 Los mtodos query, value y exist…………………………………………………………………………………305 El mtodo query……………………………………………………………………………………………………305 El mtodovalue…………………………………………………………………………………………………….305 El mtodo exists……………………………………………………………………………………………………306 El mtodomodify……………………………………………………………………………………………………..306 El mtodo nodes……………………………………………………………………………………………………….307 Service Broker………………………………………………………………………………………………………………310 Qu es el ServiceBroker?…………………………………………………………………………………………….310 Ventajas de Service Broker………………………………………………………………………………………..311 Usos Tpicos de Service Broker…………………………………………………………………………………..311 Arquitectura del sistema de Service Broker………………………………………………………………………311 Tipo de mensaje……………………………………………………………………………………………………….312 Contrato………………………………………………………………………………………………………………….312 Cola……………………………………………………………………………………………………………………….312Servicio…………………………………………………………………………………………………………………..312 Programa de Servicio………………………………………………………………………………………………..313 Arquitectura de conversacin de Service Broker………………………………………………………………..313 Mensaje………………………………………………………………………………………………………………….314 Conversacin de dilogo……………………………………………………………………………………………314 Grupo de conversacin………………………………………………………………………………………………314 Ruta……………………………………………………………………………………………………………………….315 Enlace de servicioremoto…………………………………………………………………………………………..315 P g i n a | 12

Proceso de conversacin de Service Broker………………………………………………………………………315 Arquitectura de seguridad de Service Broker…………………………………………………………………….317 Certificados……………………………………………………………………………………………………………..317 Seguridad de transporte……………………………………………………………………………………………..317 Seguridad de Dilogo………………………………………………………………………………………………..317 Creacin 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 Envo y recepcin de mensajes……………………………………………………………………………………….323 Sintaxis para enviar mensajes……………………………………………………………………………………..323 Sintaxis para recibir mensajes………………………………………………………………………………………..325FILESTREAM………………………………………………………………………………………………………………329 Uso deFileStream………………………………………………………………………………………………………..330 Almacenamiento de FileStream…………………………………………………………………………………..330 Seguridad Integrada……………………………………………………………………………………………….330 Administracin Integrada……………………………………………………………………………………….331 Habilitar FILESTREAM……………………………………………………………………………………………….331 Administrar datos FILESTREAM usando Transact-SQL……………………………………………………. 332Actualizar 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 transaccin………………………………………………………………………………..334 Obtener un identificador de archivos de Win32……………………………………………………………..334 La API OpenSqlFilestream……………………………………………………………………………………..334Parmetros………………………………………………………………………………………………………..335 FilestreamPath………………………………………………………………………………………………….335 DesiredAccess…………………………………………………………………………………………………..335 OpenOptions…………………………………………………………………………………………………….335 FilestreamTransactionContext……………………………………………………………………………..336 FilestreamTransactionContextLength……………………………………………………………………336AllocationSize……………………………………………………………………………………………………336 Conflictos entre Win32 y Transact-SQL…………………………………………………………………………..336 Ejemplos…………………………………………………………………………………………………………………337 Abrir un BLOB de FILESTREAM para acceso de escritura…………………………………………. 337 Abrir un BLOBde FILESTREAM para acceso de lectura……………………………………………. 337 Abrir ycerrar varios archivos BLOB de FILESTREAM……………………………………………… 338 No sepuede cerrar uncursor……………………………………………………………………………………338 Cmo crear una base de datos habilitada para FILESTREAM…………………………………………….. 339 Crear unabase de datos habilitada para FILESTREAM………………………………………………….. 339 Cmomover una base de datos habilitada para FILESTREAM…………………………………………… 340 Crear unatabla para almacenar datos FILESTREAM…………………………………………………………341 Prcticasrecomendadas…………………………………………………………………………………………………341 Configuracin fsica y mantenimiento………………………………………………………………………….341 Diseo fsico de base de datos…………………………………………………………………………………….342 Datos Espaciales…………………………………………………………………………………………………………….343 Datos espaciales…………………………………………………………………………………………………………..343 Poblar datos espaciales………………………………………………………………………………………………344 GML………………………………………………………………………………………………………………………347 Objetos Geomtricos……………………………………………………………………………………………..347 Elementos de GML…………………………………………………………………………………………………..350 P g i n a | 13

Polgonos, delimitadores interiores y Multipolgonos………………………………………………….. 351Tres Dimensiones………………………………………………………………………………………………….351 Resolucin Caso Prctico………………………………………………………………………………………………..356 Listado de clientes por comercial………………………………………………………………………….356 Listado de clientes potenciales por comercial………………………………………………………….356 Listado de envos aclientes………………………………………………………………………………….357 Listado de pedidos aproveedores………………………………………………………………………….357 Listado de productos bajos en stock………………………………………………………………………357 Total ventas por comercial…………………………………………………………………………………..358

P g i n a | 14

IntroduccinIntroduccinSQL Server 2008 es la ltima versin delSistema Gestor de Bases de Datos de Microsoft para el mercadoempresarial. Esta ltima versin muestra grandes avances con respectoa sus predecesora (sobre todo SQL Server 2000) y, aunque solo estdisponible para la plataforma Windows, comienza a ser un seriocompetidor para sistemas como Oracle, orientados a bases de datosde gran tamao. Esta ltima versin cuenta con varias ediciones,incluyendo una versin gratuita (SQL Server Express), todas ellascon ediciones de 32 y 64 bit. SQL Server surgi de la colaboracinentre Microsoft y Sybase, adems de IBM y Ashton-Tate. La primeraversin fue desarrollada para OS/2 en 1988, y no era ms que unapequea base de datos. De hecho, el sistema operativo OS/2 fuedesarrollado conjuntamente por IBM y Microsoft para dar soporte aSybase SQL Server La primera edicin de SQL Server para Windows fuela 4.2 desarrollada en 1993, (compatible con Windows NT). SQLServer 4.2 era una base de datos para pequeos entornos (desktopdatabase), con funcionalidad limitada y no demasiado potente. En1994, Microsoft y Sybase deciden no continuar su unin con SQLServer. Esto origin una nueva versin de SQL Server por parte deMicrosoft en 1995.

P g i n a | 15

La primera versin independiente de SQL Server fue la 6.05. Enesta versin se introdujeron una serie de mejoras en cuanto arendimiento y funcionalidad que permitan considerar a este sistemaadecuado para gestionar bases de datos de pequeos negocios oaplicaciones de Internet. La siguiente versin, la 6.5, fue lanzadaen 1996. En 1998, Microsoft lanz SQL Server 7.0, que supuso uncambio en cuanto a su situacin en el mercado de los RDBMS. El grannmero de mejoras en cuanto a rendimiento, potencia y facilidad deuso, as como la gran cantidad de caractersticas y aplicacionesauxiliares, incluidas en el producto sin coste adicional, situarona SQL Server como alternativa a otros sistemas tales como Oracle oDB2 en el entorno de negocios de tamao medio. Con SQL Server 2000,Microsoft termin de consolidar su posicin en el mercado de losSistemas Gestores de Bases de Datos. Esta versin ya est dirigida alentorno empresarial, debido a su rendimiento, escalabilidad yrobustez. Lo bueno es que Microsoft consigui alcanzar estosobjetivos sin sacrificar la facilidad de uso y el gran nmero deherramientas de desarrollo, gestin y anlisis incluidas en SQLServer. De hecho, en el ao 2001 Oracle cedi su posicin de dominio,pasando el testigo a SQL Server (34% del mercado, contra el 40%).Esta situacin sigui su curso en 2002, cuando SQL Server aument sucuota al 45% del mercado, mientras que la de Oracle bajaba al 27%.La ltima versin de SQL Server es capaz de competir con grandessistemas como Oracle o DB2. Muchas organizaciones de gran tamaoadoptaron en su da SQL Server 2000 y lo hacen hoy con SQL Server2005 y 2008, como Xerox, Nasdaq, Groupama, ING, y un largo etc.Para comprender este movimiento en torno al RDBMS (RelationalDataBase Management System) de Microsoft, hay que unir que lascifras de las pruebas rendimiento (benchmarks) a las que se sometena SQL Server se acercan a las cifras de Oracle, junto con lafacilidad de uso y coste del sistema de Microsoft, en contraposicincon la complejidad y elevado precio del sistema de Oracle.

Introduccin a SQL Server 2008SQL Server 2008 incluye una grancantidad de nuevas caractersticas que permiten una gestin msracional y eficaz del mismo, aumentan el rendimiento, laescalabilidad y la estabilidad del servidor y, permiten unaconfiguracin avanzada a nivel de servicios, seguridad del servidor,etc. Entre las nuevas caractersticas, quizs la ms llamativa sea elsoporte para compatibilidad con .NET. Esto permite la programacinde ensamblados en C# o Visual Basic 2008 y su ejecucin en SQLServer, lo que abre un gran abanico de posibilidades complementandola funcionalidad que proporciona T-SQL. Adems, nos encontramos consoporte completo para XML, incluyendo un nuevo tipo de dato XML,que permite el almacenamiento de documentos de este tipo en formatonativo, y posibilita el uso de funciones de bsqueda y manipulacinen cdigo XML, como XQuery o XPath directamente en el propio campode la tabla. Tambin permite la validacin de la estructura delpropio documento contra esquemas XSD. Las herramientas deconfiguracin y mantenimiento tambin han sufrido una renovacincompleta. El Administrador Corporativo, o el Analizador deConsultas de SQL Server 2000 dejan paso al SQL Server ManagementStudio (SSMS), que agrupa y amplia la funcionalidad de ambos. Estanueva herramienta permite gestin multiservidor tanto de servidoresOLTP como de servidores OLAP o gestin de funciones adicionales. Unanueva caracterstica muy interesante es la posibilidad de crear unasolucin, lo que permite una gestin ms eficaz de proyectos dedesarrollo, as como la integracin con Visual Source Safe, queposibilita el trabajo en grupo y el control de cdigo fuente. SQLServer incorpora una nueva herramienta denominada BusinessIntelligence Development Studio, que no es ms que una versinreducida de Visual Studio 2008. Esta nueva herramienta sirve P g in a | 16

para desarrollar proyectos de integracin con .NET, o tambinotros como proyectos de Analysis Services, Integration Services oReporting Services. SQL Server amplia y mejora los ReportingServices (SSRS), que aunque inicialmente fueron concebidos paraaparecer con esta ltima versin del servidor, Microsoft decidipublicar una versin reducida para SQL Server 2000. Tambin incluyeun mejorado y ampliado entorno para los Servicios de Integracin(SQL Server Integration Services, SSIS), anteriormente conocidoscomo Data Transformation Services. Otra de las nuevascaractersticas la constituye el Service Broker, que es un entornode trabajo diseado para la distribucin asncrona de mensajera. Todasestas caractersticas se agrupan dentro de SQL Server 2005 y ahoraen 2008 clasificadas segn sus distintas ediciones, que describo acontinuacin: Express: Esta edicin es la evolucin del antiguo MSDE,la versin gratuita de SQL Server 2000. Sigue siendo gratuita y,aunque limitada, incorpora un pequeo entorno grfico deadministracin y permite un mximo de 50 conexiones concurrentes(suficiente para cualquier entorno pequeo). Workgroup: Est diseadapara entornos y departamentos pequeos y medianos. Posee muchas delas caractersticas de SQL Server, pero no contiene las de altonivel. Standard: Esta versin est destinada al entorno medio.Contiene prcticamente todas las caractersticas, como los Serviciosde Anlisis, o los Servicios de Integracin, pero elimina lasopciones de alta disponibilidad, como particionado o indexacinonline. Developer: Esta versin contiene todas las opciones, pero alser una versin destinada a entornos de prueba y laboratorio,contiene limitaciones en cuanto a CPUs soportadas y a licencias.Enterprise: Esta es la versin completa, la ms potente, escalable yrobusta y, por supuesto, la ms cara. Est destinada al entornoempresarial de tamao medio-grande, donde el rendimiento, la altadisponibilidad y la escalabilidad son cruciales.

Nuevas CaractersticasLas nuevas caractersticas soportadas porSQL Server 2008 se pueden dividir en dos grandes grupos: FuncionesBsicas y Business Intelligence. Cada versin soporta algunascaractersticas, exceptuando las versiones Enterprise y Developer,que como hemos visto antes, las soportan todas. Veamos un resumende algunas de ellas:

Funciones Bsicas Todas las versiones soportan integracin con.NET (CLR), autenticacin y autorizacin avanzada, optimizacinautomtica de Bases de Datos, importacin y exportacin de datos, elnuevo tipo de dato XML, consultas recursivas, gestin de errores conestructuras TRYCATCH, la herramienta Express Manager (indicada parala versin Express y es gratuita), conexin dedicada para eladministrador, adicin de memoria en caliente, encriptacin de datos,la herramienta Management Studio, vistas de sistema, herramientasde Reporting Services, integracin con Microsoft Baseline SecurityAnalyzer (MBSA), replicacin (transaccional y de mezcla), ServiceBroker, procedimientos almacenados, vistas y desencadenadores,tipos definidos por el usuario, indexacin XML nativa, bsquedas detexto P g i n a | 17

completo en datos XML y manipulacin con XQUERY y el BestPractices Analyzer (se puede descargar en:http://www.microsoft.com/downloads/details.aspx?familyid=b352eb1f-d3ca44ee-893e-9e07339c1f22&displaylang=en)La versin Express no soporta bsqueda de texto completo en camposdefinidos para ello, as como la programacin de trabajos, o eltraslado de los logs de transacciones a otra base de datos (LogShipping). La versin Workgroup no soporta la funcionalidad deespejo (DB Mirroring), el Database Tuning Advisor (sustituye alIndex Tunning Wizard), el failover clustering, los Servicios deIntegracin, los Servicios de Notificacin, y los web services, osoporte para http. La versin Standard no soporta particionado detablas, replicacin Oracle, indexacin online de tablas y vistas,restauracin de bases de datos online, operaciones de indexacin enparalelo, ndices en vistas, integracin de flujo de datos,disponibilidad de la base de datos en operaciones de undo durantela restauracin, transformaciones avanzadas como minera de datos ominera de texto, o optimizacin avanzada del rendimiento de modelosde minera.

Funciones de Business Intelligence Todas las versionesproporcionan soporte nativo para web services, Reporting Services(incluyendo mltiples orgenes de datos), funciones analticas yoptimizacin de consultas tipo estrella, y el Business IntelligenceDevelopment Studio. La versin Express no soporta integracin con elManagement Studio, el profiler y otras herramientas, y tampocosoporta el generador de informes para el usuario final. La versinWorkgroup no soporta el modelado de datos segn el ModeloDimensional Unificado (UDM), el Data warehousing, y el Data mining.La versin Standard no soporta cacheo automtico de datos,suscripciones ligadas a datos, writebacks en dimensiones y celdas,cubos particionados, proceso de cubos en paralelo, sincronizacin deservidores y escalado externo de servidores de informes.

Herramientas de SQL Server 2008La nueva versin de SQL Servertrae consigo un buen puado de nuevas herramientas, algunas nuevas,y otras simplemente una evolucin de las anteriores. Vamos a repasarlas ms importantes, para conocer su funcionalidad.

Libros en pantallaLos libros en pantalla de SQL Server hansufrido una buena revisin, y ahora utilizan la nueva interfaz deayuda de .NET 2008, que proporciona nuevos modelos de organizacinde datos, bsquedas por preferencias, online, en local, y muchasotras opciones.

SQL Server Configuration ManagerEsta herramienta agrupa lafuncionalidad de varias en la anterior versin de SQL Server.Bsicamente, su mbito de aplicacin se centra en la gestin avanzadade los servicios de soporte de SQL Server, para los cuales presentaun amplio abanico de opciones, y en la configuracin de red delservidor. P g i n a | 18

El SQL Server Management StudioEl SQL Server Management Studioes la nueva herramienta de administracin de SQL Server, yrepresenta una gran evolucin frente a las versiones anteriores.Hereda su aspecto y algo de funcionalidad de Visual Studio 2008,adems de integrar un gran nmero de funciones que antes estabandisponibles como herramientas independientes.

P g i n a | 19

Creacin de los modelos Conceptual, Lgico y FsicoModeloConceptualComo ya se ha visto en el tema anterior, el diseoconceptual, que constituye la primera etapa en el diseo de una basede datos, consiste en obtener una buena representacin de losrecursos de informacin de la empresa, con independencia de usuarioo aplicaciones en particular y fuera de consideraciones sobreeficiencia del ordenador. Puesto que no se corresponde con ningnnivel 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 diseo deuna base de datos. Esto no es aconsejable, ya que el diseo lgicoparte del esquema conceptual y, si ste no es correcto, o norepresenta fielmente la informacin del mundo real, el esquema de labase de datos no ser estable, vindonos obligados a reajustarloconstantemente debido a las deficiencias arrastradas desde estaetapa de diseo. De ah la importancia de realizar un buen esquemaconceptual, que represente fielmente las caractersticas del mundoreal. Otro error que se suele cometer en esta etapa de diseo es elde considerar aspectos tales como la eficiencia del equipo hardwareen el que se vaya a montar la base de datos, o SGBD’s concretos.Como ya se ha dicho, el esquema conceptual debe representar lainformacin fuera de consideraciones sobre hardware y sobre el SGBDsobre el que se implementar. Por lo tanto, se pueden establecer lassiguientes caractersticas que debe cumplir un buen esquemaconceptual:

P g i n a | 20

Debe representar fielmente la informacin del mundo real. Esindependiente del SGBD Es independiente del Hardware

Conviene no olvidar, por lo tanto, que un buen diseo del esquemaconceptual, influir positivamente en el resto de etapas.

Etapas del diseo conceptualLa fase de diseo conceptual, puedesubdividirse a su vez en dos etapas: 1. Etapa de anlisis derequisitos: En esta etapa se debe responder a la pregunta «Qurepresentar?». El objetivo es elaborar un esquema descriptivo de larealidad, en el que se provean detalles de los datos a representar.Dicho esquema se obtiene mediante el estudio u observacin del mundoreal (estudio de las reglas de la empresa, entrevista a losusuarios, etc.). Aunque existen muchas respuestas sobre el modo derecoger dicha informacin, la ms utilizada es el lenguaje naturalque, aunque carece del formalismo que pueden infligir otros mtodos,permite una mejor y ms fcil comprensin de la informacin por partedel usuario, y le permite especificar los requisitos sin laintervencin 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 conceptualizacin:En esta etapa se debe responder a la pregunta «Cmo representar?».En ella se transforma el esquema obtenido en la primera, medianterefinaciones sucesivas. Se deber obtener el esquema conceptualmediante una representacin normalizada, que se apoye en un modelode datos que cumpla determinadas propiedades (segn Piattini y DeMiguel): coherencia, plenitud, no redundancia, simplicidad,fidelidad, etc. El modelo que se estudiar es el Modelo Entidad /relacin (en adelante referido como ME/R o modelo E/R), que es el msutilizado hoy en da.

El modelo entidad / relacinEl modelo E/R fue propuesto por PeterP. Chen en dos artculos que public en los aos 1976 y 1977. En ellosdefine dicho modelo como una vista unificada de los datos,centrndose en la estructura lgica y abstracta de los datos, comorepresentacin del mundo real, con independencia de consideracionesde tipo fsico. Posteriormente se fueron proponiendo nuevasaportaciones al modelo, lo cual explica que no exista uno slo, sinodistintos modelos segn los autores. Los objetivos que debe cumplirun esquema conceptual son los siguientes (Piattini y De Miguel): 1.Captar y almacenar el universo del discurso mediante una descripcinrigurosa. 2. Aislar la representacin de la informacin de losrequisitos de mquina y exigencias de cada usuario en particular 3.Independizar la definicin de la informacin de los SGBD en concreto.A continuacin se describir el proceso de creacin de un esquemaconceptual, siguiendo el modelo E/R. ste se basa en unarepresentacin grfica de una serie de entidades relacionadas entres. Al utilizar una representacin de este tipo, el modelo E/Rpermite distinguir fcilmente y a simple vista, las relacionesexistentes entre las distintas entidades. Existen muchas formas derepresentarlo, como ya se ha comentado; la que se utilizar aqu noes, por supuesto, la nica forma de hacerlo. Los elementos de losque se componen son los siguientes: P g i n a | 21

1. Entidades: Una entidad es «una persona, lugar, cosa, conceptoo suceso, real o abstracto, de inters para la empresa» (ANSI 1977).En el modelo E/R, se representa por un rectngulo, con el nombre dedicha entidad escrito en la parte superior. Por ejemplo, la Figura1 representa la entidad automvil.

Figura 1

2. Atributos: Un atributo es cualquier caracterstica quedescribe a una entidad. Los atributos de una entidad se colocandentro del rectngulo que representa dicha entidad, justo debajo delnombre de sta. Por ejemplo, se puede decir que un automvil tienelas siguientes caractersticas: n de matricula, marca, modelo ycolor, lo cual se muestra en la Figura 2.

Figura 2

3. Clave: La clave de una entidad es un atributo o conjunto deatributos de dicha entidad, que son capaces de identificarunvocamente una ocurrencia de una entidad. Es decir, si conocemosel valor de dichos atributos, seremos capaces de conocer a queocurrencia de entidad, entre todas las posibles, hace referencia.Esto implica que los valores de los atributos clave no se puedenrepetir para dos ocurrencias de la misma entidad. En nuestroejemplo, seremos capaces de identificar de que automvil estamoshablando, con slo conocer el valor del atributo matrcula, ya que noexiste una misma matrcula para dos automviles distintos. Losatributos marca, modelo o color no identifican unvocamente unaocurrencia de la entidad, ya que pueden existir dos automvilesdistintos de la misma marca, modelo o color. En el modelo E/R, unatributo clave se representa subrayando dicho atributo.

Figura 3

4. Relacin: Una relacin representa, como su propio nombreindica, una correspondencia entre dos entidades. Si tenemos dosentidades automvil y persona, podemos tener una relacin entreellas. Dicha relacin se puede establecer en ambos sentidos: Unapersona posee un automvil, y Un automvil pertenece a una persona.5. Cardinalidad de una relacin: La cardinalidad de una relacinrepresenta el nmero de ocurrencias que se pueden dar de unarelacin. Puede ser de tres tipos: Cardinalidad 1-1: cada ocurrenciade una entidad se relaciona con una ocurrencia de otra entidad. Ej:una persona posee un automvil. Se representa como indica la Figura4.

P g i n a | 22

Figura 4

Cardinalidad 1-N: tambin llamada uno a muchos. Cada ocurrenciade una entidad puede relacionarse con varias ocurrencias de otraentidad. Ej.: una persona posee varios automviles. Se representacomo muestra la Figura 5.

Figura 5

Cardinalidad N-M: tambin llamada muchos a muchos. Cadaocurrencia de una entidad puede relacionarse con varias ocurrenciasde otra entidad y viceversa. Ej.: una persona posee variosautomviles y un automvil puede pertenecer a varias personas. Serepresenta como aparece en la Figura 6.

Figura 6

6. Cardinalidad mxima de una relacin: representa el nmero mximode ocurrencias de una entidad con las que se puede relacionarseotra entidad. Ej.: una persona puede tener como mximo tresautomviles. 7. Cardinalidad mnima de una relacin: representa elnmero mnimo de ocurrencias de una entidad con las que se puederelacionarse otra entidad. Ej.: un automvil debe pertenecer comomnimo a una persona. 8. Entidad dbil: se dice que una entidad esdbil, o es dependiente de otra, cuando no somos capaces de conocera que ocurrencia de entidad nos estamos refiriendo, ni siquieraconociendo su clave, sino que debemos conocer el valor de algn otroatributo de otra entidad. Por ejemplo, si tenemos las entidadesedificio (con el atributo clave codigo_edificio) y planta (con elatributo codigo_planta), sta ltima es una entidad dbil, ya que nosomos capaces de identificar una planta con slo conocer el cdigo dela planta, sino que adems se necesita conocer el cdigo del edificioal que se hace referencia, para determinar la planta dentro deledificio.

Figura 7

En general, en una relacin se suele representar conjuntamentelas cardinalidades mxima y mnima. En los anteriores casos no se hanconsiderado las cardinalidades mnimas. stas vienen a representar laP g i n a | 23

opcionalidad de la ocurrencia de una entidad en una relacin, esdecir, si dicha ocurrencia se debe dar obligatoriamente, o si porel contrario se puede obviar. Los tipos de cardinalidades son losque aparecen en la Figura 8, (nos fijaremos slo en un sentido de larelacin, el de la izquierda).

Figura 8

Veamos a continuacin unos ejemplos para comprender mejor lascardinalidades mxima y mnima. Como se podr comprobar, lascardinalidades de una relacin se ponen en la ltima relacin a la quese hace referencia, por ejemplo, si se tienen las entidades alumnoy asignatura, la cardinalidad de la relacin un alumno cursaasignaturas, se pondr al lado de la entidad asignatura. En elsiguiente ejemplo (Figura 9), se tiene una relacin 1-1 en la que unautomvil pertenece a una nica persona (cardinalidad mxima 1), sinla posibilidad de que exista un automvil que no tenga dueo(cardinalidad mnima 1). Esto significa que en el modelo no interesatener informacin de aquellas personas que no tengan automvil.

Figura 9

En la Figura 10, se tiene una relacin 1-1 en la que una personapuede tener un automvil como mucho (cardinalidad mxima 1), o puedeno tener ninguno (cardinalidad mnima 0). Esto significa que elmodelo interesa tener informacin de todas las personas, aunque notengan automvil.

Figura 10

En el siguiente ejemplo (Figura 11), se tiene una relacin 1-N,en la que un profesor puede dar clase a muchos alumnos(cardinalidad mxima N), pero como mnimo debe hacerlo a uno(cardinalidad mnima 1). Esto significa que en el modelo no interesatener informacin de aquellos profesores que no dan clase.

Figura 11

En el siguiente ejemplo, se tiene una relacin N-N, en la que unapersona puede tener varios automviles (cardinalidad mxima N), peropuede que no tenga ninguno (cardinalidad mnima 0). Esto P g i n a |24

significa que en el modelo interesa tener informacin de todaslas personas, aunque no tengan automvil.

Figura 12

Para concluir esta seccin se ver un ejemplo completo querepresentar todos los conceptos vistos hasta ahora. Supongamos quese desea establecer un modelo conceptual para la gestin de unabiblioteca. Se desean tener almacenados todos los libros que lacomponen. Para cada libro interesa conocer el ISBN, el ttulo, elautor o autores, la editorial, el ao de publicacin y la materia. Decada autor se quiere conocer su nombre, apellidos y nacionalidad.Un autor podr haber escrito varios libros, de la misma forma que enun libro pueden participar varios autores. De la editorial se deseaconocer el nombre y la ciudad. A dicha biblioteca podrn estarsuscritos varios usuarios. De ellos se quiere saber su DNI, nmerode socio, nombre, apellidos, direccin y telfono. Por cuestionesdirectivas, se limita el nmero de ejemplares prestados a cadausuario a uno. Se dispone, a su vez, de un nico ejemplar de cadalibro, por lo que un libro prestado a un usuario, no podr serprestado a otro hasta que se devuelva. Deber quedar constancia dela fecha de prstamo de cada ejemplar. Lo ms destacable del anteriorejemplo es la entidad prstamo. Es una entidad dbil que depende delibro y de socio, ya que para diferenciar un prstamo de otro, senecesita saber no slo el libro, sino el socio al cual se haprestado. Tambin se pueden observar que las cardinalidades mnimasson 1. Esto quiere decir que slo se guardar informacin de lasentidades cuando exista, al menos, una ocurrencia de la entidad.Las nicas relaciones que tienen cardinalidad opcional, son las quetienen como origen o destino a la entidad prstamo, lo cual eslgico, ya que tendremos informacin de todas las entidades, aunquetodava no se haya realizado ningn prstamo.

Figura 13

Ejemplos prcticos de diseo conceptualA continuacin resolveremosunos problemas de diseo conceptual, para ir familiarizando allector con los conceptos vistos hasta ahora. Para realizarlos seutilizar la S-Designor, que es una herramienta CASE que abarca granparte del ciclo de vida de las aplicaciones, incluyendo el diseo deesquemas conceptuales. No se preocupe si no conoce la herramienta,ya que se ver en detalle en prximos temas, simplemente qudese conla idea general de la construccin del esquema. P g i n a | 25

El problema que nos planteamos es el siguiente. Supngase que sedesea informatizar una tienda de discos. Para ello se desean teneralmacenados los nombres de todos los discos disponibles, adems desus cantantes y canciones. As mismo se desean almacenar losclientes que han comprado en dicha tienda. Pues bien, empezaremosidentificando las entidades, entendiendo por entidad un grupo decaractersticas que tienen entidad propia. Como primera entidad,podemos establecer los discos que se venden, ya que se deseaconocer informacin de ellos, como puede ser un cdigo que loidentifique dentro de la estantera. Por otro lado se deseaalmacenar todos los artistas que intervienen en los discos denuestra tienda, y para cada uno de ellos se desea conocer su nombrey apellidos, por lo tanto ya tenemos identificada una segundaentidad. Adems, se desea conocer todas las canciones que estndisponibles en los discos, identificada cada una de ellas por uncdigo de cancin, y que adems tendrn sus propias letras. Pues yatenemos la tercera entidad. La cuarta estar formada por losclientes, de los cuales se desea almacenar su nombre, apellidos,direccin y telfono, y que podrn estar identificados internamentepor un cdigo de cliente.

Figura 14

Una vez establecidas las entidades, slo nos queda relacionarlas.Podemos observar las siguientes relaciones: 1. Entre disco ycancin: en un disco pueden aparecer varias canciones, y cada cancinpuede estar en varios discos (N-M). 2. Entre cantante y cancin: uncantante puede componer varias canciones, y una cancin puede estarcompuesta por varios cantantes (N-M). 3. Entre cliente y disco: uncliente puede comprar varios discos, pero un disco slo puede sercomprado por un cliente 1-N. Por lo tanto, el esquema conceptual esque muestra la Figura 15:

Figura 15

Vamos a plantearnos otro problema. Supongamos que se desea teneralmacenados todos los datos de los profesores de una empresadedicada a impartir cursos, as como una breve descripcin de stos, ylos alumnos a los cuales se les ha impartido. Empezamosidentificando entidades. De un profesor se desea conocer su nombrey apellidos, direccin y despacho, por lo tanto establece unaentidad. Otra entidad podra ser el alumno, del cual se deseaconocer su nombre, apellidos, direccin y telfono. Ni P g i n a |26

que decir tiene que el curso describe otra entidad, de la cualse desea conocer su descripcin. Sin embargo, podemos recurrir a unprocedimiento muy usual, denominado tipificacin de estados, muyusado en el diseo conceptual, y que consiste en tener una entidadque tipifique los posibles estados que puede tomar un atributo. Laprincipal ventaja de este procedimiento radica en que muchas vecessupone un ahorro de espacio de almacenamiento (por ejemplo alidentificar nombres de ciudades largas con un solo nmero) adems deuna estandarizacin de los datos almacenados (el estado slo sealmacena una vez). Por ejemplo podemos tipificar las ciudades, paralo cual creamos una nueva entidad ciudad, donde se almacenar uncdigo y la descripcin de la ciudad. Cuando almacenemos la ciudad deun alumno, slo deberemos especificar el cdigo de la ciudad. Una vezestablecidas las entidades, vamos a definir las relaciones entreellas. 1. Profesor y Curso: un profesor puede impartir varioscursos, pero un curso slo 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 yCiudad: un alumno vive en una ciudad, y una ciudad puede tenervarios alumnos (1-N). Por lo tanto, el esquema conceptual es elmostrado en la Figura .

Figura 16

Figura 17

P g i n a | 27

Cabe destacar que el atributo calificacin se da comoconsecuencia de la relacin entre las entidades curso y alumno. Porlo que podr ser introducido en la entidad intermedia que surjacuando se haga el paso a tablas (vase siguiente captulo). Vamos aver un ltimo ejemplo. Supngase un banco que desea almacenar todossus clientes, adems de los productos que puede ofrecer a stos. Cadacliente podr escoger entre todos estos productos el o los que ms leplazcan (crditos, fondos de inversin, libretas de ahorro, etc.). Dela misma forma, dicho banco tiene intereses en otras empresas, porlo que desea conocer en todo momento la situacin de dichasempresas, para poder mejorar su poltica de inversiones. Puesto quedicho banco esta constituido como sociedad annima, desea almacenartodos los componentes de su consejo de administracin (actuales yex-miembros) as como todas las actas de las reuniones ordinarias yextraordinarias. Las decisiones de inversin en estas empresassaldrn como resultado de dichas reuniones, as como la oferta denuevos productos. Como habr podido observar, este ejemplo es unpoco ms complejo, pero no desespere, el proceso es similar al delos dems ejemplos. Empezaremos definiendo entidades y las veremosrepresentadas en la Figura . 1. Cliente: se desea conocer sunombre, apellidos, direccin y NIF, y estar identificado por uncdigo interno cod_cliente. 2. Producto: del cual queremos saber sudescripcin y estar identificado por un cdigo interno cod_producto.3. Empresa: identifica las empresas en las cuales el banco hainvertido. De ellas se desea conocer su cdigo, nombre y CIF. 4.Consejo: establece los componentes del consejo de administracin.Para ello se almacenar el nombre, apellidos y cdigo de cargo decada uno de sus componentes, y si el cargo es vigente o no.Podremos utilizar una nueva entidad que tipifique los tipos decargo. 5. Tipo_cargo: describe los posibles cargos que puede tomaruna persona en el consejo de administracin, y esta compuesto por uncdigo de tipo de cargo, y una descripcin del mismo (secretario,presidente, etc.). 6. Reunin: entidad encargada de describir lainformacin de las actas de las reuniones. Sus atributos soncod_reunin, fecha, extraordinaria, que especifica si la reunin hasido ordinaria o extraordinaria y una descripcin.

Figura 18

P g i n a | 28

Figura 19

Identifiquemos ahora las relaciones. Su representacin grficaaparece en la Figura : 1. Cliente y producto: cada cliente puedeescoger varios productos, y cada producto puede ser ofrecido avarios clientes. 2. Consejo y cargo: un miembro del consejo slotiene un cargo, y cada cargo puede pertenecer a ms de un miembro.3. Reunin y consejo: a cada reunin pueden asistir varios miembrosdel consejo de administracin, y cada miembro puede asistir a ms deuna reunin. 4. Reunin y producto: de cada reunin puede salir laoferta de ms de un nuevo producto pero cada producto nuevo slopuede salir de una reunin. 5. Reunin y empresa: de cada reuninpueden salir decisiones de invertir en ms de una empresa, y cadadecisin de inversin slo sale de una reunin.

Modelo LgicoComo ya se ha sealado, el diseo lgico de una base dedatos consta de dos etapas: el diseo lgico estndar y el diseo lgicoespecfico. En el diseo lgico estndar, se toma el esquema conceptualresultante de la fase de diseo conceptual, y teniendo en cuenta losrequisitos de proceso, de construye un esquema lgico estndar (ELS),que se apoya en un modelo lgico estndar (MLS), que ser el mismomodelo de datos soportado por el SGBD a utilizar (relacional,jerrquico, etc.), pero sin las restricciones de ningn productocomercial en concreto. En nuestro caso se utilizar el MLSrelacional. Una buena forma de describir el ELS es utilizando ellenguaje estndar del MLS (por ejemplo SQL). Una vez obtenido elELS, y considerando el modelo lgico especfico (MLE) propio del SGBDa usar (ORACLE, INFORMIX, SQL-SERVER, etc.), se elabora el esquemalgico especfico (ELE). Al igual que en el caso anterior, una buenaforma de describirlo es utilizando el lenguaje de definicin dedatos (LDD) del producto especifico utilizado (en el caso deSQL-SERVER, se usar el TRANSACT SQL). El diseo lgico especfico estmuy ligado a la fase de diseo fsico, ya que ambos dependen muchodel SGBD que se utilice.

P g i n a | 29

En la fase de diseo lgico, adems de las herramientas yadescritas (MLS, MLE, lenguajes SQL), se disponen de otras quepermiten establecer un buen diseo lgico, como por ejemplo lanormalizacin, la desnormalizacin, etc., que ya se vern ms adelanteen este tema.

Paso del esquema conceptual al esquema lgico estndarLo primeroque hay que realizar en la fase de diseo lgico, es obtener elesquema lgico estndar, a partir del esquema conceptual obtenido enla primera fase. Las reglas que permiten pasar del modelo E/R alesquema lgico, son las que a continuacin se explican: Cada entidadse transforma en una relacin: esto es, cada entidad genera unatabla, con sus mismos atributos, incluyendo las claves. Cadarelacin N-M genera una tabla: las relaciones entre entidades concardinalidad N-M generan una tabla, con los atributos clave deambas entidades. En cada relacin 1-N, la entidad con cardinalidad Nimporta los atributos clave que contiene la entidad concardinalidad 1. Cada relacin dependiente, importa la clave de laotra entidad, como clave.

Para entender mejor el funcionamiento de este mtodo, veamos elpaso a tablas del ejemplo visto en el tema anterior acerca de lagestin de una biblioteca. La entidad editorial est relacionada conla entidad libro con cardinalidad 1-N, por lo tanto, la entidadlibro, con cardinalidad N, importa la clave de la entidadeditorial, con cardinalidad 1. A su vez, est relacionada con laentidad autor, pero en este caso, la cardinalidad es N-M, lo queimplica que se generar una tabla intermedia, en la que sealmacenarn las claves de ambas entidades. Esta tabla, a la quedenominaremos Libro_autor mantiene la informacin de los cdigos delibros junto con los cdigos de autores. Posteriormente, si se deseaextraer ms informacin, tanto del libro como del autor, se deberacceder a sendas tablas. Por ltimo se dispone de la entidadPrstamo, que es dependiente tanto de la entidad Libro como de laentidad Usuario, lo que quiere decir que se generar una tabla, conlos atributos de la entidad Prstamo adems de las claves de lasentidades de las que es dependiente, es decir, ISBN y Num_socio,que entrarn como claves en dicha tabla. Esta ltima relacinobtenida, mantiene informacin de qu libros han sido prestados a quusuarios y en qu fecha. El esquema de las tablas resultantes es elque se muestra en la Figura .

Figura 20

Veamos ahora el paso a tabla de otro ejemplo visto en el temaanterior, cuyo esquema conceptual es el que muestra la Figura .Empezaremos identificando las relaciones, y concretando las tablasque generarn: 1. Cliente-Disco: puesto que es una relacin 1-N, laentidad disco generar una tabla con sus atributos, e importar elatributo 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, apellidosy telfono.

P g i n a | 30

Publicaciones Similares