Bases de datos. © ADR Infor SL
Bases de datos.
Indice Nº-1 Bases de datos.......................................... datos................................................................................. .............................................................................. ............................................................1 .....................1 1.- Introducción............................................................................ .................................................................................................................. ............................................................1 .....................1 2.- Estructura de las bases de datos.............................................................................. .........................................................................................................1 ............................1 Definición.............................................................................. .................................................................................................................... ............................................................1 .....................1 Términos y conceptos......................................................................... .............................................................................................................. ...............................................2 .........2 3.- SQL Server 2005.................................... 2005.......................................................................... ............................................................................. ......................................................4 ...............4 Configuración de SQL Server 2005...................................... 2005............................................................................. ............................................................5 .....................5 Herramienta de administración y gestión de SQL Server 2005......................................... 2005......................................................10 .............10 Administración de bases de datos...................................................... datos............................................................................................ .............................................18 .......18 Creación de tablas........................................................... tablas................................................................................................. ................................................................21 ..........................21 Restricciones y valores permitidos............................................................................... .................................................................................................24 ...................24 Relaciones................................................... Relaciones.......................................................................................... ............................................................................. .............................................29 .......29 Ejercicios........................................................................ ............................................................................................................... ............................................................................. .............................................34 .......34 Ejercicio 1....................................... .............................................................................. ............................................................................. ................................................................34 ..........................34
i
Bases de datos.
Indice Nº-1 Bases de datos.......................................... datos................................................................................. .............................................................................. ............................................................1 .....................1 1.- Introducción............................................................................ .................................................................................................................. ............................................................1 .....................1 2.- Estructura de las bases de datos.............................................................................. .........................................................................................................1 ............................1 Definición.............................................................................. .................................................................................................................... ............................................................1 .....................1 Términos y conceptos......................................................................... .............................................................................................................. ...............................................2 .........2 3.- SQL Server 2005.................................... 2005.......................................................................... ............................................................................. ......................................................4 ...............4 Configuración de SQL Server 2005...................................... 2005............................................................................. ............................................................5 .....................5 Herramienta de administración y gestión de SQL Server 2005......................................... 2005......................................................10 .............10 Administración de bases de datos...................................................... datos............................................................................................ .............................................18 .......18 Creación de tablas........................................................... tablas................................................................................................. ................................................................21 ..........................21 Restricciones y valores permitidos............................................................................... .................................................................................................24 ...................24 Relaciones................................................... Relaciones.......................................................................................... ............................................................................. .............................................29 .......29 Ejercicios........................................................................ ............................................................................................................... ............................................................................. .............................................34 .......34 Ejercicio 1....................................... .............................................................................. ............................................................................. ................................................................34 ..........................34
i
Nº-1 Bases de datos. 1.- Introducción. En cualquier aplicación de software (o al menos su mayoría) es requisito imprescindible el almacenamiento de información para posteriormente ser mostrada, manipulada o eliminada. Visual Studio 2005 nos ofrece todas las herramientas necesarias para el trabajo con bases de datos. Por lo tanto podemos trabajar, con cualquier tipo de base de datos, sean de nivel usuario, como Access o se alojen en servidores, como puede ser SQL SERVER, Oracle, MySql, etc. Las bases de datos locales, como Access son bases de datos orientadas a un uso más bien doméstico, o de oficinas muy pequeñas. Su uso se recomienda para un trabajo personal. Si tenemos pensado un desarrollo multiusuario sobre bases de datos, es más que recomendable descartar Access como almacén de nuestros datos. Una base de datos local, no nos ofrece ni la estabilidad, ni la eficacia, ni la seguridad necesarias para un proyecto empresarial, donde la velocidad y la seguridad de datos son factores primordiales. En cambio con un servidor de base de datos como SQL SERVER, todos los factores se cumplen. Y tenemos añadidas muchas más funciones para realizar determinadas tareas, que Access sería incapaz de realizar. Además Visual Studio 2005, nos ofrece es su edición Express, la posibilidad de de descargar gratuitamente la versión de SQL SERVER 2005 Express Edition, ofreciéndonos la posibilidad de aprender a utilizar un servidor de bases de datos potente y fiable. El único límite de la edición gratuita frente a ediciones de pago, es que nos limitan la cantidad de información a gestionar y el número de usuarios conectados a la base de datos (además de otras funciones avanazadas). La finalidad de este curso, es capacitar al alumno para conseguir los mejores resultados en sus aplicaciones. De este modo, en cada una de las unidades, se explica como sacar el máximo partido a .NET, explicando sólo las características más importantes para conseguir resultados profesionales. Por este motivo, suponemos que trabajaremos con l a versión gratuita de SQL SERVER 2005 y nos centraremos en estas bases de datos, sin entrar a conocer el resto. No sería lógico, que teniendo acceso gratuito a una de los servidores de bases de datos más potente del mercado, limitásemos este curso al trabajo con bases de datos locales.
2.- Estructura de las bases de datos. Definición. Una base de datos es un sistema de almacenamiento de información. Esta definición es válida, sin embargo no se ajusta a la realidad, una base de datos es algo más que el "lugar" donde se almacenan nuestros datos. En ellas, almacenamos no sólo información, sino también una serie de objetos, procedimientos y reglas, que garantizan la integridad y la fiabilidad de los datos, para cubrir las necesidades requeridas por una empresa. Es muy importante y obligatorio, que en el momento de diseñar una base de datos, se estudie de que modo se va a obtener el máximo rendimiento al hora de procesar la información. Para ello, contamos con una serie de 1
Bases de datos.
estructuras y herramientas que garantizan la velocidad de acceso a datos, como por ejemplo los índices. Del mismo modo, las operaciones de acceso a datos más frecuentes pueden ser almacenadas en las bases de datos, en forma de Procedimientos almacenados , de esta forma, almacenamos no sólo los datos, sino también los mecanismos requeridos para trabajar esta información. En SQL SERVER, se almacena en la propia base de datos los credenciales de usuarios, donde se gestionan los permisos de acceso. Para limitar el uso que pueda hacer un determinado usuario sobre nuestros datos. Nuestras aplicaciones no trabajan directamente con nuestros datos, necesitan de un enlace, que se encargue de recibir las ordenes de la aplicación y en función de estas, trabaje sobre los datos. Este enlace recibe el nombre de Servidor de datos , (RDBMS, Relational DataBase Management System). Así pues, nuestro RDBMS será SQL SERVER 2005 encargado de trabajar con las bases de datos en función de las peticiones que le realizará nuestras aplicaciones. Para que entiendas mejor este concepto, piensa en Internet Information Server. Como ya sabes el IIS es nuestro servidor de páginas web, y al igual que un RDBMS trabaja con los datos, el IIS es el encargado de gestionar nuestras páginas, asignar permisos, etc...
Términos y conceptos. Para poder comenzar a trabajar con las bases de datos, es necesario conocer primero una serie de conceptos que nos ayude a entender como funcionan.
Archivos. En la creación de la base de datos, el diseñador puede nombrar esa base de datos con el nombre que desee y su lugar de destino., el propio SQL SERVER, creará la estructura lógica con los archivos necesarios. Estos archivos serían el archivo principal de datos, y el archivo de registros. Si por ejemplo, creamos una base de datos con el nombre "Empresa", SQL SERVER creará dos archivos con los siguientes nombres y extensiones: Empresa_Data.MDF (Archivo principal de datos) (Archivo de registros) • Empresa_Log.LDF •
Por lo tanto nuestra base de datos queda almacenada en estos dos archivos, pudiendo elegir el destino de ambos. Es frecuente encontrarse, con que estos dos archivos se encuentran en unidades de almacenamiento distintas. Tanto por seguridad, como por rendimiento, de modo que si falla una de las unidades no perdamos todos los archivos.
Tablas, registros y campos. Las bases de datos están formadas por bloques de información básicos, estos bloques reciben el nombre de tablas, lo que antiguamente se denominaban ficheros o archivos.
2
Bases de datos.
Una tabla, es un conjunto de información con características comunes. Es decir, almacena información sobre un concepto en común. Por ejemplo en la base de datos de un video club, existirá una tabla que guarde información de las películas, otra que almacene los datos de los socios, etc... Estas tablas, están compuestas de registros. Un registro es cada uno de los elementos de información de la tabla. En el ejemplo de la base de datos del video club, un registro es cada uno de los socios almacenados en la tabla socios. A su vez, cada registro esta formado por una unidades fundamentales denominadas campos. Un campo es la unidad de información que interesa almacenar para cada registro. En nuestro ejemplo, nuestros registros estarían formados por los siguientes campos, nombre de socio, apellidos, número de socio, dni, etc...
Índices. Es fácil encontrar bases de datos con tablas cuyo tamaño aumenta con facilidad pudiendo contener hasta millones de registros. En estos casos el acceso a determinada información, puede ser lento y costoso. Habrá operaciones de consulta que obligue a recorrer la tabla entera, desde su primer registro hasta el último, esto repercute directamente en nuestra aplicación, convirtiéndola en una aplicación lenta y pesada. De ahí la importancia del diseño de la base de datos. Para acelerar el acceso a la información contamos con los índices, un índice almacena una serie de claves que permite al servidor acelerar sus consultas. El índice no sólo sirve para aumentar la velocidad, sirve además para fijar un orden en nuestro registros, tener registros únicos, etc, de modo que cuando se modifica el contenido de una tabla en la cual afecta algún índice, SQL SERVER debe modificar los datos de la tabla y los índices que afectan a la misma.
Procedimientos Almacenados. Un servidor de base de datos no sólo puede manipular información de sus tablas, sino que tiene la capacidad de interpretar código en un lenguaje SQL para la realización de una serie de funciones u operaciones. Este código SQL se puede encapsular en un procedimiento o varios y se almacena en la propia base de datos. Por lo tanto podemos escribir procedimientos en SQL para realizar las tareas deseadas sobre nuestra base de datos y almacenarlos, para más adelante con una sencilla llamada se ejecuten nuestras instrucciones. Estos procedimientos reciben el nombre de procedimientos almacenados y puedes encontrártelos como stored procedures , o también se les suele denominar simplemente como sp. A lo largo de las distintas unidades de este curso aprenderemos a trabajar desde ASP.NET 2.0 y procedimientos almacenados, viendo sus principales características y ventajas.
Vistas. Trabajando con una base de datos, nos encontramos con tareas habituales, que se repiten constantemente. De este modo es muy frecuente realizar de peticiones de datos muy similares que requieres consultas SQL semejantes. Gracias a las Vistas podemos crear en nuestras bases de datos una consultas para su uso habitual. El modo de trabajo es relativamente sencillo, se trata de unas tablas especiales donde sus datos provienen de una o mas tablas en función de la consulta SQL creada. Por ejemplo, podríamos crear una vista para que 3
Bases de datos.
simplemente mediante un número de socio nos devuelva toda la información necesitada (alquileres pendientes, alquileres realizados, etc...)
Triggers. Un trigger es un suceso que se dispara cuando se provoca un determinado evento. Es habitual vincular un trigger a un procedimiento almacenado, de modo que cuando se provoque el trigger, se ejecute el procedimiento almacenado.
Diagramas de bases de datos. Una de las herramientas que sirven de más ayuda al diseñador de bases de datos es el diagrama de bases de datos. Se trata de una herramienta gráfica donde podemos situar nuestras tablas y establecer las relaciones existentes entre ellas. De este modo podemos tener una vista de la estructura genérica de nuestra base de datos.
Usuarios. En las bases de datos podemos añadir tantos usuarios como necesitemos. Y otorgarle los permisos que deseemos. De este modo, podemos limitar a un usuario para que sólo tenga acceso a unas determinadas tablas, y fijar las operaciones que puede realizar sobre las mismas. SQL SERVER crea siempre un usuario por defecto, se trata del usuario dbo (database owner) que es el propietario o creador de la base de datos.
3.- SQL Server 2005. En este apartado aprenderemos los aspectos fundamentales de SQL SERVER 2005 Express Edition que nos permitan diseñar nuestras bases de datos y utilizarlas más adelanta en ASP.NET con su conjunto de objetos ADO.NET que explicaremos en las unidades 3 y 4. Por lo tanto, nos centraremos en explicar únicamente lo necesario para el desarrollo de aplicaciones web vinculadas a datos, sin profundizar excesivamente en todos los aspectos que nos ofrece SQL Server 2005, que puedo asegurarte que son suficientes como para dedicar un único curso a este objetivo. La finalidad de este curso es programar proyectos web avanzados con bases de datos distribuidas con SQL Server 2005, veremos como incluir todas las funcionalidades que nos ofrece ASP.NET 2.0, de modo que cumplan con las necesidades que demandan hoy en día las empresas, tanto para el desarrollo de páginas web, como la gestión de la propia empresa mediante intranets (por este motivo, veremos incluso como desarrollar informes y listados, que se puedan exportar a formato word, pdf, excel, etc...). , sin embargo, la administración de bases de datos es una tarea indispensable para convertirnos en verdaderos administradores profesionales de nuestra Intranet. De este modo podemos ej ercer un completo control sobre todas las herramientas que repercuten en la intranet que hemos creado. Por este motivo, te animo desde aquí a que mejores tus conocimientos con el curso Windows Server 2003 ofrecido en el mismo catálogo de cursos, ya que es el sistema operativo de servidores más adecuado para nuestras intranets desarrolladas con Visual Studio 2005. Del mismo modo, y para completar tu formación, sería muy recomendable un curso de 4
Bases de datos.
Administración y mantenimiento de bases de datos con SQL Server 2005 , así que aquí tienes una buena idea para sugerir un curso nuevo para esta plataforma de teleformación. SQL Server 2005 es el servidor más adecuado para trabajar con Visual Studio 2005, lo más aconsejable a la hora de diseñar una intranet completa, es procurar en la medida de lo posible no mezclar tecnologías de diferentes fabricantes. Puesto que elegimos Microsoft .NET para e l desarrollo de nuestras aplicaciones, lo lógico y recomendable es optar por Microsoft como tecnología principal de nuestras redes. Windows Server 2003 ha evolucionado desde su versión Windows Server 2000 de tal manera que se ha convertido en el sistema operativo para servidores más fiable y seguro del mercado, siendo el servidor preferido por la mayoría de empresas, sin tener nada que envidiar a Linux, que puede llegar a ser más transparente que los sistemas Microsoft, pero también más complejos y duros de configurar. En cambio con el sistema windows, podemos conseguir los mismos efectos, con la a yuda de asistentes que garantizan la misma fiabilidad que cualquier otro sistema. Al elegir nuestro servidor de base de datos, es aún más aconsejable el uso de SQL Server 2005, ya que se encuentra completamente integrado en Visual Studio 2005, hasta el punto que desde el propio interface gráfico de Visual Studio podemos realizar la mayoría de las tareas de administración de la base de datos. Gracias a esta completa integración que nos ofrece Visual Studio, podemos administrar nuestra base de datos desde Visual Studio 2005 y basta con instalar las herramientas de configuración de SQL Server 2005, que podemos encontrar en la página de Microsoft desde la cual descargamos las versiones Express de Visual Studio. Supongo que si te has interesado por este curso, sabrás ya como instalar Visual Web Developer Express Edition y SQL Server 2005 Express Edition sino es así no dudes en usar las tutorías para consultar cualquier duda sobre la instalación y configuración de estas dos herramientas. De todos modos os dejo aquí los dos enlaces para la descarga de las dos herramientas: Microsoft Visual Web Developer Express Edition: http://www.microsoft.com/spanish/msdn/vstudio/express/VWD/default.mspx Microsoft SQL Server 2005 Express Edition: http://www.microsoft.com/spanish/msdn/vstudio/express/SQL/default.mspx En esta última página tienes un enlace para la descarga de la herramienta SQL Server 2005 Management Studio Express. Una herramienta de administración de bases de datos que utilizaremos en este curso, en la última verisón publicada, con menos limitaciones y más avanzada: Microsoft SQL Server 2005 Express Edition with Advanced Services
Configuración de SQL Server 2005. Una vez instalado la versión Express de SQL Server 2005 veamos que ha quedado instalado en nuestro pc, para ello acudimos al menú de inicio, todos los programas y localizamos el paquete añadido por nuestra instalación:
5
Bases de datos.
Vemos que dentro del paquete Microsoft SQL Server 2005, accedemos a un menú con unas herramientas de configuración, estas herramientas son:
De estas herramientas, para nuestros intereses nos basta con conocer la primera de todas (SQL Server Configuration Manager). Desde ella podremos configurar el acceso y el modo de arranque de nuestro servidor de datos. Arrancamos la aplicación y nos encontramos la siguiente pantalla:
De todas las posibles herramientas de configuración a las que podemos optar nosotros tenemos que destacar la primera de todas, SQL Server 2005 Services, desde la cual podremos configurar dos de los aspectos más importantes de nuestro servidor. Por lo tanto hacemos doble click en el icono correspondiente y accedemos a los servidores de bases de datos instalados en nuestro pc. Teniendo que configurar el primero de todos:
6
Bases de datos.
Haciendo click con el botón derecho accedemos al menú desde el cual vemos que tenemos habilitadas una serie de opciones. El primer bloque de opciones hace referencia al estado de nuestro servidor, la opción propiedades para configuración y la última una pequeña ayuda que nos ofrecen en la instalación. De nuevo, podemos comparar el servicio de base de datos de SQL Server 2005, con el servicio de páginas Web de IIS, como ya conoces, desde la configuración de IIS tenemos la opción de configurar una serie de propiedades, y establecer el estado del servidor de páginas web. De igual manera desde SQL Server Configuration Manager, podemos realizar estas mismas tareas sobre los servicios de base de datos.
Opción:
Función:
start
Para activar nuestro servidor de modo manual. Si el servidor se encuentra en funcionamiento, lógicamente esta función aparecerá deshabilitada, lo mismo sucederá con el resto de opciones.
stop
Detiene el servidor.
pause
Detiene el servidor momentáneamente.
resume 7
Bases de datos.
Una vez detenido el servidor mediante "pause", lo vuelve a poner en marcha. restart
Detiene el servidor, e inmediatamente vuelve a activarlo.
Accedemos a una ventana para llevar a propiedades cabo varias configuraciones. ayuda
Pequeña ayuda sobre este servicio.
Veamos ahora como configurar ciertos aspectos del servidor desde la ventana de configuración que aparece pulsando sobre propiedades:
La ventana aparece con la pestaña Log on, activada, desde esta ventana configuramos los permisos de acceso al servidor. Es muy importante configurar debidamente estos accesos. Primero podemos indicar el modo de la cuenta, o bien indicar que la cuenta será la activada en nuestro servidor. En nuestro caso lo configuraremos para que el administrador de nuestro pc sea el usuario predeterminado para tener permisos de administración.
8
Bases de datos.
Cuando instalamos nuestros servicios en el servidor de una empresa debemos operar de diferente método, creando un usuario específico para la administración de la base de datos, es bastante lógico crear un usuario para esta tarea, ya que es posible que modifiquemos las características de usuarios para otras tareas y para que estos cambios no afecten a SQL Server es mejor que tenga un único usuario fijo para esta tarea. Y por último tenemos a nuestra disposición una serie de botones para actuar sobre el estado del servidor. Sigamos con la configuración pinchando en la pestaña Service.
Destacamos la propiedad Start Mode , desde ella podemos habilitar 3 modos diferentes de activar nuestro servidor:
Opción:
Función:
Con esta opción, el servidor arrancará conjuntamente con el sistema, es decir, cuando nuestro sistema operativo arranque, el servidor de base de datos se activará Automatic automáticamente, esta es la opción más habitual y recomendad, ya que nuestro servidor estará permanentemente ofreciendo sus servcios. 9
Bases de datos.
Disabled
Deshabilitamos el arranque del servidor.
Manual
El modo de gestionar el estado del servidor será manual por parte del desarrollador mediante las opciones que vimos anteriormente.
No entraremos a explicar las opciones avanzadas ya que no entraría dentro de los objetivos de este curso. En el siguiente video se explica detenidamente como dejar configurado nuestro servidor, presta atención a todos los aspectos explicados.
Configuración de SQL Server 2005
Herramienta de administración y gestión de SQL Server 2005 Con la instalación y la configuración que acabamos de ver ya podríamos comenzar a trabajar con las bases de datos. Para crear y gestionar nuestras tablas, procedimientos almacenados, etc nos veríamos obligados a hacerlo desde Visual Studio. Pero, como ya sabes, el objetivo final del curso es el desarrollo de una aplicación profesional, para la cual nuestra base de datos estará integrada de una gran cantidad de tablas y procedimientos almacenados. Por este motivo, nos ayudaremos de una segunda herramienta que nos permita administrar nuestra base de datos, realizar comprobaciones, y otro tipo de tareas. Esta segunda herramienta es Sql Server Management Studio Express CTP , la cual no se instala con la herramientas de configuración y debemos descargarla por separado desde la página de Microsoft. Por si nunca la has descargado o instalado te dejo el enlace para descargarla, basta con descargar y seguir el asistente de instalación, es el mismo enlace que has encontrado en el anterior capitulo. Microsoft SQL Server 2005 Express Edition with Advanced Services Para administrar las bases de datos, tenemos la posibilidad de instalar SQL Server 2005 sin añadir esta herramienta de administración, ya que en el entorno de Visual Studio 2005, tenemos acceso a un panel para la exploración de base de datos. Nosotros utilizaremos a lo largo del curso la herramienta de administración específica e independiente de SQL Server 2005 para introducir al alumno a este servidor de base de datos. De todos modos, en alguna ocasión, nos ayudaremos de Visual Studio 2005 y su explorador de base de datos para acceder a las bases de datos.
Una vez instalada esta herramienta, vemos que ha sido añadida a nuestro paquete de software de SQL Server 2005:
10
Bases de datos.
Con SQL Server Management Studio hemos instalado un conjunto de herramientas para realizar todas las tareas necesarias.
Nota: Si has desarrollado bases de datos con SQL Server 2000, debes saber que con SQL Server Management Studio se instalan todas las herramientas en una sóla, y no en paquetes separados. Vamos a ir viendo paso a paso, como trabajar con esta herramienta. De modo que al finalizar este capítulo, tengamos creada una base de datos y seas capaz más adelante de crear tus propias bases de datos, con sus tablas bien estructuradas, etc... Por lo tanto combinaremos explicaciones sobre SQL Server Mangement Studio con otros aspectos importantes del diseño de base de datos. Comencemos con la herramienta, desde el menú de inicio arrancamos la aplicación y nos encontramos con una ventana de conexión.
Desde esta ventana, te debe recordar a lo explicado en las herramientas de configuración. Antes de comenzar a trabajar con el administrador, debemos indicar a que servidor y con que usuario queremos conectar y entrar al administrador.
Propiedad:
Server name:
Opciones:
Elegimos el servidor con el que conectaremos.
Authentication: Windows Authentication • SQL Server Authentication •
Función: El nombre del servidor, que elijamos para conectar con el administrador. Debes recordar este nombre, porque será el que tengas que utilizar en las cadenas de conexión desde .NET. Si elegimos la opción "Windows Authentication" estaremos conectando con la misma cuenta de usuario con la que iniciamos nuestro sistema. Trabajaremos con esta opción a lo largo del curso.
11
Bases de datos.
Si seleccionamos "SQL Server Authentication" deberemos indicar con que cuenta vamos a conectar e introducir la contraseña específica para conectar con SQL Server. Con la versión SQL Server 2005 Express es más recomendable trabjar con "Windows Authentication" ya que de otro modo podemos encontrar problemas por la limitación de la versión gratuita. Elegidas nuestras opciones adecuadas pulsaremos en conectar, en ese momento nos muestra una ventana con el proceso de conexión y si todo ha resultado correcto, arranca nuestra herramienta de administración.
Nota: En este curso utilizaremos esta herramienta para diseñar bases de datos, crear cuentas de usuario y ejecutar nuestras sentencias SQL, necesarias para la gestión de datos, mediante el administrador de consultas. Todo lo demás quedaría para un curso específico de administración y mantenimiento de bases de datos con SQL Server 2005. Por lo tanto no te preocupes al observar que no se explican todas las características, ya que las tareas que vamos a aprender, son las necesarias para desarrollar nuestras aplicaciones web avanzadas.
Iniciar SQL Server Management Studio
12
Bases de datos.
Usuarios de SQL Server 2005. En el momento de configurar la conexión con SQL Server 2005, i ndicamos que comenzaríamos la sesión con una cuenta del sistema local. Lo cual quiere decir, que utilizamos la misma cuenta de inicio de sesión de Windows para conectarnos a nuestro servidor de datos. A lo largo de este curso, utilizaremos este modo de autenticación, no obstante, vamos a explicar como crear cuentas de usuario de SQL Server, puesto que se trata del modo de trabajo más seguro. Para crear cuentas de usuario, tenemos habilitada la carpeta Security, que podemos encontrar desplegando el árbol de navegación del explorador de objetos. Dentro de esta carpeta, se almacena la carpeta Logins, la cual muestra en la pestaña principal, las cuentas de usuario que se crean automáticamente por defecto al instalar SQL Server y las creadas por nosotros. Para crear una nueva cuenta, pulsamos el botón derecho del ratón sobre la carpeta Logins, y seleccionamos New.
En la siguiente ventana comienza el proceso de creación de la cuenta. En el primer paso (General) indicamos: El nombre o Login de la cuenta. • El tipo de autenticación para esta cuenta, pudiendo elegir entre autenticación windows o autenticación SQL Server. Si seleccionamos autenticación Windows, mediante el boton "Search" podemos buscar entre las cuentas de Windows que existen en nuestro sistema y seleccionar una de ellas. • En este caso, vamos a crear una cuenta de SQL Server, por lo tanto la seleccionamos y le indicamos el nombre de usuario y su contraseña. Vemos que tenemos la posibilidad de forzar las políticas de •
13
Bases de datos.
contraseñas, las cuales se aseguran que las contraseñas cumplan unas determinadas condiciones de formato, de caducidad, y la posibilidad de que el usuario cambie su contraseña en el momento de iniciar por primera vez su sesión. Estas políticas se encuentras deshabilitadas en la versión Express de Sql Server 2005. • Base de datos por defecto con la que trabajará el usuario, y el lenguaje por defecto.
Una vez indicadas estas propiedades, vamos a configurar los permisos de acceso de este usuario, para ello, vamos al panel que tenemos a la izquierda y seleccionamos Server Roles. Desde esta pestaña, indicamos las reglas de acceso sobre el servidor, pudiendo elegir entre permisos para administración de procesos, creación de bases de datos, administración de seguridad (crear nuevos usuarios...) etc.
14
Bases de datos.
A continuación, le indicamos los permisos específicos que tendrá el usuario para cada base de datos. Para ello le indicamos a que grupo de usuarios pertenecerá el usuario en una base de datos concreta.
15
Bases de datos.
Y por último, podemos como administradores del servidor habilitar o deshabilitar la cuenta de usuario que estamos creando, mediante la opción del panel izquierdo Status:
16
Bases de datos.
Una vez configuradas todas las propiedades de esta cuenta pulsamos OK para almacenar todos los cambios. Ahora podríamos pulsar sobre el botón para conectarnos al servidor e introducir el login y contraseña de la cuenta SQL Server que hemos creado. Y comprobar los permisos de cuenta que hemos indicado. En el siguiente video se explica el proceso de la creación de cuentas o instancias con SQL Server 2005.
Administrar usuarios
17
Bases de datos.
Administración de bases de datos. Una vez que hemos visto como realizar instancias de usuarios mediante el administrador, nos pondremos a trabajar en la creación de bases de datos mediante esta herramienta. Ya hemos explicado que una base de datos está formada por un grupo de tablas que almacenan datos estructurados mediante registros (filas) y campos (columnas). Cada campo almacena un tipo de información como fechas, números enteros, decimales, texto, etc... Al crear una base de datos es primordial la configuración de la estructura de almacenamiento de datos. SQL Server 2005 administra la base de datos en varios archivos de datos y registros de transacciones. Toda la información y los objetos (tablas, procedimientos almacenados, triggers, vistas, etc... se almacena en esta jerarquía de archivos.
Crear bases de datos con el administrador. Lo primero que debemos tener en cuenta en el momento de crear nuestra base de datos, es verificar que el usuario creador de la base de datos debe tener permiso sobre la base de datos "master". Esta base de datos es la que utiliza SQL Server por defecto, y al crear una base de datos cualquiera, se modifican tablas que guardan información sobre la nueva base de datos. Durante la tarea de creación de nuevas bases de datos, se fija el nombre, sus propiedades, y la ubicación física de los archivos que la componen. Para iniciar el proceso de creación, se despliegan las carpetas y se pulsa con el botón derecho sobre la carpeta de las bases de datos. Y seleccionamos la opción "New database"
El resto de opciones de este menú son los siguientes: 18
Bases de datos.
Opción:
Función:
Attach
Creamos una base ya existente, es decir incluimos en nuestro administrador una base de datos para poder ser administrada.
Restore Database
Restaurar una base de datos, a partir de su copia de seguridad.
Restore Files and Filegroups
Restaurar archivos y grupos de archivos. Los grupos de archivos son definidos por el usuarios en el momento de la creación o de la modificación de una base de datos.
Una vez abierta la ventana para la creación de la base de datos podemos asignar las siguientes propiedades:
19
Bases de datos.
Opción:
Función:
Datbase Name
Nombre de la base de datos.
Owner
Propietario de la base de datos.
Logical Name
Nombre lógico para los archivos que se generan junto con la base de datos.
File Type
Tipo de archivo. Anteriormente hemos mencionado que en la creación de una base de datos se generan dos tipos de archvios: el archivo principal y el de 20
Bases de datos.
transacciones. Filegroup
Grupo de archivos a los que pertenecen cada uno de los tipos de archivo.
Initial Size
Tamaño inicial que se reserva para la base de datos.
Autocrecimiento. Los archivos de datos aumentan automáticamente de tamaño de dos modos posibles: en Autogrowth megabytes o en porcentaje. Además podemos restringir o no el crecimiento a una cantidad fija de megabytes. Path
Ruta física del directorio donde se almacenarán los dos tipos de ficheros.
File Name
Nombre de esos ficheros.
La configuración de estas propiedades son suficientes para la creación de la base de datos. Una vez pulsado y aceptados los cambios, nuestra base de datos ya ha sido creada y preparada para se gestionada mediante el administrador.
Proceso de creación de una base de datos.
Creación de tablas. Como ya sabemos las tablas son los objetos que almacenan los datos. A la hora de diseñar una base de datos, se debe hacer un estudio de que tablas serán necesarias y que tipo de datos van a almacenar. Al diseñar la tabla es obligatorio evaluar las columnas que vamos a añadir, el tipo de dato para cada columna, y la longitud máxima si es necesaria.
Tipos de datos. Los tipos de datos indican que valores se pueden almacenar en una determinada columna. En Sql Server tenemos los siguientes tipos de datos fundamentales:
Tipo de dato: binarios
Descripción Números hexadecimales.
21
Bases de datos.
carácter
Combinaciones de letras, símbolos y números.
Unicode
Cualquier carácter que cumpla el estándar unicode
fecha y hora
Fechas, horas...
Permiten positivos, negativos, numéricos enteros, decimales y fraccionales. moneda
Valores monetarios positivos y negativos.
usuario
Tipos de datos definidos por el usuario.
Cualquiera que no se pueda especiales ubicar en los tipos mencionados. Datos binarios. Dentro de este grupo fundamental encontramos los siguientes tipos.
Tipo de dato:
Características.
binary
Tamaño máximo de 8 KB para sus filas.
varbinary
Los datos varían sus dígitos hexadecimales hasta 8 KB
image
Datos binarios de cualquier longitud superior a 8 KB, entre estos datos podemos encontrar documentos de Word, imágenes (jpeg, bmp, gif). Hay que ser muy precavidos al utilizarlo para no incrementar innecesariamente el tamaño de la base de datos.
Datos caracter. Tipos de datos disponibles para este grupo:
Tipo de dato: char
Características. Longitud fija no superior a 8 Kb 22
Bases de datos.
varchar
Longitud variable no superior a 8 Kb.
text
Caracteres ASCII con longitud superior a 8 Kb.
En este mismo grupo se pueden situar los tipos de datos para caracteres unicode. Que serían nchar, nvarchar y ntext.
Datos de fecha y hora. En este grupo podemos utilizar los siguientes tipos:
Tipo de dato:
datetime
Características. Intervalo: 01/01/1753 31/12/9999, se necesitan 8Kb para almacenar este tipo de dato.
Intervalo: 01/01/1900 smalldatetime 06/06/2079, se necesitan 4 Kb de capacidad para este tipo.
Datos Numéricos. Tipos de utilizados:
Tipo de dato:
Características.
bigint
Intervalo: -2^63 y 2^63-1. Capacidad: 8 bytes.
int
Intervalo: -2.147.483.648 y 2.147.483.647. Capacidad: 4 bytes.
smallint
Intervalo: -32.768 a 32.767. Capacidad: 2 bytes.
tinyint
Intervalo: 0 a 255: Capacidad: 1 byte
Datos que almacenan hasta el decimal o dígito menos significativo de numeric los decimales. float y real
Conocidos como numéricos aproximados o de coma flotante, almacenan tantos decimales como permita el
23
Bases de datos.
sistema binario.
Datos monetarios. Los datos monetarios almacenan hasta un máximos de 4 decimales.
Tipo de dato:
money
Características. I n t e r v a l o : -922.337.203.685.477,5808 y 922.337.203.685.477,5807. Capacidad: 8 bytes.
Intervalo: -214.748,3648 y smallmoney 21.748,3647 Capacidad: 4 bytes.
Tipos de datos especiales. En SQL Server podemos encontrar una serie de datos especiales.
Tipo de dato:
Características.
timestamp o rowversion
Número creciente en binario que almacena
bit
Representa valores TRUE o FALSE, YES o NO, 1 ó 0
Número hexadecimal de 16 uniqueidentifier Bytes que identifica como única una fila entre muchas. sql_variant
Cualquier tipo de datos permitido, excepto txt, ntext, timestamp)
table
Almacena resultados para más adelante procesarlos.
Restricciones y valores permitidos. Uno de los aspectos más esenciales a cuidar al diseñar las tablas de datos son las restricciones, valores predeterminados y valores nulos. Por lo tanto, al crear nuestras tablas debemos evaluar los valores válidos y asegurar la integridad de los datos. Para garantizar la integridad de los datos SQL Server nos ofrece los siguientes métodos mediante restricciones:
Restricción:
Funciones:
24
Bases de datos.
PRIMARY KEY
Esta restricción en una de las columnas (o varias) asegura que gracias a ella la fila sea única. Recibe el nombre de clave principal o primaria.
FOREIGN KEY
Aseguran y establecen un vínculo entre los datos de dos tablas relacionadas. Reciben el nombre de clave externa o foránea.
UNIQUE
Aseguramos que no tengamos valores duplicados en columnas que no sean claves primarias.
CHECK
Limita los valores permitidos.
DEFAULT
Las columnas deben contener un valor, aunque sea nulo (NULL)
NULL
La columna acepta valores NULL.
Para usar las restricciones se debe hacer siguiendo una lógica de trabajo para no caer en errores inesperados y cumplir las reglas marcadas. No te preocupes si no entiendes ciertos conceptos, más adelante con las relaciones entre tablas y los ejercicios prácticos terminarás de comprender la teoría y su utilidad. En una tabla sólo está permitido colocar una columna con clave primaria (PRIMARY KEY) y lógicamente, no aceptará valores NULL. En el momento de asignar a una columna la restricción de clave primaria, SQL Server genera un índice único para esta columna, y el acceso o búsquedas a esta columna será notablemente más rápido. Si se decide situar una restricción PRIMARY KEY en más de una columna, este caso es especial, ya que puede haber valores repetidos en una columna de clave primaria, siempre que la combinación de valores de columnas de clave primaria aseguren filas únicas y diferentes. Es decir, el conjunto de valores asignados a los campos de clave primaria aseguran la identidad de un fila. Por norma general una columna FOREIGN KEY o varias suelen estar vinculadas a columnas PRIMARY KEY de otra tabla. Aunque también es posible vincularlas con columnas UNIQUE de otras tablas. Las restricciones UNIQUE pueden almacenar valores NULL, pero no así las claves primarias. Para controlar los valores de una columna podemos hacerlo con restricciones CHECK y FOREIGN KEY, aunque actúan de diferente modo, obtenemos resultados parecidos. Podemos indicar varias restricciones CHECK a una misma columna, el orden en el que serán evaluadas, será el mismo en el que fueron creadas. Debes tener muy claro que un valor NULL significa que no hay una entrada de dato. No es ni un cero, ni un blanco, ni tan siquiera una cadena de caracteres de longitud cero (""). Hace referencia a un valor desconocido o inexistente. No es aconsejable permitir valores NULL porque añaden complejidad a las estructuras de las tablas y complica las consultas.
25
Bases de datos.
Si no permitimos valores NULL, se garantiza mejor la integridad de datos, si utilizamos claves primarias, no permite por defecto valores NULL.
Crear tablas con el administrador. Lo primero que debemos hacer es desplegar la base de datos sobre la que vamos a crear las tablas, una vez desplegadas vemos diferentes carpetas que almacenan distintos ti pos de objetos. Una de estas carpetas es la carpeta Tables, pulsando con el botón derecho y seleccionando la opción New Table.
Al seleccionar new table, se abre una nueva pestaña con la siguiente ventana, donde podemos configurar todas las propiedades de la tabla.
26
Bases de datos.
Punto 1) En esa zona podemos indicar las características fundamentales de una columna, su nombre, tipo de dato, longitud y si permite o no almacenar valores nulos. Punto 2) Es un punto más donde configurar la posibilidad de almacenar valores nulos. Punto 3) Asigna una columna con la propiedad IDENTITY. Con esta propiedad, el campo será un tipo numérico que aumenta su valor automáticamente. El valor se va incrementando según se vayan añadiendo registros a la tabla, el valor de incremento y el valor de inicio puede ser indicado mediante las propiedades Identity Increment e Identity Seed. Si pulsamos con el botón derecho sobre una de las columnas, nos muestran un menú para poder configurar las restricciones de cada columna: 27
Bases de datos.
Punto 4)
Set primary key: Asigna la restricción clave primaria a la columna seleccionada. Podemos reconocer una columna como clave primaria si aparece un pequeño icono con forma de llave a su izquierda.
Punto 5)
Relationships: Establece las relaciones entre tablas, creando la columna como clave foránea o FOREIGN KEY. En el capítulo Relaciones, veremos como configurar estas relaciones. Punto 6)
Indexes/Keys: Configuramos la columna con la restricción UNIQUE. Punto 7) Restricciones CHECK. Una vez definidas las columnas de la tabla, almacenamos los cambios e introducimos un nombre para identificar la tabla. Para realizar cualquier modificación de una tabla una vez almacenada, debemos seleccionar la tabla con el botón derecho y pulsar la opción Modify del menú emergen. Esto nos llevará de nuevo a la misma ventana de creación de tablas, para modificar las propiedades que estimemos necesarias. Por último, tenemos que ver como introducir datos directamente a nuestras tablas, para ello pulsando con el botón derecho sobre la tabla en cuestión elegimos la opción Open Table.
Al seleccionar Open Table, nos aparece una ventana para ir ingresando los datos y creando nuestras filas.
28
Bases de datos.
Lógicamente nosotros no operaremos de este modo. Nuestro objetivo es programar y desarrollar los interface gráficos que permitan la introducción automática de datos en las tablas con ASP.NET 2.0 y ADO.NET 2.0. Pero habrá veces que tendremos que recurrir a la introducción de datos en SQL Server obligatoriamente.
Relaciones. El objetivo principal que se busca al relacionar tablas es el conseguir no tener datos repetidos o redundantes. Las relaciones entre tablas se consiguen a través de vínculos establecidos entre una columna o varias de las tablas a relacionar. Vamos a ver un ejemplo, con el que entenderás mejor la finalidad de las relaciones. Piensa en la gestión de una biblioteca, para almacenar los datos de los libros, nos creamos una tabla a la que llamaremos tabla_libros. Esta tabla debe almacenar los siguientes campos: ISBN. • Titulo. • Numero_páginas. • Fecha_Publicación. • Nombre_Autor. • Apellidos_Autor. • Fecha_Nacimiento_Autor. • Nacionalidad_Autor. • Nombre_Editorial. • Nacionalidad_Editorial. •
Estudiando un poco el tipo de información que va a almacenar nuestra tabla, vemos con claridad que los campos ISBN, Titulo y número de páginas son específicas para un libro, en cambio habrá muchos libros que hayan sido escritos por el mismo autor y publicados por la misma editorial. Supongamos que sólo trabajamos con libros de dos editoriales y de dos autores. Si tenemos 1000 libros en nuestra biblioteca, los campos Nombre_Autor, Fecha_Nacimiento_Autor, Nacionalidad_Autor, Nombre_Editorial y Nacionalidad_Editorial aparecerán repetidos, ya que son campos c ompartidos por muchos de los libros que son creados por el mismo autor y editados por la misa editorial. Estamos duplicando información de un modo innecesario. La solución más eficaz es situar a los autores en una tabla independiente para ellos y a las editoriales en otra tabla. De este modo, y siguiendo con las suposiciones de nuestro ejemplo, si únicamente trabajamos con dos autores y con dos editoriales, estas tablas nuevas sólo tendrán dos registros. Y bastaría con buscar el modo de relacionar a cada libro con su correspondiente autor y su correspondiente editorial.
tabla_libros
tabla_autores
tabla_editoriales
ISBN
Nombre_Autor
Titulo
Apellidos_Autor
Nacionalidad_Editorial
Fecha_Nacimientos_Autor
codigo_editorial
Numero_Paginas codig_autor codigo_editorial
Nombre_Editorial
Nacionalidad_Autor codigo_autor
Por lo tanto debemos crear de algún modo unos punteros que apunten a la tabla autores y otro para la tabla editoriales, para conocer en todo momento el autor y la editorial de cada libro. De este modo, añadimos un 29
Bases de datos.
campo a cada tabla, para que sirva de vínculo entre ellas (codigo_autor y codigo_editorial). Veremos como hacerlo más adelante, de momento quédate con la idea los problemas planteados y las soluciones que vamos adoptando y explicando. En el momento de relacionar las tablas podemos obligar a que se sincronicen mediante relaciones de integridad, de modo que por ejemplo un libro siempre apunte a una editorial que exista en nuestra tabla de editoriales. Las relaciones se asocian a columnas clave y suelen identificarse con el mismo nombre. Por norma general (no siempre es así), la relación vincula la clave principal de una tabla (recuerda que la clave principal asegura que un registro sea único) con la clave externa (FOREIGN KEY) de la otra tabla. Existen los siguientes tipos de relación: Relación uno a varios. • Relación varios a varios. • Relación uno a uno. •
La más utilizada es la primera de ellas, Relación uno a varios. Que indica que un mismo registro aparece varias veces vinculado en otra tabla y que sin embargo asegura que el registro de la tabla destino sólo aparece una vez. No es tan complicado como parece, en nuestro ejemplo, sabemos que una editorial aparece vinculada para varios libros, este es un buen ejemplo de relación uno a varios. La relación varios a varios, permite que la tabla1 tenga varios registros que coincidan en la tabla2 y viceversa. Para estas relaciones se utilizan tablas auxiliares "puente" entre las relaciones de las tablas. Y por último la relación uno a uno, exige que una fila de la tabla1 sólo pueda coincidir con una fila de la tabla2 y viceversa. Este tipo de relación a penas es utilizado. Para configurar las relaciones con SQL Server 2005, debemos pinchar con el botón derecho sobre la columna deseada y seleccionar la opción RelationShips:
30
Bases de datos.
Pulsamos sobre el botón Add para añadir una nueva relación. Las propiedades que podemos configurar desde esta ventana son las siguientes:
Propiedad
Función
Check Exisitng Data On Creation Or Re-Enabling
Comprueba los datos existentes en el momento de la creación. Garantiza la restricción de los datos que ya existen cuando se crea la clave externa en la tabla.
Enforce For Replication Enforce Foreign Key Constraint
INSERT And UPDATE Sepecification
Exige relación para la duplicación. Aplica esta restricción cuando copiemos esta tabla en otra base de datos. Exige la restricción de clave externa. Permite colocar reglas para la actualización y la eliminación de datos en cascada. Es decir, una modificación en la clave principal provoca la modificación automática en las claves foráneas.
Diagramas de bases de datos. Los diagramas de bases de datos permiten obtener una vista de la estructura de la base de datos que hemos creado. De este modo podremos visualizar las tablas creadas y sus relaciones. Podemos tener todos los diagramas de bases de datos que deseemos, en cada diagrama podemos mostrar la 31
Bases de datos.
totalidad de las tablas o bien un determinado número. Una misma tabla puede aparecer en varios diagramas. Desde los diagramas podemos crear nuevas tablas y realizar modificaciones en ellas. Pero para esta tarea se aconseja utilizar los métodos que hemos explicado hasta ahora por ser más claros y extensos. La principal ventaja que nos ofrecen los diagramas es el la comodidad de poder realizar y estudiar las relaciones entre tablas de un modo visual, lo cual ofrece una información muy clara de cual es la estructura de las relaciones creadas. De este modo, podemos identificar rápidamente el tipo de relación existente entre dos tablas. Dos tablas relacionadas aparecen unidas por líneas y en el extremo de estas líneas tenemos unos iconos que nos indican el tipo de relación. Además, el estilo de estas líneas ofrece información sobre el tipo de sincronización o de las restricciones establecidas en la relación.
Iconos.
Tipo de relación.
--------------
Relación uno a varios.
--------------
Relación varios a varios.
---------------
Relación uno a uno.
Los diagramas de bases de datos se almacenan en la carpeta DataBase Diagram, para crear un nuevo diagrama pulsamos con el botón derecho y seleccionamos New DataBase Diagram. Una vez abierta la ventana para los diagramas, podemos pulsar con el botón derecho en una zona libre de la ventana y se nos muestra un menú para realizar la mayoría de operaciones posibles:
Opciones.
Función.
New Table...
Crear una nueva tabla en la base de datos.
Add Table...
Añadir una tabla existente al diagrama.
New Text Annotation
Permite explicar "notas" o comentarios de texto en el diagrama. 32
Bases de datos.
Select All
Selecciona todos los objetos de las tablas.
Show Relationship Labels
Muestra etiquetas con los identificadores de las relaciones.
Arrange Tables
Reordena nuestras tablas de modo automático de forma que las líneas de relaciones no se entrecrucen para ofrecer mayor claridad.
Zoom
Zoom de la vista, permite alejar o acercar las vistas.
View Page Breaks
Muestra el diagrama dividido por páginas para ofrecer una vista previa de como quedaría una impresión de las páginas.
Recalculate Page Breaks
Actualiza la división de páginas.
Copy Diagram to Clipboard
Copia el diagrama de base de datos en el portapales.
Para establecer una relación en el diagrama, es tan sencillo como seleccionar la columna de una tabla y arrastrar el ratón hasta la tabla con la que se desea vincular, en función de la restricción de estas columnas SQL Server nos ofrece por defecto el tipo de relación más común para esas columnas. En los siguientes videos se toma como base el ejemplo de la biblioteca con las tablas libros, autores y editoriales, en ellos podrás aprender el proceso completo de creación de tablas, relaciones, diagramas de bases de datos e inserción de registros,
Crear Tablas
Diseño de Diagramas de Bases de Datos
Insertar Registros en las Tablas
33