Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Realizacin
Realizacin
Vicerrector Acadmico John Harvey Garavito Londoo Docente (Autor) Oralia Corts Grajales Equipo Tcnico P.A.V. Nubia Amparo Giraldo Garca Jhonatan Arroyave Jaramillo Giselle Andrea Tamayo Mrmol
Tecnolgico de Antioquia Institucin Universitaria Plataforma de Aprendizaje Virtual Proyecto P.A.V. 2008
Unidad 1
1. Historia
1.1. Historia
El trmino base de datos fue acuado por primera vez en 1963, en un simposio celebrado en California. De forma sencilla podemos indicar que una base de datos no es ms que un conjunto de informacin relacionada que se encuentra agrupada o estructurada. El archivo por s mismo, no constituye una base de datos, sino ms bien la forma en que est organizada la informacin es la que da origen a la base de datos. Las bases de datos manuales, pueden ser difciles de gestionar y modificar. Por ejemplo, en una gua de telfonos no es posible encontrar el nmero de un individuo si no sabemos su apellido, aunque conozcamos su domicilio. Del mismo modo, en un archivo de pacientes en el que la informacin est desordenada por el nombre de los mismos, ser una tarea bastante engorrosa encontrar todos los pacientes que viven en una zona determinada. Los problemas expuestos anteriormente se pueden resolver creando una base de datos informatizada. Desde el punto de vista informtico, una base de datos es un sistema formado por un conjunto de datos almacenados en discos que permiten el acceso directo a ellos y un conjunto de programas que manipulan ese conjunto de datos. Desde el punto de vista ms formal, podramos definir una base de datos como un conjunto de datos estructurados, fiables y homogneos, organizados independientemente en mquina, accesibles a tiempo real, compartibles por usuarios concurrentes que tienen necesidades de informacin diferente y no predecible en el tiempo.
Bit: 0 o 1 Byte: conjunto de bits Campo: Conjunto de bytes la unidad ms pequea a la cual uno puede referirse en un programa. Registro: Coleccin de campos de iguales o de diferentes tipos. Archivo: Coleccin de registros almacenados siguiendo una estructura homognea. Base de datos: Es una coleccin de archivos interrelacionados Campo clave: Es un campo particular dentro del registro, que permite la identificacin exclusiva y unvoca de cada registro. La clave debe ser un valor que no se repita, como por ejemplo, el nmero de cdula de identidad, nmero de identificacin, el nmero de carn en una universidad o el nmero de seguro social. Enlace: Relacin entre una secuencia de nodos, en los que se guardan campos de datos Estructura de datos de rbol: Es una forma de organizar un conjunto de datos elementales con el objetivo de facilitar su manipulacin la organizacin solo sigue una jerarqua un nodo proviene de un solo nodo. Estructura de datos en red: Es igual a la estructura de datos en rbol, su diferencia est en que un nodo proviene de varios nodos. Diagramas de estructura de datos: Es una descripcin de la relacin entre entidades (personas, lugares, eventos y objetos) de un sistema y el conjunto de informacin relacionado con la entidad. Algoritmo: Un algoritmo es el conjunto de operaciones y procedimientos que deben seguirse para resolver un problema
. Ibid., p. 6. . Bases de datos. Obtenido en Internet el 22 agosto de 2008. Hora: 10.42 pm. http://www.icapax.com/ASP/bases_de_datos.asp .PREZ LVAREZ-OSSORIO, J.R. Introduccin a la informacin y documentacin cientfica. Madrid: Alambra, 1988. p.39 . Trminos de naturaleza comunicativa e informtica. Obtenido en Internet el 22 agosto de 2008. Hora: 10.42 pm. http://www.colombiestad.gov.co/index.php?option=com_glossary&func=display&Itemid=25 &catid=114
4.
. Ibd., p. 6.
1. Datos: cualquier cosa. 2. Informacin: Son los datos organizados y presentados de tal manera que resulten de utilidad para la toma de decisiones en la empresa en la cual debe servir el sistema. 3. Equipo: Donde se conservan los datos almacenados, el procesador y la memoria principal hacen posible la ejecucin de los programas del sistema de base de datos. 4. Programas: Permiten la implantacin, acceso y mantenimiento del sistema de base de datos. As como la definicin, actualizacin y recuperacin de los datos estructurados. Estos programas componen el DBMS sistema manejador de base de datos (Data Base Management System) o tambin SGBD (Sistema Gestor de Base de Datos). 5. Usuarios: Son las personas que interactan con la base de datos Hay dos clases de usuarios: Informticos: Tienen a su cargo las tareas de creacin y mantenimiento de la base de datos as como la realizacin de los procedimientos y programas que necesitan los usuarios finales estos son:
o o o
Diseador: Recoge y organiza los datos en un modelo Programadores de aplicaciones: son los que desarrollan los programas de interfase con los usuarios finales y acceden a la base de datos usando DML. Administrador de base de datos (DBA): Es un experto que gestiona la base de datos. Es la persona encargada de la administracin de las bases de datos y tiene las siguientes funciones: Instala y actualiza el software Saca copias de seguridad Da soporte a todos los usuarios Revisa las tareas diarias sobre la base de datos
Definicin del esquema: es decir la creacin del esquema original de la base de datos. Esto lo hace escribiendo una serie de definiciones en lenguaje DDL lo que genera las tablas y lo graba en el diccionario de datos. Definicin de la estructura de almacenamiento y del mtodo de acceso: esto se lleva a cabo escribiendo una serie de definiciones con el mismo DDL Modificacin del esquema y de la organizacin fsica: ya sea la modificacin del esquema de la base de datos o de la descripcin de la organizacin fsica del almacenamiento. Estos cambios, aunque son poco frecuentes, se hacen usando DDL, compilndolas y aplicndolas al diccionario de datos. Concesin de autorizacin para el acceso de datos: es decir administrar la seguridad de la base de datos, o sea conceder acceso o denegarlo a un usuario en particular. Especificacin de las limitantes de integridad: estas limitantes se conservan en una estructura especial del sistema que consulta el manejador de bases de datos cada vez que se lleva a cabo una actualizacin a un dato de la base de datos.
Finales: Su inters est centrado en el contenido da la base de datos estos pueden ser: o o Sofisticados: utilizan lenguajes de consulta de base de datos Ingenuos: Utilizan interfaces y mens creados por los usuarios especializados
Disminuir redundancia e inconsistencia de los datos: Puesto que los archivos y los programas de aplicaciones fueron creados por distintos programadores en un periodo largo, es posible que un mismo dato este repetido en varios sitios. Esta redundancia aumenta los costos de almacenamiento y acceso, adems incrementa la posibilidad que exista inconsistencia en la informacin, es decir que las distintas copias de la informacin no concuerden entre s. Por ejemplo: si un sistema graba informacin de sus clientes en el archivo de facturacin y tambin maneja datos de clientes en un archivo de servicio postventa, entonces un cliente podra tener sus datos en dos archivos diferentes. Esto genera dos problemas: el primero es que estamos gastando el doble de espacio en disco para grabar la misma informacin y el otro es que si ese cliente cambia de domicilio y solo se cambia en el archivo de facturacin entonces la informacin ser inconsistente pues en el archivo de servicio postventa estar la informacin anterior, o sea que se tienen dos datos diferentes para el mismo individuo. Facilidad para tener acceso a los datos: suponga que el gerente de la empresa llamada Aceites Esenciales S.A. desea saber la informacin de todos los clientes que consumieron Extracto de manzanilla durante los primeros tres meses del ao en curso, ordenados por municipio. Ante un requerimiento de estos que no estaba contemplado en el sistema original, tocaba hacer dos cosas; sacar el listado completo de todos los clientes y extraerlos manualmente o sentar a un programador por una semana o ms para que haga el programa para hacer la consulta. La pregunta esencial es y que se va a hacer la siguiente vez que se requiera una consulta que no estaba inicialmente prevista? Aislamiento o independencia de los datos: puesto que los datos estn repartidos en varios archivos, y estos pueden tener diferentes formatos, es difcil escribir nuevos programas para obtener los datos apropiados. Usuarios mltiples: Para mejorar el funcionamiento general del sistema y obtener un tiempo de respuesta ms corto, muchos sistemas son multiusuario o sea que permiten el uso de diferentes usuarios en forma simultnea o concurrente. En un ambiente de este tipo, las diferentes actualizaciones sobre el mismo dato pueden resultar en dejar los datos inconsistentes. Por ejemplo: un cuentahabiente del banco XXX tiene un saldo de $1000 y en forma simultnea el cliente hace un retiro y el banco hace el descuento por compra de chequera. Como las dos transacciones se hacen al mismo tiempo el dato que leen ambas transacciones es $1000. Supongamos
que la chequera cuesta $100 y el retiro es por $200, entonces el modulo de descuento de chequeras escribir el valor $900 en el archivo, y el modulo de retiros de los clientes escribe $800, luego el saldo final ser $800 que fue el ultimo datos escrito en el archivo. Ser este dato correcto? Seguridad: el empleado de nomina debe tener acceso a los datos de los empleados y no de los clientes, y a la vez un cajero debe tener acceso a la informacin de clientes y no a la de los empleados. Integridad: ser lgico un precio de un producto que sea menor que cero? Para esto se imponen ciertos limitantes de consistencia pero que pasara cuando resulten nuevos limitantes?
Autoincrementables: son campos numricos enteros que incrementan en una unidad su valor para cada registro incorporado. Su utilidad resulta: Servir de identificador ya que resultan exclusivos de un registro .
. Bases de datos. Obtenido en Internet el 22 agosto de 2008. Hora: 10.42 pm. http://html.rincondelvago.com/bases-de-datos_9.html . Qu son las bases de datos. Obtenido en Internet el 22 agosto de 2008. Hora: 10.42 pm http://www.maestrosdelweb.com/principiantes/%C2%BFque-son-las-bases-de-datos/ . Ibd. . Ibd. P. 6
10
11
1. Nivel de visin. Nivel ms alto de abstraccin, es lo que el usuario final puede visualizar del sistema terminado, describe slo una parte de la base de datos al usuario acreditado para verla. El sistema puede proporcionar muchas visiones para la misma base de datos. La interrelacin entre estos tres niveles de abstraccin se ilustra en la siguiente figura 1. Figura 1
Basada en la direccin:: http://www.temas-estudio.com/base-de-datos/ Obtenida en la Fecha: agosto 17 de 2008 hora: 14.36. Diseo: Equipo Tcnico P.A.V. Agosto del 2008
12
El DBMS tambin conocido como el Gestor de Base de Datos, es como la interfase entre la base de datos fsica y las peticiones del usuario. El DBMS interpreta las peticiones de entrada/salida del usuario y las manda al sistema operativo para la transferencia de datos entre la unidad de memoria secundaria y la memoria principal. El siguiente grafico ilustra mejor este funcionamiento:
13
Figura 2
Basada en la direccin:: http://atenea.udistrital.edu.co/profesores/jdimate/basedatos1/tema1_9.htm Obtenida en la Fecha: agosto 17 de 2008 hora: 14.36. Diseo: Equipo Tcnico P.A.V. Agosto del 2008
Algunos ejemplos de manejadores de bases de datos son: Dbase, Fox, Access, Informix, Unify, Oracle, Internase
14
Es un lenguaje declarativo de acceso a bases de datos relacionales que permite especificar diversos tipos de operaciones sobre las mismas. SQL es considerado actualmente como un lenguaje estndar. Los DBMS estn compuestos por el lenguaje de definicin de datos y el lenguaje de manipulacin de datos 1. Lenguaje de Definicin de Datos Denominado por sus siglas como: DDL(Data definition Language), permite definir un esquema de base de datos por medio de una serie de definiciones que se expresan en un lenguaje especial, el resultado de estas definiciones se almacena en un archivo especial llamado diccionario de datos. El resultado de la compilacin de las sentencias DDL es un conjunto de tablas que se almacena en un archivo especial llamado diccionario o directorio de datos. 2. Lenguaje de Manipulacin de Datos La manipulacin de datos se refiere a las operaciones de insertar, recuperar, eliminar o modificar datos; dichas operaciones son realizadas a travs del lenguaje de manipulacin de datos (DML, Data Manipulation Language), que es quin permite el acceso de los usuarios a los datos.
Existen bsicamente 2 tipos de lenguajes de manipulacin de datos: Procedimentales en los que los LMD requieren que el usuario especifique que datos se necesitan y cmo obtenerlos y No procedimentales, donde los LMD requieren que el usuario especifique que datos se necesitan y sin especificar cmo obtenerlos.
15
16
Figura 3
17
11.Modelo de datos
Un Modelo es una representacin de la realidad que contiene las caractersticas generales de algo que se va a realizar. En base de datos, esta representacin la elaboramos de forma grfica. Un Modelo de Datos es una coleccin de herramientas conceptuales para describir los datos, las relaciones que existen entre ellos, semntica asociada a los datos y restricciones de consistencia. Los modelos de datos se dividen en tres grupos: Modelos lgicos basados en objetos. Modelos lgicos basados en registros. Modelos fsicos de datos.
18
Modelo jerrquico: Es similar al modelo de red en cuanto a las relaciones y datos, ya que estos se representan por medio de registros y sus ligas. La diferencia radica en que estn organizados por conjuntos de rboles en lugar de grficas arbitrarias.
Figura 4
19
Modelo de Red: Este modelo representa los datos mediante colecciones de registros y sus relaciones se representan por medio de ligas o enlaces, los cuales pueden verse como punteros. Los registros se organizan en un conjunto de grficas arbitrarias. Un modelo jerrquico presenta una estructura como la que se muestra en la figura 5.
Figura 5
Modelo Relacional: En este modelo se representan los datos y las relaciones entre estos, a travs de una coleccin de tablas, en las cuales los renglones (tuplas) equivalen a los cada uno de los registros que contendr la base de datos y las columnas corresponden a las caractersticas (atributos) de cada registro localizado en la tupla. Es el tipo de base de datos ms difundido y utilizado en la actualidad y el cual veremos en detalle en el segundo encuentro. Un modelo de datos relacional, presenta una estructura como la que se muestra en la figura 6.
20
Figura 6
Modelos fsicos de datos: Se usan para describir a los datos en el nivel ms bajo, aunque existen muy pocos modelos de este tipo, bsicamente capturan aspectos de la implementacin de los sistemas de base de datos. Existen dos clasificaciones de este tipo que son: Modelo unificador Memoria de elementos .
. Ibid., p 23 . Ibd., pg. 23 . Modelos de datos. Obtenida en Internet el 22 agosto de 2008. Hora: 10.42 pm http://atenea.udistrital.edu.co/profesores/jdimate/basedatos1/tema1_4.htm
21
22
Estn contemplados cambios para alguna de sus actividades actuales que involucren alguna de las informaciones anteriores?
12.4. Diseo
En esta etapa se crea un esquema conceptual de la base de datos. Se desarrollan las especificaciones hasta el punto en que puede comenzar la implementacin. Durante esta etapa se crean modelos detallados de las vistas de usuario y sobre todo las relaciones entre cada elemento del sistema, documentando los derechos de uso y manipulacin de los diferentes grupos de usuarios.
23
Si parte de la informacin necesaria para crear algn elemento establecido ya se encuentra implementado en otro sistema de almacenamiento hay que documentar que relacin existir entre uno y otro y detallar los sistemas que eviten la duplicidad o incoherencia de los datos. El diseo consta, como se vio anteriormente, de tres fases: el diseo global o conceptual, el diseo lgico y el modelo fsico.
12.5. Implementacin
Una vez totalmente detallado el modelo conceptual se comienza con la implementacin fsica del modelo de datos, a medida que se va avanzando en el modelo el administrador del sistema va asegurando la correccin del modelo y el validador la utilidad del mismo. La implementacin consiste en el desarrollo de las tablas, los ndices de los mismos, las condiciones de validacin de los datos, la relacin entre las diferentes tablas. Por otro lado, la definicin de las consultas y los parmetros a utilizar por cada una de ellas. Una vez finalizada la implementacin fsica, se asignan las correspondientes medidas de seguridad y se ubica la base de datos en el lugar correspondiente.
El contenido del tema 12: Ciclo de Vida de una base de datos ha sido ntegramente elaborado por Claudio Casares www.lobocom.es/~claudio Tomado de http://www.solorecursos.com/manuales/sql/moddat003.htm. Septiembre 20 de 2008.
24
Unidad 2
26
27
28
Toda persona realiza una transaccin y que la accin de esta recae siempre sobre un objeto dado. Todas las personas y los objetos residen y se almacenan en un lugar
Cada estudiante debe tener una ms clases y cada clase debe de estar compuesta por uno ms estudiantes.
29
Ejemplo tomado de: http://labredes.itcolima.edu.mx/fundamentosbd/sd_u2_2.htm. Fecha Septiembre 27 de 2008 hora: 10 pm. Diseo: Equipo Tcnico P.A.V
Tomado de: http://labredes.itcolima.edu.mx/fundamentosbd/sd_u2_2.htm. Fecha Septiembre 27 de 2008 hora: 10 pm. Diseo: Equipo Tcnico P.A.V
30
Ejemplo tomado de: http://labredes.itcolima.edu.mx/fundamentosbd/sd_u2_2.htm. Fecha Septiembre 27 de 2008 hora: 10 pm. Diseo: Equipo Tcnico P.A.V
Imagen basada en: http://gemini.udistrital.edu.co/comunidad/profesores/rfranco/modelo_er.htm Fecha agosto 14 de 2008 hora: 10 pm. Diseo: Equipo Tcnico P.A.V
31
Cada estudiante debe inscribirse en uno ms club Y cada club puede tener uno ms estudiantes.
Imagen basada en: http://gemini.udistrital.edu.co/comunidad/profesores/rfranco/modelo_er.htm Fecha agosto 14 de 2008 hora: 10 pm. Diseo: Equipo Tcnico P.A.V
32
33
Imagen basada en: http://gemini.udistrital.edu.co/comunidad/profesores/rfranco/modelo_er.htm Fecha agosto 14 de 2008 hora: 10 pm. Diseo: Equipo Tcnico P.A.V
34
Atributos mandatarios u obligatorios: Cuando el valor de un atributo debe ser siempre conocido, este se representa mediante un smbolo * antepuesto al nombre del atributo. Ejemplo
35
Atributos opcionales: Son aquellos que pueden ser desconocidos, estos se representan por punto antepuesto al nombre del atributo. Ejemplo
Aqu podemos ver que un cliente puede tener varios telfonos lo que me est indicando la presencia de una nueva entidad llamada telfono. Ejemplo:
36
3. Un atributo se transforma en una entidad cuando tiene significado completo en s mismo, con relaciones y atributos propios.
Podemos observar que rea que es un atributo y este tambin tiene atributos propios como nmero del rea y nombre del rea y se pude relacionar con la materia.
Toda entidad debe tener al menos dos atributos una clave primaria y un descriptor. Las nicas entidades que pueden tener solo la clave primaria son las entidades de interseccin que tienen clave primaria compuesta por dos atributos
37
Esta es la relacin que debo eliminar para que queden relaciones 1:N
38
Las entidades estudiante y club son las entidades participantes y la entidad est_club es la entidad de interseccin entidad dbil y toda la relacin se llama relacin de dependencia. La entidad de interseccin puede tener nicamente la clave primaria como se dijo en el reconocimiento de claves y en caso de colocarle otros atributos hay que tener en cuenta que este dependa de los dos atributos que forman la clave primaria. Ejemplo: Un atributo para la entidad EST_CLUB sera el horario en que un estudiante est inscrito en un club.
39
40
4.3. ESPECIALIZACIN.
El proceso por el que se definen las diferentes subclases de una superclase se conoce como especializacin. El conjunto de subclases se define basndonos en caractersticas diferenciadores de las ocurrencias de entidad de la superclase. Por ejemplo, el conjunto se subclases {SECRETARIA, INGENIERO, TCNICO} es una especializacin de la superclase EMPLEADO mediante la distincin del tipo de trabajo en cada ocurrencia de entidad. Podemos tener varias especializaciones de una misma entidad basndonos en distintos criterios. Por ejemplo, otra especializacin de EMPLEADO podra dar lugar a las subclases ASALARIADO y SUBCONTRATADO, dependiendo del tipo de contrato. DIAGRAMAS ENTIDAD RELACIN
41
2. Se desea disear una base de datos que contenga informacin relativa a las
carreteras de determinado pas. sabiendo que:
En dicho pas las carreteras se encuentran dividas en tramos. Un tramo siempre pertenece a una nica carretera y no puede cambiar de carretera. Un tramo puede pasar por varios trminos municipales, siendo de inters el kilmetro del tramo por el que entra en dicho trmino municipal y el kilmetro por el que sale. Existen una serie de reas en las que se agrupan los tramos y cada uno de ellos no puede pertenecer a ms de un rea.
42
3. Se desea disear una base de datos sobre la informacin de las reservas de una
empresa dedicada al alquiler de automviles. Se dispone de la siguiente informacin: Un determinado cliente puede tener en un momento dado varias reservas. Una reserva la realiza un nico cliente, pero puede involucrar a varios coches. Es importante registrar la fecha de comienzo de la reserva y la de terminacin. Todo coche tiene siempre asignado un determinado garaje, que no puede cambiar. Cada reserva se realiza en una determinada agencia. En la base de datos pueden existir clientes que no hayan hecho ninguna reserva.
43
Un casete puede venir en varios formatos y una pelcula es grabada en un solo casete; frecuentemente las pelculas son pedidas de acuerdo a un actor especifico Tom Cruise y Demi More son los ms populares es por esto que se debe mantener informacin de los actores que pertenecen a cada pelcula. No en todas las pelculas actan artistas famosos, a los clientes de la tienda le gusta conocer datos como el nombre real del actor, y su fecha de nacimiento. En la tienda se mantienen informacin solo d los actores que aparecen en las pelculas y que se tiene a disposicin. Solo se alquila videos a aquellos que pertenecen al club de videos. Para pertenecer al club se debe tener un buen crdito. Por cada miembro del club se mantiene una ficha con su nombre, telfono y direccin, cada miembro del club tiene asignado un nmero de membresa. Se desea mantener informacin de todos los casetes que un cliente alquila, cuando un cliente alquila un casete se debera conocer el nombre de la pelcula, la fecha en la que se alquila y la fecha de devolucin.
44
ENTIDAD
CLIENTE PELCULAS TIPO_PEL ACTORES CASETE ALQUILER
Ejemplo tomado de: http://www.monografias.com/trabajos34/base-de-datos/base-de-datos.shtml Fecha Septiembre 27 de 2008 hora: 10 pm Diseo esquema: Equipo Tcnico P.A.V.
45
Un Propietario cuantos Taxis tiene? R/ Varios (La N se pone en TAXIS) Un taxi cuantos Conductores tiene? R/ Uno (el 1 se pone en CONDUCTORES)
Una empresa cuantos propietarios tiene afiliados? R/ Varias (La N se pone en Propietarios)
46
Ejemplo tomado de: http://www.calasanz-pereira.edu.co/prueba/html/modules/Access/normalizacion.htm. Fecha Septiembre 27 de 2008 hora: 10 pm . Diseo esquema: Equipo Tcnico P.A.V.
Nota: Este modelo no tiene destruidas las relaciones N:M. que hay entre cassette y alquiler y la de actor pelculas
47
Unidad 3
Modelo Relacional
El modelo relacional es un modelo lgico basado en registros que vino despus de que los modelos jerrquico y de red estuvieran en uso. Este modelo relacional, no se puede decir que sea en s un modelo semntico de datos. Su enorme xito no se debe a que permite de forma implcita operaciones conceptualmente abstractas sobre los datos, sino a los altos niveles de fiabilidad e integridad que aporta en el manejo de grandes cantidades de datos.
1. Definicin
El modelo de datos relacional fue introducido por Edgar F. Codd (1970). Se basa en una estructura de datos simple y uniforme la relacin y tiene fundamentos tericos slidos El modelo relacional representa la base de datos como una coleccin de relaciones. En trminos mnimos informales, cada relacin semeja una tabla o, hasta cierto punto, un archivo simple. Codd daba 12 reglas que debe cumplir cualquier base de datos que desee considerarse relacional:
1. Regla de informacin: Todos los datos de una base de datos relacional se representan explcitamente (al nivel lgico) como valores de tablas. 2. Reglas de acceso garantizado: Todos y cada uno de los datos (valor indisoluble, nico o atmico) de una base de datos relacional se garantiza que sean lgicamente accesible recurriendo a una combinacin de nombres de tabla, valor de clave primaria y nombre de columna. 3. Tratamiento sistemtico de valores Nulos: Los valores nulos (distinto de cadena de caracteres vacas o de una cadena de caracteres en blanco y distinta de cero o de cualquier otro nmero) se soporta en los SGBD completamente relacionales para representar la falta de informacin y la informacin inaplicable de un modo sistemtico e independiente del tipo de datos. 4. Catlogo en lnea dinmico basado en el modelo relacional: La descripcin de la base de datos o Catalogo se representa (o almacena) a nivel lgico como valores en tablas, del mismo modo que los datos ordinarios, de modo que los usuarios autorizados pueden aplicar a los datos regulares. 5. Regla de sublenguaje completo de datos: un sistema relacional puede soportar varios lenguajes de manipulacin de datos (DMI) y varios modos de uso terminal (por ejemplo, el modo de rellenar con blancos), sin embargo
49
debe haber al menos un lenguaje cuyas sentencias sean expresables, mediante alguna sintaxis bien definida, como cadenas de caracteres, y que sea completa en cuanto al soporte de todos los puntos siguientes: Definicin de datos y Definicin de vistas Manipulacin de datos (interactiva y por programa) Restricciones de integridad Autorizacin Fronteras de transacciones (comienzo, complementacin y vuelta atrs) 6. Regla de actualizacin de vistas:
Todas las vistas que puedan utilizarse son tambin actualizables por el sistema. 7. Insercin, Modificacin y Borrado de alto nivel: Un SGBDR debe hacer ms que recuperar conjuntos relacionales de datos, tambin debe ser capaz de insertar, actualizar y eliminar datos como un conjunto relacional. 8. Independencia fsica de los datos: Los datos deben ser fsicamente independiente de los programas de aplicacin. Los programas de aplicacin y las actividades terminales permanecen lgicamente inalterados cualquiera que sean los cambios efectuados ya sea las representaciones de almacenamiento o a los mtodos de acceso. 9. Independencia lgica de los datos: Cada vez que sea posible, el Software de aplicacin debe ser independiente de los cambios hechos a las tablas Base. Los programas de aplicacin y las actividades terminales permanecen lgicamente inalterados cuando se efectan sobre las tablas de base de cambios preservadores de la informacin de cualquier tipo que tericamente permita alteraciones. 10. Independencia de integridad: La integridad de los datos debe ser definible en el lenguaje relacional y almacenarse en el Catlogo. Las restricciones de integridad especficas para una base de datos relacional y almacenables en el catlogo, no en los programas de aplicacin. 11. Regla de no subversin: Si un sistema relacional tiene un lenguaje de bajo nivel (un solo registro cada vez), ese bajo nivel no puede ser utilizado para subvertir o suprimir las reglas de integridad y las restricciones expresadas en el lenguaje relacional de nivel superior (mltiples registros a la vez)
50
1.
Las 12 reglas de Codd. Obtenido en Internet el 23 de Octubre de 2008. Hora: 9.50 pm. http://www.atpsoftware.net/Public/Articulos.php
51
Esta relacin es un subconjunto del producto cartesiano. Ejemplo de una relacin o tabla de una BD relacional:
52
Para cada atributo existe un conjunto de valores permitidos llamado dominio de ese atributo. Los dominios corresponden a los tipos de datos primitivos de los lenguajes de programacin. Cada fila representa una tupla y una tupla es un conjunto ordenado de valores (atributos). Por tanto una relacin es un conjunto de tuplas filas o registros. Cada atributo, columna o campo slo puede tomar un nico valor del dominio. El grado de una tabla = nmero de columnas La cardinalidad = nmero de registros Debido a que las tablas son bsicamente relaciones se utilizan los trminos matemticos relacin y tupla en lugar de los de tabla y fila. Cuando se habla de una BD debe diferenciarse entre el esquema de la BD, es decir, el diseo lgico de la BD y una instancia de la BD que est constituida con la informacin contenida en la BD en un momento determinado. El esquema de una relacin es en general una lista de atributos y sus correspondientes dominios; la notacin para ello sera: Producto= (cod_prd: string, nom_prd: string, valor: numrico) Sin embargo, no es necesario hacer una definicin precisa del dominio de cada atributo, sino hasta el momento de la implementacin. Por tanto la notacin puede ser: Producto= (cod_prd, nom_prd, valor) El esquema de la BD en este modelo, es el conjunto de definiciones de sus esquemas. Ejemplo: Para una empresa productora de partes, supondremos el siguiente conjunto de esquemas de relaciones:
53
Parte= (nro_pte, nom_pte, color, peso, ciudad) Proveedor= (nro_prv, nom_prv, ciudad_prv) Suministro= ( nro_prv,nro_pte,cantidad_sum) La caracterstica fundamental de este modelo de datos es que las asociaciones entre tuplas (entidades) se representan nicamente por valores de datos en columnas, sacados de un dominio comn. Ejemplo: La asociacin entre PROVEEDOR y SUMINISTRO se da por el campo nro_prv que debe ser igual en ambas relaciones cuando se refieren a un PROVEEDOR determinado.
54
55
1. Semnticas:
En el mundo real existen ciertas restricciones que deben cumplir los elementos en l existentes; por ejemplo, una persona slo puede tener un nmero de DNI y una nica direccin oficial. Cuando se disea una base de datos se debe reflejar fielmente el universo del discurso que estamos tratando, lo que es lo mismo, reflejar las restricciones existentes en el mundo real. Tienen que ser definidas por los diseadores en el modelo entidad relacin.
2.
Reglas de negocio
Los usuarios o los administradores de la base de datos pueden imponer ciertas restricciones especficas sobre los datos, denominadas reglas de negocio.
Por ejemplo, si en una oficina de la empresa inmobiliaria slo puede haber hasta veinte empleados, el SGBD debe dar la posibilidad al usuario de definir una regla al respecto y debe hacerla respetar. En este caso, no debera permitir dar de alta un empleado en una oficina que ya tiene los veinte permitidos.
Integridad de dominio: restringimos los valores que puede tomar un atributo respecto a su dominio, por ejemplo EDAD >= 18 and EDAD<= 65. Una nota>=0 and nota<=5 3.
Reglasdelaentidad
Tipos de datos: Al momento de definir la tabla se deben definir correctamente los tipos de datos de los atributos o columnas. Permitir valores NULL
La nulabilidad de una columna determina si las filas de una tabla pueden contener un valor NULL en esa columna. Un valor NULL no es lo mismo que cero (0), en blanco o que una cadena de caracteres de longitud cero, como "". NULL significa que no hay ninguna entrada. La presencia de un valor NULL suele implicar que el valor es desconocido o no est definido. Por ejemplo, un valor NULL en la columna fecha_venta de la tabla Producto no implica que el artculo no tenga una fecha de venta final. El valor NULL significa que se desconoce la fecha o que no se ha establecido.
56
Restricciones UNIQUE Puede utilizar restricciones UNIQUE para garantizar que no se escriben valores duplicados en columnas especficas que no forman parte de una clave principal. Tanto la restriccin UNIQUE como la restriccin PRIMARY KEY exigen la unicidad; sin embargo, debe utilizar la restriccin UNIQUE y no PRIMARY KEY si desea exigir la unicidad de una columna o una combinacin de columnas que no forman la clave principal. En una tabla se pueden definir varias restricciones UNIQUE, pero slo una restriccin PRIMARY KEY. Adems, a diferencia de las restricciones PRIMARY KEY, las restricciones UNIQUE admiten valores NULL. Sin embargo, de la misma forma que cualquier valor incluido en una restriccin UNIQUE, slo se admite un valor NULL por columna. Es posible hacer referencia a una restriccin UNIQUE con una restriccin FOREIGN KEY. Definiciones DEFAULT Cada columna de un registro debe contener un valor, aunque sea un valor NULL. Puede haber situaciones en las que deba cargar una fila de datos en una tabla, pero no conozca el valor de una columna o el valor ya no exista. Si la columna acepta valores NULL, puede cargar la fila con un valor NULL. Pero, dado que puede no resultar conveniente utilizar columnas que acepten valores NULL, una mejor solucin podra ser establecer una definicin DEFAULT para la columna siempre que sea necesario. Por ejemplo, es habitual especificar el valor cero como valor predeterminado para las columnas numricas, o N/D (no disponible) como valor predeterminado para las columnas de cadenas cuando no se especifica ningn valor. Ejemplo fecha datetime default getdate() indica que el valor predeterminado de fecha es la fecha actual del sistema.
4.
Son reglas de integridad controladas por el DBGS Restricciones PRIMARY KEY Una tabla suele tener una columna o una combinacin de columnas cuyos valores identifican de forma nica cada fila de la tabla. Estas columnas se denominan claves principales de la tabla y exigen la integridad de entidad de la tabla. Puede crear una clave principal mediante la definicin de una restriccin PRIMARY KEY cuando cree o modifique una tabla. Una tabla slo puede tener una restriccin PRIMARY KEY y ninguna columna a la que se aplique una restriccin PRIMARY KEY puede aceptar valores NULL. Debido a que las restricciones PRIMARY KEY garantizan datos nicos, con frecuencia se definen en una columna de identidad. Cuando especifica una restriccin PRIMARY KEY en una tabla, Database Engine (Motor de base de datos) exige la unicidad de los datos mediante la creacin de un ndice nico para las columnas de clave principal. Este ndice tambin permite un acceso rpido a los datos
57
cuando se utiliza la clave principal en las consultas. De esta forma, las claves principales que se eligen deben seguir las reglas para crear ndices nicos. Si se define una restriccin PRIMARY KEY para ms de una columna, puede haber valores duplicados dentro de la misma columna, pero cada combinacin de valores de todas las columnas de la definicin de la restriccin PRIMARY KEY debe ser nica. Como se muestra en la siguiente ilustracin, las columnas ProductID y VendorID de la tabla ProductVendor forman una restriccin PRIMARY KEY compuesta para esta tabla. As se garantiza que la combinacin de ProductID y VendorID es nica.
Cuando trabaja con combinaciones, las restricciones PRIMARY KEY relacionan una tabla con otra. Por ejemplo, para determinar los proveedores que suministran determinados productos, puede utilizar una combinacin de tres elementos entre las tablas Vendedor, Production.Product y ProductVendor. Puesto que ProductVendor contiene las columnas de ProductID y VendorID, se puede obtener acceso a las tablas Product y Vendor mediante su relacin con ProductVendor. Restricciones FOREIGN KEY Una clave externa (FK) es una columna o combinacin de columnas que se utiliza para establecer y exigir un vnculo entre los datos de dos tablas. Puede crear una clave externa mediante la definicin de una restriccin FOREIGN KEY cuando cree o modifique una tabla. En una referencia de clave externa, se crea un vnculo entre dos tablas cuando las columnas de una de ellas hacen referencia a las columnas de la otra que contienen el valor de clave principal. Esta columna se convierte en una clave externa para la segunda tabla. Por ejemplo, la tabla Sales.SalesOrderHeader de la base de datos AdventureWorks tiene un vnculo a la tabla Sales.SalesPerson porque existe una relacin lgica entre pedidos de ventas y personal de ventas. La columna SalesPersonID de la tabla SalesOrderHeader coincide con la columna de clave principal de la tabla SalesPerson. La
58
No es necesario que una restriccin FOREIGN KEY est vinculada nicamente a una restriccin PRIMARY KEY de otra tabla; tambin puede definirse para que haga referencia a las columnas de una restriccin UNIQUE de otra tabla. Una restriccin FOREIGN KEY puede contener valores NULL, pero si alguna columna de una restriccin FOREIGN KEY compuesta contiene valores NULL, se omitir la comprobacin de los valores que componen la restriccin FOREIGN KEY. Para asegurarse de que todos los valores de la restriccin FOREIGN KEY compuesta se comprueben, especifique NOT NULL en todas las columnas que participan.
59
Si en una relacin hay alguna clave ajena, sus valores deben coincidir con valores de la clave primaria a la que hace referencia, o bien, deben ser completamente nulos. Actualizacin y borrado de registros La regla de integridad referencial se enmarca en trminos de estados de la base de datos: indica lo que es un estado ilegal, pero no dice cmo puede evitarse. La cuestin es qu hacer si estando en un estado legal, llega una peticin para realizar una operacin que conduce a un estado ilegal? Existen dos opciones: rechazar la operacin, o bien aceptar la operacin y realizar operaciones adicionales compensatorias que conduzcan a un estado legal.
Por lo tanto, para cada clave ajena de la base de datos habr que contestar a tres preguntas:
Regla de los nulos: Tiene sentido que la clave ajena acepte nulos? Regla de borrado: Qu ocurre si se intenta borrar la tupla referenciada por la clave ajena? Restringir: no se permite borrar la tupla referenciada. Propagar: se borra la tupla referenciada y se propaga el borrado a las tuplas que la referencian mediante la clave ajena. Anular: se borra la tupla referenciada y las tuplas que la referenciaban ponen a nulo la clave ajena (slo si acepta nulos). Regla de modificacin: Qu ocurre si se intenta modificar el valor de la clave primaria de la tupla referenciada por la clave ajena? Restringir: no se permite modificar el valor de la clave primaria de la tupla referenciada. Propagar: se modifica el valor de la clave primaria de la tupla referenciada y se propaga la modificacin a las tuplas que la referencian mediante la clave ajena. Anular: se modifica la tupla referenciada y las tuplas que la referenciaban ponen a nulo la clave ajena (slo si acepta nulos).
5.
Otrasreglasdeintegridad
Disparadores o triggers Combinan los enfoques declarativo (en la condicin) y procedimental (en la accin), Pueden ser tan complejas como imponga la semntica del mundo real en cuanto a la accin, y bastantes complejas en la condicin (todo lo que permite la proposicin
60
lgica mediante la que se expresa la El cumplimiento de la condicin dispara Son ms flexibles que las restricciones de accin especfica.
la
condicin), accin,
SQL Server TechCenter. Obtenido en Internet el 23 de Octubre de 2008. Hora: 9.50 pm. http://technet.microsoft.com/es-es/library/ms191236.aspx
61
5. Teora De La Normalizacin
La primera aproximacin del diccionario de datos (el diccionario de datos es la definicin de los campos o atributos contenidos en las tablas y se define usando DDL), presenta ciertos problemas de redundancia, dependencia, etc. Es necesario optimizar el diseo para conservar la consistencia e integridad de los datos y a la vez optimizar el espacio de almacenamiento eliminando la redundancia. Para esto se lleva a cabo un proceso que se llama NORMALIZACIN y comprende varias Formas Normales. La normalizacin se adopt porque el viejo estilo de poner todos los datos en un solo lugar, como un archivo o una tabla de la base de datos, era ineficiente y conduca a errores de lgica cuando se trataba de manipular los datos. De esta forma la normalizacin ayuda a clarificar la base de datos ya organizarla en partes ms pequeas y ms fciles de entender, adems de otras ventajas destacables como la disminucin de espacio en disco.
62
5.2. Qu es la normalizacin?
Se entiende por normalizacin la descomposicin o subdivisin de una relacin en dos o ms relaciones para evitar la redundancia; en definitiva, que "cada hecho est en su lugar". La normalizacin es el proceso mediante el cual se transforman datos complejos a un conjunto de estructuras de datos ms pequeas, que adems de ser ms simples y ms estables, son ms fciles de mantener. Tambin se puede entender la normalizacin como una serie de reglas que sirven para ayudar a los diseadores de bases de datos a desarrollar un esquema que minimice los problemas de lgica. Cada regla est basada en la que le antecede. La normalizacin se adopt porque el viejo estilo de poner todos los datos en un solo lugar, como un archivo o una tabla de la base de datos, era ineficiente y conduca a errores de lgica cuando se trataban de manipular los datos. La normalizacin tambin hace las cosas fciles de entender. Los seres humanos tenemos la tendencia de simplificar las cosas al mximo. Lo hacemos con casi todo, desde los animales hasta con los automviles. Vemos una imagen de gran tamao y la hacemos ms simple agrupando cosas similares juntas. Las guas que la normalizacin provee crean el marco de referencia para simplificar una estructura de datos compleja. Otra ventaja de la normalizacin de base de datos es el consumo de espacio. Una base de datos normalizada ocupa menos espacio en disco que una no normalizada. Hay menos repeticin de datos, lo que tiene como consecuencia un mucho menor uso de espacio en disco. El proceso de normalizacin tiene un nombre y una serie de reglas para cada fase. Esto puede parecer un poco confuso al principio, pero poco a poco se va entendiendo el proceso, as como las razones para hacerlo de esta manera.
63
Para definir formalmente la segunda forma normal requerimos saber que es una dependencia funcional: Consiste en edificar que atributos dependen de otro(s) atributo(s). Una relacin se encuentra en segunda forma normal, cuando cumple con las reglas de la primera forma normal y todos sus atributos que no son claves (llaves) dependen por completo de la clave . De acuerdo con esta definicin, cada tabla que tiene un atributo nico como clave, est en segunda forma normal.
Para definir formalmente la 3FN necesitamos definir dependencia transitiva: En una afinidad (tabla bidimensional) que tiene por lo menos 3 atributos
64
Una relacin R esta en FNBC si y solo si cada determinante es una llave candidato. Forma Normal de Boyce Codd Ejemplo nombre, cargo, prima) Trabajador(cedula, Pero el cargo determina la prima Existe una dependencia de valores mltiples cuando una afinidad tiene por lo menos tres atributos, dos de los cuales poseen valores mltiples y sus valores dependen solo del tercer atributo, en otras palabras en la afinidad R (A,B,C) existe una dependencia de valores mltiples si A determina valores mltiples de B, A determina valores mltiples de C, y B y C son independientes entre s. Para entender mejor an esto consideremos una afinidad (tabla) llamada estudiante que contiene los siguientes atributos: Claves, estudiante, Especialidad y Curso En la tabla anterior Clave estudiante determina valores mltiples de especialidad y clave estudiante determina valores mltiples de curso, pero especialidad y curso son independientes entre s. Las dependencias de valores mltiples se definen de la siguiente manera: Clave ->->Especialidad y Clave->->Curso; Esto se lee "Clave multidetermina a Especialidad, y clave multidetermina a Curso Existen otras dos formas normales, la llamada quinta forma normal (5FN) que no detallo por su dudoso valor prctico ya que conduce a una gran divisin de tablas, pero que no pueden reconstruirse. y la forma normal dominio / clave (FNDLL) de la que no existe mtodo alguno para su implantacin.
65
exagerado. Las reglas de normalizacin existen como guas para crear tablas que sean fciles de manejar, as como flexibles y eficientes. A veces puede ocurrir que normalizar los datos hasta el nivel ms alto no tenga sentido. Se estn dividiendo tablas slo para seguir las reglas o estas divisiones son en verdad prcticas?. stas son el tipo de cosas que nosotros como diseadores de la base de datos, necesitamos decidir, y la experiencia y el sentido comn nos pueden auxiliar para tomar la decisin correcta. La normalizacin no es una ciencia exacta, ms bien subjetiva. Existen seis niveles ms de normalizacin que no se han discutido aqu. Ellos son Forma Normal Boyce-Codd, Cuarta Forma Normal (4NF), Quinta Forma Normal (5NF) o Forma Normal de Proyeccin-Unin, Forma Normal de Proyeccin-Unin Fuerte, Forma Normal de Proyeccin-Unin Extra Fuerte y Forma Normal de Clave de Dominio. Estas formas de normalizacin pueden llevar las cosas ms all de lo que necesitamos. stas existen para hacer una base de datos realmente relacional. Tienen que ver principalmente con dependencias mltiples y claves relacionales. Para complementar este tema ver video (CD de Actividades). Ejemplo Primera forma normal (1NF)
Se dice que una tabla se encuentra en primera forma normal (1NF) si y solo si cada uno de los campos contiene un nico valor para un registro determinado. Supongamos que deseamos realizar una tabla para guardar los cursos que estn realizando los alumnos de un determinado centro de estudios, podramos considerar el siguiente diseo:
Imagen basada en la direccin: http://perso.wanadoo.es/aldomartin1/noreyalre.htm Obtenida en la Fecha: agosto 17 de 2008 hora: 14.36 Adaptacin: Equipo Tcnico P.A.V.
Podemos observar que el registro de cdigo 1 si cumple la primera forma normal, cada campo del registro contiene un nico dato, pero no ocurre as con los registros 2 y 3 ya que
66
en el campo cursos contiene ms de un dato cada uno. La solucin en este caso es crear dos tablas del siguiente modo:
Imagen basada en la direccin: http://perso.wanadoo.es/aldomartin1/noreyalre.htm Obtenida en la Fecha: agosto 17 de 2008 hora: 14.36 Adaptacin: Equipo Tcnico P.A.V.
Como se puede comprobar ahora todos los registros de ambas tablas contienen valores nicos en sus campos, por lo tanto ambas tablas cumplen la primera forma normal. Una vez normalizada la tabla en 1NF, podemos pasar a la segunda forma normal. Ejemplo Segunda forma normal (2NF) La segunda forma normal compara todos y cada uno de los campos de la tabla con la clave definida. Si todos los campos dependen directamente de la clave se dice que la tabla est es segunda forma normal (2NF). Supongamos que construimos una tabla con los aos que cada empleado ha estado trabajando en cada departamento de una empresa:
67
Imagen basada en la direccin: http://perso.wanadoo.es/aldomartin1/noreyalre.htm Obtenida en la Fecha: agosto 17 de 2008 hora: 14.36 Adaptacin: Equipo Tcnico P.A.V.
Tomando como punto de partida que la clave de esta tabla est formada por los campos cdigo de empleado y cdigo de departamento, podemos decir que la tabla se encuentra en primera forma normal, por tanto vamos a estudiar la segunda: 1. El campo nombre no depende funcionalmente de toda la clave, slo depende del cdigo del empleado. 2. El campo departamento no depende funcionalmente de toda la clave, slo del cdigo del departamento. 3. El campo aos si que depende funcionalmente de la clave ya que depende del cdigo del empleado y del cdigo del departamento (representa el nmero de aos que cada empleado ha trabajado en cada departamento) Por tanto, al no depender todos los campos de la totalidad de la clave la tabla no est en segunda forma normal, la solucin es la siguiente:
68
Imagen basada en la direccin: http://perso.wanadoo.es/aldomartin1/noreyalre.htm Obtenida en la Fecha: agosto 17 de 2008 hora: 14.36 Adaptacin: Equipo Tcnico P.A.V.
69
Podemos observar que ahora si se encuentras las tres tabla en segunda forma normal, considerando que la tabla A tiene como ndice el campo Cdigo Empleado, la tabla B Cdigo Departamento y la tabla C una clave compuesta por los campos Cdigo Empleado y Cdigo Departamento. Ejemplo Tercera forma normal (3NF) Se dice que una tabla est en tercera forma normal si y solo si los campos de la tabla dependen nicamente de la clave, dicho en otras palabras los campos de las tablas no dependen unos de otros. Tomando como referencia el ejemplo anterior, supongamos que cada alumno slo puede realizar un nico curso a la vez y que deseamos guardar en que aula se imparte el curso. A voz de pronto podemos plantear la siguiente estructura:
Imagen basada en la direccin: http://perso.wanadoo.es/aldomartin1/noreyalre.htm Obtenida en la Fecha: agosto 17 de 2008 hora: 14.36 Adaptacin: Equipo Tcnico P.A.V.
Estudiemos la dependencia de cada campo con respecto a la clave cdigo: Nombre depende directamente del cdigo del alumno. Curso depende de igual modo del cdigo del alumno. El aula, aunque en parte tambin depende del alumno, est ms ligado al curso que el alumno est realizando. Por esta ltima razn se dice que la tabla no est en 3NF. La solucin sera la siguiente:
70
Imagen basada en la direccin: http://perso.wanadoo.es/aldomartin1/noreyalre.htm Obtenida en la Fecha: agosto 17 de 2008 hora: 14.36 Adaptacin: Equipo Tcnico P.A.V.
Una vez conseguida la segunda forma normal, se puede estudiar la cuarta forma normal. Ejemplo Cuarta forma normal (4NF) Una tabla est en cuarta forma normal si y slo si para cualquier combinacin clave - campo no existen valores duplicados. Vemoslo con un ejemplo:
Imagen basada en la direccin: http://perso.wanadoo.es/aldomartin1/noreyalre.htm Obtenida en la Fecha: agosto 17 de 2008 hora: 14.36 Adaptacin: Equipo Tcnico P.A.V.
71
Comparemos ahora la clave (Figura) con el atributo Tamao, podemos observar que Cuadrado Grande est repetido; igual pasa con Crculo Azul, entre otras. Estas repeticiones son las que se deben evitar para tener una tabla en 4NF. La solucin en este caso sera la siguiente:
Imagen basada en la direccin: http://perso.wanadoo.es/aldomartin1/noreyalre.htm Obtenida en la Fecha: agosto 17 de 2008 hora: 14.36 Adaptacin: Equipo Tcnico P.A.V.
ibid, pg, 23 Normalizacin de Bases de Datos. Obtenido en Internet el 23 de Octubre de 2008. Hora: 9.50 pm.. http://www.trucostecnicos.com/trucos/ver.php?id_art=278 Dependencia funcional e independencia, manual de la Universidad de Mlaga. Obtenido en Internet el 23 de Octubre de 2008. Hora: 9.50 pm. http://ftp.medprev.uma.es/libro/node33.htm Normalizacin de base de datos, Prof. Manuel Torres Remon. Obtenido en Internet el 23 de Octubre de 2008. Hora: 9.50 pm. http://www.monografias.com/trabajos5/norbad/norbad.shtml
72
6. Lenguaje Sql
SQL: Lenguaje de consulta estructurado, Permite definir y manipular la base de datos, este lenguaje se compone de: DDL: Lenguaje de definicin de datos
6.3. Clusulas
Las clusulas son condiciones de modificacin utilizadas para definir los datos que desea seleccionar o manipular. Comando FROM WHERE GROUP BY Descripcin Utilizada para especificar la tabla de la cual se van a seleccionar los registros Utilizada para especificar las condiciones que deben reunir los registros que se van a seleccionar Utilizada para separar los registros seleccionados en grupos especficos
73
HAVING ORDER BY
Utilizada para expresar la condicin que debe satisfacer cada grupo Utilizada para ordenar los registros seleccionados de acuerdo con un orden especfico
Descripcin Utilizada para calcular el promedio de los valores de un campo determinado Utilizada para devolver el nmero de registros de la seleccin Utilizada para devolver la suma de todos los valores de un campo determinado Utilizada para devolver el valor ms alto de un campo especificado Utilizada para devolver el valor ms bajo de un campo especificado
74
Unidad 4
Clic en Enterprise Manager Ya con los objetos, vamos a abrir local, y vemos que ya existen varias bases de datos, lo que significa que existen bases de datos para el sistema y otras son modelos de ejemplos para el aprendizaje.
76
Desplegar la opcin data transformation que son los DTS (Transformacin de datos entre sistemas: entre Excel Access, etc transforma un formato de una base de datos en otro sea importacin y exportacin de datos entre diferentes bases de datos. Con un dts coge un archivo plano y lo transforma)
En manager.
77
Dentro del grupo de trabajo tengo un servidor (local, pero pueden existir muchos ms como para cartera, contabilidad, etc) y dentro de los servidores hay varios objetos y dentro de los objetos hay database (bases de datos). Esto suple la limitante que tenia Access.
1.3. Creacin de base de datos desde SQL Server 2005 Management Studio Express
SQL Server Management Studio Express es la herramienta de administracin incluida con SQL Server Express; la herramienta no fue incluida en la primera distribucin de SQL Server Express, y se puede descargar de forma gratuita de la siguiente url: Microsoft SQL Server Management Studio Express - Community Technology Preview (CTP) November 2005: Para crear una base de datos desde SQL Server 2005 Management Studio, expande la lista de bases de datos, de la lista de instancias de SQL Server 2005 registradas, y selecciona la opcin "New database":
78
Debers rellenar el nombre de base de datos, nombres lgico y fsico de los archivos relacionados, y tamao de los ficheros, as como su crecimiento:
79
Y debers establecer el modo de recuperacin de la base de datos; en la versin Express al crear una base de datos por defecto se establece como recuperacin SIMPLE:
Para famializarte con la sintaxis del lenguaje T-SQL, te recomiendo que utilices la opcin de men script (en recuadro verde en las dos imgenes anteriores), que mostrar la instruccin T-SQL correspondiente a las operaciones que has ido configurando en las distintas opciones.
1.4. Consideraciones
Dependiendo de las necesidades a cubrir del sistema de base de datos a desarrollar, debers configurar los archivos de una forma u otra; por ejemplo, en grandes sistemas llegars a configurar niveles de redundancia de discos (RAID), y repartirs la informacin de las tablas en distintos ficheros. Aunque no est soportado en la versin Express, funcionalidades del producto como Particionado de datos, llegan a ser primordiales, y es un factor a considerar desde el momento de diseo del sistema.
80
Por otro lado, para familiarizarte con SQL Server, recomendara entender las opciones de configuracin de base de datos que aparecen en la pestaa opciones, que aunque no son necesarias para comenzar a disear bases de datos SQL Server, si ayudan a comprender un poco el funcionamiento interno de SQL Server (shrink, statistics, etc.):
81
Tradicionalmente el tipo de datos ms usado es el int; el tipo de datos bigint apareci en SQL Server 2000, y es la alternativa al tipo de datos int, cuando los valores son muy grandes. Tipos de datos numricos decimales Decimal, numeric: Tipo de datos numrico con precisin y escala fijas. decimal[ (p[ ,s] )] y numeric[ (p[ ,s] )] Nmeros de precisin y escala fijas. Cuando se utiliza la precisin mxima, los valores permitidos estn comprendidos entre - 10^38 +1 y 10^38 - 1. Numeric equivale funcionalmente a decimal p (precisin) El nmero total mximo de dgitos enteros que se puede almacenar, tanto a la izquierda como a la derecha del separador decimal. La precisin debe ser un valor comprendido entre 1 y la precisin mxima de 38. La precisin predeterminada es 18. s (escala)
82
El nmero mximo de dgitos decimales que se puede almacenar a la derecha del separador decimal. La escala debe ser un valor comprendido entre 0 y p. Para especificar la escala es necesario haber especificado la precisin. Y la relacin entre precisin y almacenamiento es: Precisin Almacenamiento 1-9 10-19 20-28 29-38 5 9 13 17
Float(n), single Tipos de datos numricos y aproximados que se utilizan con datos numricos de coma flotante. Los datos de coma flotante son aproximados; por tanto, no todos los valores del intervalo del tipo de datos se pueden representar con exactitud. Tipo de datos float real Precisin De - 1,79E+308 a -2,23E-308, 0 y de 2,23E308 a 1,79E+308 De - 3,40E + 38 a -1,18E - 38, 0 y de 1,18E 38 a 3,40E + 38 Almacenamiento Depende del valor de n (4 u 8 bytes) 4 bytes
83
Los de longitud variable son varchar(n), y su tamao lo define la longitud de la columna guardada; por ejemplo una columna varchar(250), que guarda el valor "columna variable" el almacenamiento que ocupa es 16 bytes. En caso de desear valores Unicode, debers anteponer al tipo de datos la letra n, siendo los tipos nchar, o nvarchar. La principal diferencia con los tipos de datos no-unicode, es que utilizan el doble de bytes. Por ejemplo, el texto "Tutorial", en una columna varchar(100) ocupara 8 bytes, mientras que siendo unicode ocupara 16 bytes. El tamao de las columnas char, varchar, nchar, nvarchar est limitado a 8000 bytes de almacenamiento; en caso de necesitar mayor longitud puedes usar el tipo de datos varchar(max) o nvarchar(max), que es nuevo en SQL Server 2005.
El tipo de datos smalldatetime almacena las fechas y horas del da con menor precisin que datetime. El Database Engine (Motor de base de datos) almacena los valores smalldatetime como dos enteros de 2 bytes. Los dos primeros bytes almacenan el nmero de das despus del 1 de enero de 1900. Los otros dos, almacenan el nmero de minutos desde medianoche. Los valores datetime se redondean con incrementos de 0,000; 0,003 o 0,007 segundos, como se muestra en la siguiente tabla. Crear tablas Las tablas son objetos que contienen la informacin guardada en la base de datos. Una tabla es una coleccin de columnas; cada columna tendr un tipo de dato y una serie de propiedades. La informacin est guardada fila por fila de forma similar a lo que grficamente representa una hoja Excel: una coleccin de filas por columnas. Disear y crear de tablas Para crear tablas podremos utilizar SQL Server 2005 Management Studio Express, o Visual Basic Express Edition; la forma es muy similar en ambas herramientas, y esta vez tambin utilizaremos SQL Server 2005 Management Studio Express.
84
Expandiendo la base de datos "DemoMSDN", vemos una lista de tipos de objetos entre las que se encuentra "tables"; pulsando el botn derecho del ratn, y selecciona "New Table" como aparecen en la siguiente imagen:
85
En el cuadro marcado en rojo, se aaden cada una de las columnas que forman parte de la tabla a crear; se pone nombre a la columna (debe comenzar por un caracter alfabtico), se selecciona el tipo de datos y precisin (ver leccin anterior para ms informacin), y se establece si la columna aceptar valores nulos o no. En el cuadro de debajo (en color azul), se podrn establecer las propiedades de cada columna de la tabla; se podrn modificar las propiedades vistas anteriormente, si la columna es calculada o no, si tiene propiedad identidad (que veremos ms adelante en el captulo), etc. A la derecha, en el cuadro verde, se podrn establecer propiedades de la tabla; como esquema al que pertenece la tabla, nombre de la tabla, descripcin de la tabla, y grupo de ficheros donde se almacenar la tabla. Adems toda tabla debe tener una columna o conjunto de columnas que identifique de manera nica cada fila de la tabla; para ello selecciona la columna que deseas como clave primaria, y despus de hacer click en el botn derecho del ratn, selecciona "Primary Key" como se muestra en la imagen (tambin se puede hacer sobre el botn marcado en rojo en la imagen):
A continuacin, para grabar los cambios, es decir, para generar la tabla, pulsars sobre la zona en color verde de la siguiente imagen, y seleccionars la opcin Save Clientes (que es el nombre de la tabla):
86
Propiedad identity en las columnas La propiedad identity, establece que una columna numrica genere automticamente valores consecutivos partiendo de una semilla inicial, y un incremento definido. Se suele utilizar como clave primaria, en lugar de establecer claves primarias de columnas o conjuntos de columnas muy grandes. Lo importante de esta propiedad es que "convierte" automticamente el valor de una columna a un valor numrico siguiente al anteriormente insertado. Por ejemplo, si definimos la columna Id de la tabla clientes como identity, a la hora de insertar filas, de esa columna nos "olvidaremos" porque SQL Server lo hace por nosotros. Luego ese valor lo podremos usar como referencia principal (clave primaria), para identificar la fila insertada. Para establecer la propiedad identity, debes seleccionar la columna a la que deseas establecer la propiedad, y hacerlo desde la ventana de propiedades de columna (cuadro rojo de la siguiente imagen):
87
Relacionar tablas Las tablas se relacionan entre s; podra decirse que existe informacin de la fila que est guardada en varias tablas. El nexo de unin de las filas es la clave primaria en la tabla padre, y la clave primaria en la tabla hija. Por ejemplo, una relacin entre clientes y pedidos; en la tabla pedidos existir un identificador de cliente que est asociado a un identificador de cliente en la tabla clientes. La informacin estara repartida como sigue: Tabla Clientes ID Nombre Apellidos ... 1 2 Julia Javier Herrera Alonso ... ...
Tabla Pedidos IDPedido IDCliente Importe ... 1 2 3 4 1 1 1 2 1200 1300 12000 1000 ... ... ... ...
88
Fijate que el cliente 1 (Julia Herrera), tiene los pedidos del 1 al 3, y el cliente 2 el pedido 4. La informacin la "interpretamos" como si las filas de cliente en "embebiera dentro de la tabla pedidos: Nuestra interpretacin de la relacin Pedidos-Clientes IDPedido IDCliente Nombre-Cli Apellido-Cli Importe ... 1 2 3 4 1 1 1 2 Julia Julia Julia Javier Herrera Herrera Herrera Alonso 1200 1300 12000 1000 ... ... ... ...
Visto el esquema, vamos a implementar la tabla Pedidos, definiendo la clave ajena a la tabla clientes. Para ello, despus de haber aadido las columnas que definen la tabla pedidos (ID, IDCliente, y Cantidad), pulsaremos en el botn habilitado para establecer relaciones, o seleccionaremos la opcin "Relationships...":
Aparecer una ventana como la que se muestra a continuacin, en la que expandirs la opcin "Tables and columns specifications", y pulsars en el botn encuadrado con bordes azules, para establecer la relacin entre las tablas:
89
A continuacin, rellenars los combos que aparecen para establecer la relacin entre las tablas clientes y pedidos (columnas ID de clientes, e IDCliente de Pedidos):
Para finalizar pulsa en aceptar, y expandes la opcin "Insert and Update Expecifications", en la que se podr especificar cmo establecer el valor de la columna en caso de que la fila padre haya sido borrada o modificada. En SQL Server 2005, se permiten dos opciones:
90
No Action. Que indica que no actual, que se deja la columna como estaba. Cascade. Que se realiza la misma operacin que se hizo en la fila de la tabla padre. Set Null. Que establece a nulo el valor de las columnas afectadas. Set Default. Que establece la columna a un valor por defecto.
Con un ejemplo se ver ms claro; digamos que se borra el cliente 2 (Javier Alonso); al borrar al cliente, las opciones que acabamos de comentar se activarn, y actuarn segn las hayamos configurado; Veamos cmo se comportara en cada uno de los casos: No Action. El pedido se quedara igual, es decir, el pedido nmero 4 se quedara con referencia al cliente 2, que en realidad ya no existe. Cascade. Como se trataba de una operacin de borrado de clientes, al borrar al cliente, tambin se borraran los pedidos asociados al cliente 2; en nuestro ejemplo, el pedido nmero 4, se eliminara. Set Null. Al realizar el borrado, el pedido nmero 4 se quedara con identificador de cliente a un valor nulo; es decir, el pedido seguira existiendo, pero no estara asociado a ningn cliente. Set Default. Se establecera un valor por defecto; en nuestro caso no hemos definido ningn valor por defecto, pero podramos establecer un valor por defecto para identificar los pedidos cuyos clientes han sido eliminados. Todas estas operaciones que hemos realizado desde las herramientas grficas, tambin se pueden hacer con sentencias T-SQL; de hecho, llegar un momento en que tu experiencia ser tan profunda que te resultar ms sencillo realizar gran parte de las operaciones mediante sentencias T-SQL. En concreto, las palabras clave para definir este tipo de sentencias son ALTER TABLE, CREATE TABLE, CONSTRAINT, FOREIGN KEY, PRIMARY KEY.
91
Otras restricciones (UNIQUE, CHECK, DEFAULT) Adems, existen restricciones que "acotan", limitan, o establecen el valor de una columna en ciertas condiciones. Se llaman restricciones (CONSTRAINTS), y forman parte del estandard SQL-99. Estas restricciones que vamos a ver son: restriccin UNIQUE, restriccin CHECK, y restriccin DEFAULT. Restriccin UNIQUE La restriccin UNIQUE establece que el valor de cada columna de una fila sea nico, Por ejemplo, en la tabla clientes podemos tener una clave primaria como ID, y adems tener una columna NIF que establecemos que sea nica: lo que internamente implementa SQL Server, es que cada vez que se intente hacer una modificacin, o insercin de un valor para esa columna, antes de realizar la operacin, se asegura que el nuevo/modificado valor es nico en el conjunto de filas de la tabla. La restriccin UNIQUE se implementa en T-SQL con la palabra clave UNIQUE; por ejemplo, si queremos que la columna Nombre de la tabla Clientes sea nica, podramos ejecutar el siguiente cdigo T-SQL: ALTER TABLE dbo.Clientes ADD CONSTRAINT RestriccionNombreUnico UNIQUE (Nombre). Restriccin CHECK La restriccin CHECK establece que el valor de la columna se ajuste a ciertas condiciones. Se define para limitar el valor que pueda tener la columna; por ejemplo, se puede definir que la columna Importe sea de un valor positivo mayor que cero. SQL Server, se encargar de "validar" el valor que tendr la columna cuando se intente hacer una modificacin, o insercin de un valor para esa columna. En caso de que el valor no cumpla la restriccin, se generar una excepcin y se cancelar la operacin en curso. La restriccin CHECK se implementa en T-SQL con la palabra clave CHECK; por ejemplo, si queremos que la columna Cantidad de la tabla Pedidos sea un valor mayor que cero, podramos ejecutar el siguiente cdigo T-SQL: ALTER TABLE dbo.Pedidos ADD CONSTRAINT RestriccionCantidad CHECK (Cantidad>0). Restriccin DEFAULT La restriccin DEFAULT establece el valor para una columna cuando no se ha especificado valor en la sentencia de insercin. SQL Server, comprobar si la sentencia de insercin establece un valor para la columna, y en caso negativo, establecer el valor por defecto.
92
La restriccin DEFAULT se implementa en T-SQL con la palabra clave DEFAULT; por ejemplo, si queremos aadir una columna Importe a la tabla Pedidos, y su valor por defecto sea cero, podramos ejecutar el siguiente cdigo T-SQL: ALTER TABLE dbo.Pedidos ADD Importe DEFAULT (0). Creacin de ndices Los ndices son "estructuras" alternativa a la organizacin de los datos en una tabla. El propsito de los ndices es acelerar el acceso a los datos mediante operaciones fsicas ms rpidas y efectivas. Para entender mejor la importancia de un ndice pongamos un ejemplo; imagnate que tienes delante las pginas amarillas, y deseas buscar el telfono de Manuel Salazar que vive en Alicante. Lo que hars ser buscar en ese pesado libro la poblacin Alicante, y guindote por la cabecera de las pginas buscars los apellidos que empiezan por S de Salazar. De esa forma localizars ms rpido el apellido Salazar. Pues bien, enhorabuena, has estado usando un ndice. Pues el objetivo de definir ndices en SQL Server es exactamente para conseguir el mismo objetivo: acceder ms rpido a los datos. Consideraciones para usar ndices Columnas selectivas Columnas afectadas en consultas de rangos: BETWEEN, mayor que, menor que, etc. Columnas accedidas "secuencialmente" Columnas implicadas en JOIN, GROUP BY Acceso muy rpido a filas: lookups
1.6. Ejemplo:
/*Crear ndice nico*/ CREATE UNIQUE INDEX nom_indce ON nom_tabla(campo) /*Crear ndice con duplicado*/ CREATE INDEX nom_indce ON nom_tabla(campo) /*borrar indice*/ DROP INDEX nom_tabla. Nom_indice
Ibid, pg,7 Microsoft SQL Server 2005, Express edition, Obtenido en Internet el 23 de Octubre de 2008. Hora: 9.50 pm. http://www.desarrollaconmsdn.com/msdn/CursosOnline/Curso_SQL_Server/inde x.html
93
2.2. DML.
Clusula SELECT FROM WHERE GROUP BY HAVING ORDER BY Descripcin Utilizada para especificar los campos y datos que se van a mostrar Utilizada para especificar la tabla de la cual se van a seleccionar los registros Utilizada para especificar las condiciones que deben reunir los registros que se van a seleccionar Utilizada para separar los registros seleccionados en grupos especficos Utilizada para expresar la condicin que debe satisfacer cada grupo Utilizada para ordenar los registros seleccionados de acuerdo con un orden especfico
94
<= Menor Igual que >= Mayor Igual que = Igual que BETWEEN Utilizado para especificar un intervalo de valores. LIKE Utilizado en la comparacin de un modelo In Utilizado para especificar registros de una base de datos Durante la primera parte de la leccin se introducirn distintas clusulas que a pesar de estar en la seccin de consultas de seleccin, tambin sern vlidas para sentencias de modificacin; por ejemplo, dentro de una operacin de borrado se podrn usar clusulas JOIN, WHERE, TOP, etc.
95
3. Utilizar Adecuadamente El Sql Para La Implementacin Y Manipulacin De Las Bases De Datos Para Casos Reales Del Medio Que Nos Rodea.
En esta leccin, conocers los conceptos bsicos para poder realizar, consultar y modificar la base de datos utilizando comandos sql. Ejemplo de una base de datos creada por medo de comandos /* Crear la base de datos*/ create database Construccion /* activa la base de datos construccion*/ use Construccion /* Crear tabla oficio mirar el comando abajo*/ create table tblOficio(Tipo_Oficio varchar(30), Bonificacion int, check(Bonificacion >= 30000 and Bonificacion <= 80000), Horas_Semana int, check(Horas_Semana >= 30 and Horas_Semana <= 60), Primary key (Tipo_Oficio)) /*Crear tabla Trabajador*/ create table tblTrabajador(Cedula int, Nombre varchar(50) not null, Valor_Hora int, /*check es el comando que se utiliza para hacer las validaciones*/ check(Valor_Hora >= 7000 and Valor_Hora <= 20000), Tipo_Oficio varchar(30), primary key (Cedula), foreign key (Tipo_Oficio)references tblOficio(Tipo_Oficio)) /*Crear tabla Area*/ create table tblArea(Cod_Area varchar(10), Nom_Area Varchar(30), Estrato int,
96
check(Estrato >= 1 and Estrato <= 7), primary key (Cod_Area)) /*Crear tabla edificio*/ create table tblEdificio(Iden_Edif int, Direccion varchar(30), Tipo varchar (30), Calidad int, check (Calidad >= 1 and Calidad <= 5), Categoria int, check(Categoria >= 1 and Calidad <= 5), Cod_Area varchar (10) primary key (Iden_Edif), foreign key(Cod_Area)references tblArea(Cod_Area)) /*Crear tabla Asignar*/ create table tblAsignar(Cedula int, Iden_Edif int, Fecha_I datetime, Num_Dias int, check (Num_Dias > 0), Primary key(Cedula,Iden_edif), foreign key(Cedula) references tbltrabajador(cedula), foreign key(Iden_edif) references tblEdificio(Iden_Edif))
/* insertamos datos en cada tabla*/ Insert Insert Insert Insert Insert Insert Insert Insert Insert Insert Insert Insert Insert Insert Insert Insert Insert into into into into into into into into into into into into into into into into into tbloficio tbloficio tbloficio tbloficio tbloficio values('Decorador',30000,35) values('Albail',35000,37) values('Carpintero',31000,40) values('Electrico',35000,35) values('Arquitecto',40000,30) values(1235,'Annie',12500,'Electrico') values(1311,'Roberto',15750,'Decorador') values(1412,'Carlos',13700,'Decorador') values(1415,'Lina',12500,'Decorador') values(1418,'Pedro',10000,'Carpintero') values(1520,'Luis',11750,'Electrico') values(1525,'Juan',20000,'Arquitecto') values(2920,'Raul',10000,'Carpintero') values(3001,'Gabriel',15500,'Decorador') values(3231,'Alvaro',17400,'Decorador') values(4446,'Mario',8200,'Albail') values(8520,'Bernardo',8500,'Albail')
tbltrabajador tbltrabajador tbltrabajador tbltrabajador tbltrabajador tbltrabajador tbltrabajador tbltrabajador tbltrabajador tbltrabajador tbltrabajador tbltrabajador
97
Insert Insert Insert Insert Insert Insert Insert Insert Insert Insert Insert Insert Insert Insert Insert Insert Insert Insert Insert Insert Insert Insert Insert Insert Insert Insert Insert
into into into into into into into into into into into into into into into into into into into into into into into into into into into
values('a10','Sur',2) values('a11','Sur',4) values('a12','Norte',3) values('a13','Norte',2) values(111,'calle1213','Oficina',3,2,'a10') values(210,'calle1222','Oficina',4,3,'a10') values(215,'calle1215','Comercio',5,3,'a11') values(312,'calle1313','Oficina',5,2,'a13') values(435,'calle1513','Comercio',2,4,'a13') values(460,'calle1263','Almacen',4,4,'a12') values(520,'calle1223','Residencia',3,5,'a10') values(820,'calle1245','Almacen',3,5,'a10') values(1235,111,'02/02/02',25) values(1235,210,'01/03/02',5) values(1235,520,'02/02/02',25) values(1235,820,'01/03/02',5) values(1235,215,'02/07/02',10) values(1235,312,'02/02/02',10) values(1235,435,'01/02/04',22) values(1235,460,'02/02/05',21) values(1412,210,'02/02/02',22) values(1412,312,'02/02/02',14) values(1418,435,'02/02/02',23) values(1418,460,'02/02/02',10) values(3231,312,'02/02/02',25) values(3231,111,'02/02/02',13) values(4446,111,'02/02/02',18)
tbledificio tbledificio tbledificio tbledificio tbledificio tbledificio tbledificio tbledificio tblasignar tblasignar tblasignar tblasignar tblasignar tblasignar tblasignar tblasignar tblasignar tblasignar tblasignar tblasignar tblasignar tblasignar tblasignar
98
99
Como recomendacin, debers intentar ser lo ms selectivo posible en las columnas a incluir en la clusula SELECT. Por qu razn? Recuerdas la estructura de los ndices? Si deseamos todas las columnas de una tabla, estaremos "forzando" a SQL Server a acceder al nivel de datos de las pginas (recuerda: abajo del todo), y estaremos limitando la efectividad de los ndices diseados en las tablas. El contrapunto de ste comentario es la parte de desarrollo, si generamos cdigo "genrico" que recupera todas las columnas porque las columnas sern necesarias unas veces s y otras no, estaremos penalizando el rendimiento del servidor SQL Server Express pero estaremos ganando tiempo de desarrollo... Para ejecutar una consulta desde SQL Server 2005 Management Studio Express, conectaremos a la base de datos DemoMSDN, desde una de las opciones marcada en la siguiente imagen en recuadro rojo:
A continuacin debers escribir el siguiente texto para rellenar unas cuantas filas en la tabla clientes (veremos luego la sentencia INSERT): INSERT Clientes SELECT 'Julia Herrera', 'Alicante'; INSERT Clientes SELECT 'Javier lvarez', 'Madrid';
100
Para ello, copia el texto en la ventana de texto, y pulsa F5, o el botn Execute para ejecutar la sentencia. Borra el texto de la sentencia, y escribe el siguiente texto: SELECT Id AS Identificador, Nombre FROM Clientes; Ejecuta la instruccin y vers como resultado todas las filas de la tabla Clientes. Fjate que la columna de base de datos Id, ahora parece que se llama Identificador. Esto es un alias de columna; habr ocasiones en las que necesites personalizar el nombre de columna que se muestra. Desde Management Studio, tambin se puede ver la informacin de la tabla de forma similar a como se presenta en Access; para ello, debers seleccionar la tabla que quieres editar, botn derecho del ratn, y elegir la opcin "Open Table" como aparece en la siguiente imagen:
101
Debers tener cuidado con abrir tablas muy grandes, porque el proceso de carga es ms costoso cuanto mayor sea el tamao de la tabla. Sin embargo, en la versin 2005 de las herramientas administrativas, tenemos la posibilidad de cancelar consultas mientras se est realizando la peticin; fjate en el botn marcado en color rojo en la siguiente imagen; pulsando dicho botn se solicita al servidor que se cancele la consulta.
102
Clasula WHERE La clusula WHERE se utiliza para aplicar filtros al conjunto de resultados; para ello existen operadores lgicos AND, OR, NOT, EXISTS con los condicionantes <, >, =, y BETWEEN. No hay lmite para el nmero de condiciones a establecer. El orden de prioridad de los operadores lgicos es NOT, seguido de AND y OR. Se pueden utilizar parntesis para suplantar esta prioridad en una condicin de bsqueda. Cuando se necesita recuperar informacin de ms de una tabla, se suele especificar cules son las filas coincidentes entre ambas tablas (columnas Clave Ajena / Clave Primaria que vimos en la leccin anterior). Para ello, hay una serie de operadores que condicionan dicho filtro. INNER JOIN Especfica que se devuelvan todos los pares de filas coincidentes. Las filas no coincidentes se descartan del resultado. Si no se especifica ningn tipo de combinacin, ste es el tipo por defecto. FULL [ OUTER ] JOIN Especifica que una fila de la tabla de la derecha o de la izquierda, que no cumpla la condicin de combinacin, se incluya en el conjunto de resultados y que las columnas que correspondan a la otra tabla se establezcan en NULL. LEFT [ OUTER ] JOIN Especifica que todas las filas de la tabla izquierda que no cumplan la condicin de combinacin se incluyan en el conjunto de resultados, con las columnas de resultados de la otra tabla establecidas en NULL, adems de todas las filas devueltas por la combinacin interna. RIGHT [OUTER] JOIN Especifica que todas las filas de la tabla derecha que no cumplan la condicin de combinacin se incluyan en el conjunto de resultados, con las columnas de resultados de la otra tabla establecidas en NULL, adems de todas las filas devueltas por la combinacin interna. ON <search_condition> Especifica la condicin en la que se basa la combinacin; se puede referenciar ms de una columna, por ejemplo, tablas con claves primarias compuestas. Un ejemplo de consulta podra ser el siguiente: SELECT sh.SalesOrderID, sh.OrderDate, sh.CustomerID, sd.OrderQty, sd.ProductID, sd.UnitPrice FROM Sales.SalesOrderHeader sh INNER JOIN Sales.SalesOrderDetail sd ON sh.SalesOrderID = sd.SalesOrderID Clasula GROUP BY El lenguaje T-SQL permite devolver la informacin agregada usando la clusula GROUP BY; los condicionantes de la agregacin se colocan despus de la clusula. Existen las siguientes funciones de agregado: AVG, MIN, CHECKSUM, SUM, CHECKSUM_AGG, STDEV, COUNT, STDEVP, COUNT_BIG, VAR,
103
GROUPING, VARP, MAX. Por ejemplo, la siguiente sentencia T-SQL devolvera la cantidad de productos pedidos por cliente en la base de datos MSDN: SELECT Id, COUNT(*) AS Cantidad FROM Pedidos GROUP BY Id Clasula having: Selecciona o filtra grupos Por ejemplo, la siguiente sentencia T-SQL devolvera la cantidad de productos pedidos por cliente mayor que 5 en la base de datos MSDN: SELECT Id, COUNT(*) AS Cantidad FROM Pedidos GROUP BY Id Having COUNT (*)>5 Clusula TOP (n) [PERCENT] Cuando se necesita recuperar los n primeros elementos que cumplen una condicin, se puede utilizar la funcin TOP. La funcin TOP tiene un argumento que puede representar un nmero o un porcentaje. La nica forma de garantizar que la sentencia TOP devuelva los n primeros elementos que cumplen una condicin es usando la clusula ORDER BY. Adems, SQL Server 2005, incorpora nuevas funciones de RANKING que devuelven posiciones relativas de las filas; las funciones son RANK, DENSERANK, TILE , y NTILE. Aprovechando la consulta anterior, un ejemplo de CTE podra ser el siguiente: WITH PedidosAgrupados (Id, Cantidad) AS ( SELECT Id, COUNT(*) AS Cantidad FROM Pedidos GROUP BY Id ) SELECT Id, Nombre FROM Clientes INNER JOIN PedidosAgrupados ON Clientes.Id = PedidosAgrupados.I
104
105
SELECT Pedidos.Id, SUM (LineasPedido.Importe) AS SumaImporte FROM Pedidos JOIN LineasPedido ON Pedidos.Id = LineasPedido.Id Pedidos.Fecha BETWEEN '20050101' AND '20060101' GROUP BY Pedidos.Id ) t2 ON t.Id = t2.Id WHERE Fecha BETWEEN '20050101' AND '20060101'
Para leer esta consulta es mejor que empieces por el final; mira la consulta que representa el alias t2: obtiene los en importe total de cada pedido del ao 2005. A continuacin, ese resultado se va a cruzar (JOIN) con la tabla TablaAcumulados para actualizar la columna Acumulado pedidos, reemplazndolo por el valor de SumaImporte de la consulta anterior. Antes de aplicarlo, deber acotar la actualizacin a los pedidos realizados en el ao 2005.
106
/* Hallar el nombre del trabajador que el nombre tenga la cadena ar en el nombre*/ select * from tbltrabajador where nombre like '%ar%' /*Hallar la cantidad de trabajadores por cada oficio*/ select tipo_oficio,count(*)as total from tbltrabajador group by tipo_oficio /*hallar el total de dias asignado a cada trabajador si este es mayor que 20*/ SELECT cedula, SUM(num_dias) AS total FROM tblasignar GROUP BY cedula HAVING (SUM(num_dias) > 20) /*Hallar los nombres de los trabajadores y el numero de dias asignado si es mayor que 15*/ SELECT tbltrabajador.nombre, tblasignar.num_dias FROM tbltrabajador INNER JOIN tblasignar ON tbltrabajador.cedula =tblasignar.cedula WHERE tblasignar.num_dias > 15 /*Hallar el tipo la direccion y la fecha que se inicio*/ SELECT tbledificio.tipo,tbledificio.direccion,asignacion.fecha_inicio FROM tblasignar INNER JOIN tbledificio ON asignacion.iden_edif = tbledificio.iden_edif WHERE tbledificio.tipo = 'oficina' /*hallar el nombre de los trabajadores y la bonificacin si esta es mayor que 15000*/ Select tbltrabajador.nombre from tbltrabajador inner join tbloficio on tbltrabajador.tipo_oficio=tbloficio.tipo_oficio where oficio.bonificacion>15000 /*Hallar la cantidad de trabajadores por oficio con la bonificacin correspondiente*/ select tbltrabajador.tipo_oficio,tbloficio.bonificacion,count(*)as total from tbltrabajador inner join tbloficio on tbltrabajador.tipo_oficio=tbloficio.tipo_oficio group by tbltrabajador.tipo_oficio,tbloficio.bonificacion /*Hallar la cantidad de trabajadores por oficio con la bonificacion correspondinte Mostrar si la cantidad de trabajadores es mayor que 2*/ select tbltrabajador.tipo_oficio,tbloficio.bonificacion,count(*)as total
107
from tbltrabajador inner join tbloficio on tbltrabajador.tipo_oficio=tbloficio.tipo_oficio group by tbltrabajador.tipo_oficio,tbloficio.bonificacion having count(*)>2 /*Hallar los trabajadores que son decoradores o trabajan en los edificios 435*/ select cedula from tbltrabajador where tipo_oficio in('decorador') union all (select cedula from tblasignar where id_edificio in ('435')) /*Hallar el nmero de trabajadores por oficio y mostrar si nmero de trabajadores por oficio est entre 1 y 2*/ select tbltrabajador.tipo_oficio,count(*) as numero_dias from tbloficio inner join tbltrabajador on Tbloficio.tipo_oficio = Tbltrabajador.tipo_oficio group by Tbltrabajador.tipo_oficio having count(*) between 1 and 2 /*Hallar el nombre y el total de dias asignado a cada trabajador mostrar si el total de das Es mayor que el mnimo valor de num_horas*/ SELECT tblasignar.cedula,tbltrabajador.nombre,sum(num_dias) FROM tblasignar inner join Tbltrabajador on tblasignar.cedula=Tbltrabajador.cedula GROUP BY tblasignar.cedula,tbltrabajador.nombre having sum(num_dias)> (select min(num_horas) from tbloficio) /*Consulta tres tablas*/ SELECT tbltrabajador.*, tbledificio.* FROM tbltrabajador INNER JOIN asignacion ON tbltrabajador.cedula = tblasignar.cedula INNER JOIN tbledificio ON tblasignar.iden_edif =tbledificio.iden_edif WHERE tbltrabajador.valor_hora > 10000 /*Consulta con dos tablas y having*/ SELECT tblasignar.iden_edif, tbledificio.direccion, tbledificio.tipo,tbledificio.calidad, SUM(dbo.asignacion.num_dias) AS total FROM tblasignar INNER JOIN tbledificio ON tblasignar.iden_edif = tbledificio.iden_edif
108
GROUP BY tblasignar.iden_edif, tbledificio.direccion, dtbledificio.tipo, tbledificio.calidad HAVING (SUM(tbl.asignacion.num_dias) BETWEEN 20 AND 50) /*Hallar el nombre los nombres de los trabajadores que tienen un valor hora mayor que el Valor hora de Nelson fernando o Gabriel*/ SELECT nombre FROM tbltrabajador where valor_hora>all (select valor_hora from tbltrabajador where nombre in('nelson','fernando','gabriel')) /*Mostrar los nombres de los trabajadores que tienen un nmero e das asignado mayor que 20*/ SELECT nombre FROM tbltrabajador WHERE (NOT EXISTS (SELECT * FROM tblasignar WHERE tbltrabajador.cedula = tblasignar.cedula AND num_dias > 20)) /*Hallar el nombre y valor hora de los trabajadores asignados a algn edificio*/ SELECT nombre,valor_hora FROM tbltrabajador where cedula in (select cedula from tblasignar) /*hallar el nombre y valor hora de los trabajadores que no estn asignados a ningn edificio*/ SELECT nombre,valor_hora FROM tbltrabajador where cedula not in (select cedula from tblasignar) /*TODAS LAS CLAUSULAS Hallar los nombres de los trabajadores que tienen una bonificacin mayor que 30000 y tienen ms de un edificio asignado ordenado por nombre.*/ SELECT tbltrabajador.nombre,count(*) as total,tbloficio.bonificacion from tbloficio inner join tbltrabajador on tbloficio.tipo_oficio=tbltrabajador.tipo_oficio inner join tblasignar on tbltrabajador.cedula=tblasignar.cedula where tbloficio.bonificacion>30000
109
group by tblasignar.cedula,tbltrabajador.nombre,tbloficio.bonificacion having count(*)>1 order by nombre /*Hallar */ SELECT FROM WHERE los nombres de los trabajadores que no se han asignado a ningn edificio nombre tbltrabajador (NOT EXISTS (SELECT FROM WHERE
/*Hallar los datos de los trabajadores y los datos de los edificios en que trabajan si el valor hora es mayor que 10000*/ select tbltrabajador.*,tbledificio.* from tbltrabajador inner join tblasignar on tbltrabajador.cedula=tblasignar.cedula inner join tbledificio on tblasignar.iden_edif=tbledificio.iden_edif where tbltrabajador.valor_hora>10000 /*Subconsultas hallar los nombres de los trabajadores que ganan ms que fernando o raul*/ select nombre,valor_hora from tbltrabajador where valor_hora>all (select valor_hora from tbltrabajador where nombre in('fernando','raul')) /*Consulta para los trabajadores que tienen todos los edificios asignados.*/ SELECT FROM WHERE * .tbltrabajador (cedula IN (SELECT cedula FROM tblasignar GROUP BY tblasignar.cedula HAVING COUNT(*) = (SELECT COUNT(*) FROM tbledificio))) Hallar los datos de los trabajadores y los datos de los edificios en que trabajan si el valor hora es mayor que 10000 select tbltrabajador.*,tbledificio.*
110
from tbltrabajador inner join tblasignar on tbltrabajador.cedula=tblasignar.cedula inner join tbledificio on tblasignar.iden_edif=tbledificio.iden_edif where tbltrabajador.valor_hora>10000
ibid, pg, 7
111
4. Procedimientos almacenados
Los procedimientos almacenados (stored procedures) no son ms que una sucesion ordenada de instrucciones T-SQL que pueden recibir y devolver parametros provistos por el usuario y se pueden guardar en el servidor con un nombre, para luego poder invocarlos y ejecutarlos. En esta nueva versin (2005), tambien es posible utiliza procedimientos almacenados usando CLR. Un procedimiento almacenado CLR es una referencia a un mtodo de un ensamble de .NET Framework que puede aceptar y devolver parmetros suministrados por el usuario.
112
113
'y escribimos el nombre del stored procedure a invocar myComm.CommandText = "Clientes_GetAll" 'Creamos un nuevo DataAdapter con nuestro comando. Dim myDA As SqlClient.SqlDataAdapter = New SqlClient.SqlDataAdapter(myComm) 'Creamos un dataset para soportar los datos devueltos por el stored procedure Dim ClientesDs As DataSet = New DataSet 'Pedimos al Data Adapter que llene el dataset (Esto llama a nuestro comando) myDA.Fill(ClientesDs) 'Y lo mostramos por pantalla For Each row As Data.DataRow In ClientesDs.Tables(0).Rows Console.WriteLine(row!Id.ToString() + " " + row!Nombre) Next
114
'Creamos una nueva conexion. Dim myConn As SqlClient.SqlConnection = New SqlClient.SqlConnection("Data Source=(localhost)\SQLEXPRESS;Initial Catalog=DemoMSDN;Integrated Security=True") 'Creamos un nuevo comando Dim myComm As SqlClient.SqlCommand = New SqlClient.SqlCommand() 'Le asignamos la conexion. myComm.Connection = myConn 'especificamos que el comando es un stored procedure myComm.CommandType = CommandType.StoredProcedure 'y escribimos el nombre del stored procedure a invocar myComm.CommandText = "Clientes_GetOne" 'Creamos un nuevo parmetro Dim myParam As SqlClient.SqlParameter = New SqlClient.SqlParameter() myParam.ParameterName = "@Id" myParam.SqlDbType = SqlDbType.Int myParam.Value = 4 'Y se lo agregamos a la coleccin de parametros del comando myComm.Parameters.Add(myParam) 'Creamos un nuevo DataAdapter con nuestro comando. Dim myDA As SqlClient.SqlDataAdapter = New SqlClient.SqlDataAdapter(myComm) 'Creamos un dataset para soportar los datos devueltos por el stored procedure Dim ClientesDs As DataSet = New DataSet 'Pedimos al Data Adapter que llene el dataset (Esto llama a nuestro comando) myDA.Fill(ClientesDs) 'Y lo mostramos por pantalla For Each row As Data.DataRow In ClientesDs.Tables(0).Rows Console.WriteLine(row!Id.ToString() + " " + row!Nombre) Next Los TRIGGERS o disparadores son muy similares en su concepto a los procedimientos almacenados, es decir son piezas de cdigo Transact-SQL, sin embargo son radicalmente distintas en la ejecucin, mientras un procedimiento almacenado se ejecuta por la peticin de un cliente, un TRIGGER responde a un evento, ya sea de manipulacin de datos como los TRIGGERS DML o por la manipulacin de esquemas como los TRIGGERS DDL.
115
Los TRIGGERS son un tipo de objetos muy especiales en SQL Server 2005, ya que realmente son muy parecidos a lo que las rutinas de atencin a eventos en cdigo en cualquier lenguaje de programacin como por ejemplo .NET. Como objetos especiales que son tambin reciben parmetros de una forma muy especial, en forma de unas tablas virtuales, llamadas inserted y deleted. Estas tablas especiales (inserted y deleted) contienen la informacin de los registros que se han eliminado o insertado, con exactamente las mismas columnas que la tabla base que est sufriendo esa modificacin. Las tablas inserted y deleted estarn o no rellenas de datos en funcin de cul sea el tipo de operacin que ha dado lugar a su ejecucin. Por ejemplo, un TRIGGER que se dispare por la insercin en una tabla tendr tantos registros en la tabla virtual inserted como registros estn siendo insertados y cero registros en la tabla deleted; un TRIGGER que se dispare por la eliminacin de registros en una tabla tendr cero registros en la tabla inserted y tantos registros en la tabla deleted como registros estn siendo eliminados, y un TRIGGER que responda a una operacin de update, tendr el mismo nmero de registros en la tabla inserted y en la tabla deleted que adems coincidir con el nmero de registros actualizados en la tabla que da lugar al evento. Uno de los errores ms comunes cuando se desarrollan TRIGGERS est relacionado con esta arquitectura que acabamos de describir, un TRIGGER no se dispara una vez para cada fila modificada, sino que se dispara una sola vez por cada operacin, independientemente del nmero de registros afectados por la operacin, y todos los registros afectados estn contenidos en las tablas inserted y deleted dentro del TRIGGER. Muchos desarrolladores parten de la premisa de que las tablas inserted y deleted contendrn solamente un registro a lo sumo y como acabamos de explicar esto no es cierto. El segundo error ms comn tiene que ver este primero y con el rendimiento, muchos desarrolladores para solventar este problema crean cursores dentro de los TRIGGERS, los cursores como tal estn fuera del alcance de este captulo, pero en general un cursor dentro de un TRIGGER es casi un garanta de obtener problemas de rendimiento, por lo que deberamos intentar evitarlos lo ms posible. Los TRIGGERS son usados para aadir lgica o restricciones a la base de datos, por ejemplo pueden ser usados para establecer reglas de integridad con bases de datos externas (no grabar un pedido en la base de datos de pedidos si el cliente indicado no est dado de alta en la base de datos de pedidos por ejemplo); tambin son usados para mantener tablas de acumulados como por ejemplo la tabla que mantienen el stock de una determinada compaa o para guardar el acumulado de ventas en la ficha de un cliente. DML es el acrnimo de Data Manipulation Language (Lenguaje de Manipulacin de datos), los TRIGGERS DML son como indica su nombre aquellos que responden a operaciones de manipulacin de datos, tales como sentencias INSERT, UPDATE o DELETE mientras que DDL es el acrnimo de Data Definition Language (Lenguaje de definicin de datos) los TRIGGERS DDL se dispararn por operaciones que impliquen cambios en los esquemas (en la definicin de los objetos).
116
117
118
Aunque hay muchos ms, relacionados con estadsticas, sinnimos, usuarios (no confundir con logins que son a nivel de servidor), procedimientos, etc. Puede consultar los libros en pantalla de SQL Server 2005 para obtener una relacin completa de todos los eventos a los que puede responder. Los TRIGGERS DDL tiene una particularidad adicional sobre los de tipo DML y es que no tiene mucho sentido las tablas inserted y deleted ya que el tipo de operaciones que disparan los triggers son radicalmente diferentes. Sin embargo, como ellos necesitan recibir informacin acerca del evento que ha ocasionado que el trigger se dispare, para ello existe la funcin EVENTDATA(), esta funcin devuelve un valor XML que responde al siguiente esquema: <EVENT_INSTANCE> <EventType>type</EventType> <PostTime>date-time</PostTime> <SPID>spid</ SPID> <ServerName>name</ServerName> <LoginName>name</LoginName> <UserName>name</UserName> <DatabaseName>name</DatabaseName> <SchemaName>name</SchemaName> <ObjectName>name</ObjectName> <ObjectType>type</ObjectType> <TSQLCommand>command</TSQLCommand> </EVENT_INSTANCE>
119
Utilizando las funciones XML para manipular esa funcin podemos obtener toda la informacin necesaria para crear TRIGGERS que garanticen que en nuestras bases de datos se siguen los estndares marcados. Supongamos que uno de esos estndares indica que todas las tablas deben estar documentadas, su propsito, la fecha de creacin etc en una tabla llamada TablasDocumentadas, podramos crear un TRIGGER DDL a nivel de base de datos que nos garantizase que antes de crear la tabla, sta , ya ha sido documentada. El cdigo que lo hace es el siguiente: CREATE TRIGGER TablasDocumentadas ON DATABASE FOR CREATE_TABLE AS BEGIN DECLARE @TabName Sysname SELECT @TabName=EventData().value((/EVENT_INSTANCE/ObjectName)[1],sysname) IF NOT EXISTS(SELECT * FROM TablasDocumentadas WHERE TableName=@TabName) BEGIN ROLLBACK -- Deshacemos la transaccin impidiendo que se actualize RAISERROR (No se pueden crear tablas indocumentadas en nuestro sistema,16,1) END END Si lo miramos en detalle tan solo estamos obteniendo el nombre del objeto que se ha insertado (en nuestro caso la tabla que se acaba de crear) y estamos comprobando que existe un registro con ese nombre en la tabla TablasDocumentadas, sin embargo este procedimiento podra tener mucha ms complejidad y garantizar no solamente que existe sino que los datos que contiene esa tabla son de cierta calidad.
4.9. Funciones
Una herramienta adicional dentro de la programacin de base de datos son las funciones definidas por el usuario. Estas funciones, que pueden ser de tres tipos, reciben parmetros como los procedimientos almacenados, y adems pueden ser usadas como valores escalares o como tablas dentro de clusulas from, lo que las hace tremendamente tiles en determinadas circunstancias.
120
programacin una experiencia ms agradable. Un ejemplo de funcin escalar podra ser la siguiente: CREATE FUNCTION Rangos (@id tinyint) RETURNS nvarchar(10) AS BEGIN DECLARE @Valor nvarchar(10) SELECT @Valor = CASE WHEN @id<20 THEN '1-19' WHEN @id>=20 AND @id<40 THEN '20-39' WHEN @id>=40 AND @id<60 THEN '40-59' WHEN @id>=60 AND @id<80 THEN '60-79' WHEN @id>=80 AND @id<100 THEN '80-99' ELSE '>100' END RETURN @Valor END Esta funcin devolver un string que contiene el rango al que pertenece el nmero que recibe como parmetro. Desde las funciones se puede acceder a tablas tambin, pero siempre cuando se hace hay que ser muy cuidadoso para no implementar lo que se llaman lookups dentro de las udfs por que eso puede ser muy peligroso para el rendimiento ya que por cada fila devuelta se ejecutar una sentencia sin que el optimizador de consultas pueda hacer nada para mejorar la forma de ejecutarse.
121
Esta funcin puede ser usada en sentencias ms complejas, un ejemplo de uso podra ser el siguiente: SELECT * FROM ClientesPorTipo(1) Cl INNER JOIN Facturas F ON CL.idcliente=F.IdCliente De esta forma podemos parametrizar consultas que vamos a usar en clusulas FROM, de esta forma escribir cdigo T-SQL resulta ms sencillo y el resultado es ms comprensible. Si adems combinamos esta funcionalidad con las nuevas funciones APPLY podemos obtener funcionalidades an ms interesantes, ya que podemos conseguir que las funciones en lnea o de tipo tabla reciban los parmetros desde los valores de otra tabla, la sintaxis sera algo as: SELECT * FROM ClientesSeleccionados C CROSS APPLY ClientesPorTipo(C.tipo) Esta consulta devolver todos los registros de la tabla Clientes Seleccionados y los registros de la vista ClientesPortipo para cada Tipo de la tabla primaria.
122
Unidad 5
de
la
tecnologa
orientada
A pesar de que las ventajas de la programacin orientada a objetos superan a las limitaciones de la misma, podemos encontrar algunas caractersticas no deseables en sta. Limitaciones para el programador. No obstante que la tecnologa orientada a objetos no es nueva, un gran porcentaje de programadores no estn familiarizados con los conceptos de dicha tecnologa. En otras palabras, la lgica de la programacin estructurada sigue siendo predominante en la mayora de los desarrolladores de software, despus de haber revisado de forma breve los principios de la programacin orientada a objetos, nos es claro que en sta se requiere una lgica de pensamiento totalmente diferente a la lgica comnmente utilizada para la programacin estructurada.
124
Tamao excesivo en las aplicaciones resultantes. La gran mayora de los equipos de cmputo cuentan con capacidades tanto de almacenamiento como de memoria lo suficientemente buena como para ejecutar la mayora de las aplicaciones que puedan desarrollarse con la tecnologa orientada a objetos, sin embargo existen casos en los que lo anterior no se cumple. Una de las desventajas de la programacin orientada a objetos es que cuando se heredan clases a partir de clases existentes se heredan de forma implcita todos los miembros de dicha clase aun cuando no todos se necesiten, lo que produce aplicaciones muy grandes que no siempre encajan en los sistemas con los que se disponga. Velocidad de ejecucin. Esto tiene que ver, en cierto modo, con el punto anterior, una aplicacin innecesariamente pesada en muchas ocasiones es ms lenta de ejecutar que una aplicacin conformada nicamente por los mdulos necesarios.
125
clase persona. Un objeto instanciado de esta clase podra ser Juan Prez, de sexo masculino y de 35 aos de edad, quin se encuentra caminando. Estos atributos son conocidos formalmente en programacin orientada a objetos como variables de instancia por que contienen el estado de un objeto particular en un momento dado, en este caso Juan Prez. As mismo, los comportamientos son llamados mtodos de instancia porque nos muestran el comportamiento de un objeto particular de la clase.
1.3.2. Modularidad
Dentro de la programacin orientada a objetos, la modularidad juega un papel muy importante. Una vez que hemos representado una situacin del mundo real en un programa, tenemos regularmente como resultado, un conjunto de objetos de software que constituyen la aplicacin. La modularidad, nos permite poder modificar las caractersticas de la clase que definen a un objeto, de forma independiente de las dems clases en la aplicacin. En otras palabras, si nuestra aplicacin puede dividirse en mdulos separados, normalmente clases, y estos mdulos pueden compilarse y modificarse sin afectar a los dems, entonces dicha aplicacin ha sido implementada en un lenguaje de programacin que soporta la modularidad. La tecnologa orientada a objetos nos brinda esta propiedad para hacer uso de ella en el software que desarrollemos.
1.3.3. Encapsulamiento
Tambin referido como ocultamiento de la informacin, el encapsulamiento es la propiedad de la orientacin a objetos que nos permite asegurar que la informacin de un objeto le es desconocida a los dems objetos en la aplicacin. Es muy frecuente referirse a los objetos de software como cajas negras, esto se debe principalmente a que no necesitamos, dentro de la programacin orientada a objetos, saber cmo esta instrumentado un objeto para que este interacte con los dems objetos. Generalmente una clase se define en dos partes, una interfaz por medio de la cual los objetos que son instanciados de la misma interactan con los dems objetos en la aplicacin, y la implementacin de los miembros de dicha clase (mtodos y atributos). Retomando dos de los ejemplos anteriores, supongamos que deseamos realizar una aplicacin en donde deben interactuar el objeto Mercedes Benz, instancia de la clase automvil y el objeto Juan Prez, instancia de la clase Persona. Ambos objetos pueden ser vistos como cajas negras las cuales se comunican por medio de una interfaz. El objeto Mercedes no sabe como esta implementado el objeto Juan Prez y viceversa. Concretamente, el encapsulamiento permite a un objeto ocultar informacin al mundo exterior, o bien restringir el acceso a la misma. Una aplicacin orientada a objetos est constituida, como mencionamos anteriormente, por mdulos. Estos mdulos se implementan mediante clases, las cuales representan, generalmente, abstracciones de objetos del mundo real. Es por medio del encapsulamiento que podemos definir los atributos y los mtodos de una clase para que los objetos que se instancian de sta trabajen como unidades independientes de los dems objetos con los que interactan. En otras palabras, con el encapsulamiento ganamos modularidad, y adems protegemos a los objetos de ser manipulados de forma inadecuada por objetos externos.
126
1.4. Polimorfismo
Muchas veces es necesario que un mismo comportamiento o accin se realice de diferentes maneras, por ejemplo, supongamos que deseamos implementar a la clase mamferos, supongamos tambin que uno de los mtodos que deseamos implementar para esta clase, es el que permita a tales mamferos desplazarse de forma natural. Nos encontraremos entonces con que para algunos mamferos el desplazamiento se realizar por medio de caminar, como es en el caso de las personas, para otros el desplazamiento natural ser nadar, como en el caso de los delfines e inclusive para otros, el desplazamiento se lograr por medio de volar, como sucede con los murcilagos. En otras palabras, un mismo comportamiento, en este caso el desplazamiento, puede tomar diferentes formas. Dentro de la programacin orientada a objetos puede modelarse esta situacin del mundo real, en objetos de software, gracias al polimorfismo. El polimorfismo es la propiedad por la cual una entidad puede tomar diferentes formas. Generalmente est entidad es una clase, y la forma en que se consigue que tome diferentes formas es por medio de nombrar a los mtodos de dicha clase con un mismo nombre pero con diferentes implementaciones.
Para complementar este tema ver presentacin. http://download.microsoft.com/download/F/A/C/FAC370F4-7D37-4899-A461D27ABC99C615/DCE0_ProgramacionOO_C%23_VBNET.ppt Obtenido en Internet el 16 de noviembre de 2008. Hora: 9.50 am.
127
Joyanes, Programacin orientada a objetos, pg. 18 Mc Grow Hill 1998. pg. 5 pg. 5 Joyanes A. Programacin Orientada a Objetos, pgina 28. Mc Grow Hill, 1998 pg. 7 pg. 7 pg. 7
128
Representacin visual de una clase en UML Imagen extrada de la direccin: http://docs.kde.org/stable/es/kdesdk/umbrello/uml-elements.html Obtenida en la Fecha: Noviembre 16 de 2008 hora: 9.30 am
2.1.2. Atributos
En UML, los atributos se muestran al menos con su nombre, y tambin pueden mostrar su tipo, valor inicial y otras propiedades. Los atributos tambin pueden ser mostrados visualmente: + Indica atributos pblicos # Indica atributos protegidos
129
2.1.3. Operaciones
Las operaciones (mtodos) tambin se muestran al menos con su nombre, y pueden mostrar sus parmetros y valores de retorno. Las operaciones, al igual que los atributos, se pueden mostrar visualmente: + Indica operaciones pblicas # Indica operaciones protegidas - Indica operaciones privadas
2.1.4. Plantillas
Las clases pueden tener plantillas, un valor usado para una clase no especificada o un tipo. El tipo de plantilla se especifica cuando se inicia una clase (es decir cuando se crea un objeto). Las plantillas existen en C++ y se introducirn en Java 1.5 con el nombre de Genricos. Ejemplo de clase
130
La herencia es uno de los conceptos fundamentales de la programacin orientada a objetos, en la que una clase recoge todos los atributos y operaciones de la clase de la que es heredera, y puede alterar/modificar algunos de ellos, as como aadir ms atributos y operaciones propias. En UML, una asociacin de generalizacin entre dos clases, coloca a estas en una jerarqua que representa el concepto de herencia de una clase derivada de la clase base. En UML, las generalizaciones se representan por medio de una lnea que conecta las dos clases, con una flecha en el lado de la clase base.
Representacin visual de una generalizacin en UML Imagen extrada de la direccin: http://docs.kde.org/stable/es/kdesdk/umbrello/uml-elements.html Obtenida en la Fecha: Noviembre 16 de 2008 hora: 9.30 am
2.1.6. Asociaciones
Una asociacin representa una relacin entre clases, y aporta la semntica comn y la estructura de muchos tipos de conexiones entre objetos. Las asociaciones son los mecanismos que permite a los objetos comunicarse entre s. Describe la conexin entre diferentes clases (la conexin entre los objetos reales se denomina conexin de objetos o enlace). Las asociaciones pueden tener una papel que especifica el propsito de la asociacin y pueden ser unidireccionales o bidireccionales (indicando si los dos objetos participantes en la relacin pueden intercambiar mensajes entre s, o es nicamente uno de ellos el que recibe informacin del otro). Cada extremo de la asociacin tambin tiene un valor de multiplicidad, que indica cuntos objetos de ese lado de la asociacin estn relacionados con un objeto del extremo contrario. En UML, las asociaciones se representan por medio de lneas que conectan las clases participantes en la relacin, y tambin pueden mostrar el papel y la multiplicidad de cada uno de los participantes. La multiplicidad se muestra como un rango [mn...mx] de valores no negativos, con un asterisco (*) representando el infinito en el lado mximo.
131
Representacin visual de una asociacin en UML Imagen extrada de la direccin: http://docs.kde.org/stable/es/kdesdk/umbrello/uml-elements.html Obtenida en la Fecha: Noviembre 16 de 2008 hora: 9.30 am
2.1.7. Agregacin
Las acumulaciones son tipos especiales de asociaciones en las que las dos clases participantes no tienen un estado igual, pero constituyen una relacin completa. Una acumulacin describe cmo se compone la clase que asume el rol completo de otras clases que se encargan de las partes. En las acumulaciones, la clase que acta como completa, tiene una multiplicidad de uno. En UML, las agregaciones estn representadas por una asociacin que muestra un rombo en uno de los lados de la clase completa.
Representacin visual de una relacin de acumulacin en UML Imagen extrada de la direccin: http://docs.kde.org/stable/es/kdesdk/umbrello/uml-elements.html Obtenida en la Fecha: Noviembre 16 de 2008 hora: 9.30 am
2.1.8. Composicin
Las composiciones son asociaciones que representan acumulaciones muy fuertes. Esto significa que las composiciones tambin forman relaciones completas, pero dichas relaciones son tan fuertes que las partes no pueden existir por s mismas. nicamente existen como parte del conjunto, y si este es destruido las partes tambin lo son. En UML, las composiciones estn representadas por un rombo slido al lado del conjunto.
Imagen extrada de la direccin: http://docs.kde.org/stable/es/kdesdk/umbrello/uml-elements.html Obtenida en la Fecha: Noviembre 16 de 2008 hora: 9.30 am
132
Ejemplo 1
Ejemplo 2
Nos muestra una vista de la aplicacin en un determinado momento, es decir, en un instante en que el sistema est detenido. Las clases son la plantilla de los objetos, y aqu podemos ver representados estos con sus atributos o caractersticas y su comportamiento o mtodos, as como la relacin entre ellas.
133
Imagen extrada de la direccin: http://www.elguille.info/colabora/puntoNET/canchala_UML.htm Obtenida en la Fecha: Noviembre 16 de 2008 hora: 9.30 am
134
Ejemplo: 3 Una empresa desea crear una base de datos para el manejo de sus ventas Este maneja las siguientes condiciones: Del personal involucrado en las ventas se conoce la cedula el nombre y la direccin. Los empleados y los vendedores pueden ser clientes ya que estos pueden comprar los productos de la empresa con la que trabajan teniendo un descuento especial por ser de la empresa. De los empleados se tiene un salario, horario y retencin. De los vendedores conocemos la comisin y rea de venta. De los clientes tambin se tiene un crdito mximo. De los proveedores se tiene el tiempo de servicio. Una factura para un cliente atendida por un empleado debe tener un vendedor y varios productos. Los proveedores despachan materiales utilizados para los productos siendo posible que un material sea despachado por varios proveedores. Completar los dems supuestos semnticos que hacen falta para construir el modelo orientado a objetos o el diagrama de clases. Ubicando las clases, subclases, objetos, herencia simple y herencia mltiple si la hay. Solucin en un diagrama de clases
135
Para complementar este tema de cmo construir un diagrama de clases visitar esta direccin. http://cesar.crbyte.com/apuntes/2_tecnicas_modelado.pdf Obtenida en la Fecha: Noviembre 16 de 2008 hora: 9.30 am
Colabora.net, Ejemplo sencillo sobre el modelado de un proyecto, Obtenida en la Fecha: Noviembre 16 de 2008 hora: 9.30 am http://www.elguille.info/colabora/puntoNET/canchala_UML.htm Ibid pg. 10 Ibid pg. 10 Ibid pg. 10 Ibid pg. 10 8 http://es.wikipedia.org/wiki/Diagrama_de_clases, Obtenido en Internet el 16 de Noviembre de 2008. Hora: 9.50 am. Elementos de UM, Obtenido en Internet el 16 de Noviembre de 2008. Hora: 9.50 am. http://docs.kde.org/stable/es/kdesdk/umbrello/uml-elements.html,
136
Glosario
GLOSARIO
Actualizacin en cascada: actualizacin automtica de las entidades, en una relacin externa, cuando se modifica la correspondiente entidad de la relacin principal. ADO: Objetos de acceso a datos.
lgicamente y localizadas sobre una red de computadores. Base de datos orientadas a objetos: Almacena datos y relaciones con el paradigma de la orientacin a objetos.
Base de datos relacionales: Conjunto Algebra relacional: Lenguaje de consulta para las tablas relacionadas entre ellas. de bases de datos. Base de datos: Combinacin del Anomala de actualizacin: Problemas esquema de y los datos almacenados. con la manipulacin de los datos de un modelo pobremente diseado. Bit: Digito binario o elemento mnimo de informacin Aplicacin de bases de datos: Formularios e informes con los que Byte: Conjunto de bits que se tratan como interacta el usuario. unidad, generalmente se componen de 8 bits. Archivo maestro: Archivos creados por medio de programacin. Cabecera de una relacin: La definicin de atributos y dominios en la parte Asociacin binaria: Una asociacin entre superior de una relacin. dos entidades participantes. CAD: Diseo asistido por computador. Asociacin ternaria: Una asociacin que tiene tres participantes. Campo: rea de trabajo que puede almacenar uno o varios datos. Asociacin unaria: Una asociacin Ejemplo: En el campo NOMBRE se establecida con una misma entidad. almacena: Carlos Alberto Garca". Asociacin: Una relacin entre dos entidades. establecida Carcter: Es informacin. la menor unidad de
Atributo: Una cualidad de la entidad o una columna para una tabla. Base de datos distribuidas: Coleccin de varias bases de datos interrelacionadas
Cardinalidad de una asociacin: El nmero mximo de ejemplares de una entidad que puede participar en una relacin.
Cardinalidad de una relacin: Nmero de filas de una relacin. CASE: Ingeniera del software asistida por computador. Clase derivada: Clase que caractersticas de otra clase. hereda
derecha que coinciden con la condicin de combinacin. Combinacin interna: Incluye todos los registros de ambas tablas que coinciden con la condicin de combinacin. Combinacin natural: Si las columnas se llaman igual y se elimina una de ellas el operador de comparacin debe ser el igual. Combinacin teta-Join: Unin basada en un operador lgico diferente al igual Combinacin. Combinacin: Concatenacin de o mas tablas en la manipulacin de la base de datos. Conjunto de registros: Representacin fsica de una relacin. Consulta: Resultado que se obtiene de la base de datos. DBA: Administrador de bases de datos. DBGS o DBMS: Sistema Gestor de Bases de datos. DDBMS: Sistema manejador de bases de datos distribuidas. DDL: Lenguaje de definicin de datos. Dependencia funcional: Es la relacin que hay entre los atributos. Descomposicin sin prdidas: La capacidad de dividir relaciones de tal forma que se puedan recombinar sin prdida de informacin. Diferencia relacional: Son los registros que esta en una primera tabla y no estn en la segunda tabla.
Clase: Representacin abstracta, plantilla de un conjunto de objetos. Clusula: Comandos del SQL para la manipulacin de la base de datos. Clave alterna o secundaria: Una clave que no se utiliza como clave principal. Clave candidata: Uno o mas atributos que identifican de forma nica una relacin Clave compuesta: Una clave candidata compuesta por dos o mas atributos. Clave fornea: Es una clave primaria que esta en otras tablas fuera de aquella a donde corresponde. Clave primaria: Clave candidata de una relacin que se utiliza para identificar de forma inequvoca los registros de una tabla. Combinacin externa completa: Devuelve todos los registros de ambas tablas y combina en un solo registro aquellos que coinciden con la condicin de Combinacin externa derecha: Incluye todos los registros de la tabla de la derecha y los registros de la tabla de la izquierda que coinciden con la condicin de combinacin. Combinacin externa izquierda: Incluye todos los registros de la tabla de la izquierda y los registros de la tabla de la
138
DML: Lenguaje de manipulacin de datos. Dominio: Intervalo de valores del que se puede obtener un atributo. Dominios compatibles en tipo: Dominios que se pueden comparar lgicamente. Entidad dbil: Es aquella que solo puede existir de la destruccin de una relacin de muchos a muchos. Entidad participante: Son las entidades que relacionan las entidades dbiles. Entidad: Cualquier cosa sobre la que el sistema debe almacenar informacin. Equi-unin: Una unin entre dos tablas basadas en la igualdad. Espacio del problema: La parte del mundo real que se modela en una aplicacin de bases de datos. Esquema de bases de datos: La disposicin fsica en las tablas de la base de datos. Evento: Cosas que suceden al ejecutar una accin. Fragmentacin horizontal: Es la divisin de la tabla por registros dada una condicin. Fragmentacin mixta: Es la divisin de la tabla por campos y luego por registros o viceversa. Fragmentacin vertical: Es la divisin de la tabla por campos. Fragmentacin: Divisin de una tabla en varias fracciones.
Grado de una relacin o tabla: Es el nmero de columnas que tiene una tabla o relacin. Herencia mltiple: Cuando la clase proviene de varios padres. Herencia simple: Cuando proviene de un solo padre. la clase
Herencia: Caractersticas que se heredan. Informacin: Son los datos organizados de tal forma que son tiles para la toma de desiciones. Informe ad hoc: Informe configurado por el usuario despus de la implementacin de una base de datos. Integridad de los datos: Son las reglas utilizadas por una base de datos para asegurar que los datos son correctos. Integridad referencial: Aseguran que las asociaciones entre las tablas son validas. Interseccin relacional: Una operacin relacional que devuelve los registros comunes que hay entre dos tablas. Mensajes: funciones. Son las llamadas funciones a las o
Modelo de red: Representacin de la informacin Cuando un registro proviene de varios padres y las relaciones son por medio de apuntadores y enlaces. Modelo entidad relacin: Representacin visual de la informacin en entidades y relaciones. Modelo jerrquico: Representacin de la informacin Cuando un registro proviene de un solo padre y las relaciones son por medio de apuntadores y enlaces.
139
Modelo orientado a objetos: Representacin visual de la informacin con orientacin a objetos. Modelo relacional: Representacin de la informacin en tablas relacionadas. Modelos de datos: Descripcin conceptual de un espacio del problema. Modelos lgicos basados en objetos: La informacin se representa con objetos. Modelos lgicos basados en registros: La informacin se representa en registros. MOO: Modelo orientado a objetos Normalizacin: Es la divisin sucesiva de tablas a una forma mas agradable y entendible y no se pierde informacin. Objeto conceptual: Representa cosa en forma general. Objeto fsico: Representa cosa en forma especfica. Objeto: Conjunto de atributos describen con eficacia una entidad. que
Proyeccin relacional: Una operacin relacional que separa columnas de una tabla. RDO: Objetos de datos remotos. Registro: Es un conjunto de campos relacionados. Relacin base: Tabla de la base de datos. Relacin: Es la asociacin nombrable y significativa que hay entre dos entidades. a una tabla tambin se le conoce como relacin. Restriccin de base de datos: Condicin que debe cumplir la base de datos. Restriccin de negocios: Una condicin dada por el espacio del problema. Seleccin relacional: Una operacin relacional que separa registros de una tabla dada una condicin. Sistema de bases de datos: Es todo el conjunto que se utiliza para crear la base de datos. Sistema multidatabase: operaciones sobre mltiples datos. Soporta bases de
ODBC: Conexin abierta de bases de datos. OODB: Bases objetos. de datos orientadas a
SQL: Lenguaje de consulta estructurado. Tabla de fragmentacin: Es el nmero de veces que una transaccin se da un determinado sitio. Tabla de polarizacin: Es la probabilidad que hay de que una transaccin se de un determinado sitio sobre un fragmento. Tabla: Ejemplificacin fsica de una relacin en el esquema da la base de datos.
OODBMS: Sistema manejador de bases de datos orientadas a objetos. POO: Programacin orientadas a objetos. Producto cartesiano: Una operacin relacional que combina cada registro de una tabla con cada registro de la segunda tabla.
140
Tipos de datos: Son los diferentes datos que se pueden almacenar. Tupla: Son los registros de una tabla. UML: modelo de datos unificado. Valores nulos: Son los campos que se dejan sin valor y son diferentes de 0 y cadena vaca. Vista: Son tablas virtuales de la base de datos.
141
Bibliografa
Bibliografa
Documento editado por Oralia Corts apoyada en la siguiente bibliografa: 1. C.J Date. Addison-Wesley. Introduccin a los Sistemas de Bases de Datos. 2. De Miguel, Adoracin; Piattini, Mario. Fundamentos y modelos de Bases de Datos. 3. Gary W,Hansen; James V,Hansen. Diseo y administracin de Bases de Datos. Prentice Hall, 1997. 834 p. 4. Henry F. Korth, Abraham Silberschatz. Fundamentos de Bases de Datos. McGrawHill. Segunda Edicin. 5. Joyanes Lus, Programacin orientada a objetos, Mc Graw Hill 1998 6. Korth, Henry ; Siberschatz, Abram. Fundamentos de Bases de datos. Mc Graw Hill. 7. Rocha, Mario. Modelo entidad relacin. Documento
Cibergrafa
Cibergrafa
Anlisis comparativo de bases de datos de Cdigo abierto vs. Cdigo cerrado Obtenida en la Fecha: Noviembre 16 de 2008 hora: 14.36 http://www.monografias.com/trabajos35/comparativa-bases-datos/comparativa-basesdatos.shtml#tendenc Circuitos Electrnicos, practicas mas, Bases de datos y normas de Calidad. Obtenido en Internet el Fecha Septiembre 27 de 2008 hora: 10 pm http://www.galeon.com/konnan2001/ERE.htm Colabora.net, Ejemplo sencillo sobre el modelado de un proyecto, Obtenida en la Fecha: Noviembre 16 de 2008 hora: 9.30 am http://www.elguille.info/colabora/puntoNET/canchala_UML.htm Dependencia funcional e independencia, manual de la Universidad de Mlaga. Obtenido en Internet el 23 de Octubre de 2008. Hora: 9.50 pm. http://ftp.medprev.uma.es/libro/node33.htm Diseo de base de datos distribuida, Obtenida en la Fecha: Noviembre 16 de 2008 hora: 9.30 am http://www.cs.cinvestav.mx/SC/prof_personal/adiaz/Disdb/Cap_3.html Diseo de una base de datos distribuida, Obtenida en la Fecha: Noviembre 16 de 2008 hora: 9.30 am http://usuarios.lycos.es/jrodr35/tipos.htm Documentacin de SQL Server 2005. Obtenido en Internet el 23 de Octubre de 2008. Hora: 9.50 pm. http://msdn.microsoft.com/es-es/library/ms203721(sql.90).aspx Elementos de UML, Obtenido en Internet el 16 de Noviembre de 2008. Hora: 9.50 am. http://docs.kde.org/stable/es/kdesdk/umbrello/uml-elements.html, ESCOM, fundamentos tericas de bases de datos distribuidas, Obtenida en la Fecha: Noviembre 16 de 2008 hora: 14.36 http://www.geocities.com/ddbqp/#_1.1_Introduccin http://es.wikipedia.org/wiki/Diagrama_de_clases, Obtenido en Internet el 16 de Noviembre de 2008. Hora: 9.50 am. http://www.calasanz-pereira.edu.co/prueba/html/modules/Access/normalizacion.htm http://www.monografias.com/trabajos11/basda/basda.shtml Instituto tecnolgico de Colima. Obtenido en Internet el Fecha Septiembre 27 de 2008 hora: 10 pm http://labredes.itcolima.edu.mx/fundamentosbd/sd_u2_2.htm Introduccin a los conceptos de Bases de Datos. Obtenido en Internet el 22 de agosto de 2008. Hora: 10.05 pm. http://atenea.udistrital.edu.co/profesores/jdimate/basedatos1/tema1_12.htm Introduccin a los Sistemas de Base de Datos. Obtenido en Internet el 22 de agosto de 2008. Hora: 10.05 pm. http://www.temas-estudio.com/base-de-datos/ Introduccin a los Sistemas de Base de Datos. Obtenido en Internet el Fecha Septiembre 27 de 2008 hora: 10 pm http://www.temas-estudio.com/base-de-datos/ Introduccin a los Sistemas de Base de Datos. Obtenido en Internet el Fecha Septiembre 27 de 2008 hora: 10 pm http://www.monografias.com/trabajos34/base-de-datos/basede-datos.shtml
Las 12 reglas de Codd. Obtenido en Internet el 23 de Octubre de 2008. Hora: 9.50 pm. http://www.atpsoftware.net/Public/Articulos.php Marqus Andrs, Mara Mercedes. Ciclo de vida de las aplicaciones de bases de datos. Obtenido en Internet el 22 de agosto de 2008. Hora: 10.05 pm. http://www3.uji.es/~mmarques/f47/apun/node67.html Microsoft SQL Server 2005, Express edition, Obtenido en Internet el 23 de Octubre de 2008. Hora: 9.50 pm. http://www.desarrollaconmsdn.com/msdn/CursosOnline/Curso_SQL_Server/index.html Normalizacin de base de datos, Prof. Manuel Torres Remon. Obtenido en Internet el 23 de Octubre de 2008. Hora: 9.50 pm. http://www.monografias.com/trabajos5/norbad/norbad.shtml Normalizacin de Bases de Datos. Obtenido en Internet el 23 de Octubre de 2008. Hora: 9.50 pm. http://www.trucostecnicos.com/trucos/ver.php?id_art=278 Obtenida en la Fecha: agosto 17 de 2008 hora: 14.36 http://perso.wanadoo.es/aldomartin1/noreyalre.htm Programa Microsoft desarrollador de software cinco estrellas, estrella 0 introduccin a la programacin orientacin a objetos en C# y visual Basic.Net Obtenido en Internet el 16 de Noviembre de 2008. Hora: 9.50 am. http://download.microsoft.com/download/F/A/C/FAC370F4-7D37-4899-A461D27ABC99C615/DCE0_ProgramacionOO_C%23_VBNET.ppt Sistema de bases de datos distribuidas, Obtenida en la Fecha: Noviembre 16 de 208 hora: 14.36 http://docente.ucol.mx/vpc1052/public_html/Expo%20SBDD.doc SQL Server TechCenter. Obtenido en Internet el 23 de Octubre de 2008. Hora: 9.50 pm. http://technet.microsoft.com/es-es/library/ms191236.aspx Tecnicas bsicas del modelado de objetos, Obtenida en la Fecha: Noviembre 16 de 2008 hora: 9.30 am http://cesar.crbyte.com/apuntes/2_tecnicas_modelado.pdf Trejo Martnez, Janhil Aurora. Bases de datos. Obtenido en Internet el 22 de agosto de 2008. Hora: 10.05 pm. Universidad Calasanz de Pereira. Normalizacin. Obtenido en Internet el Fecha Septiembre 27 de 2008 hora: 10 pm Universidad Distrital francisco Jos de Caldas. De Base de Datos. Obtenido en Internet el 22 de agosto de 2008. Hora: 10.05 pm. http://groups.msn.com/elch/modelosdedatos.msnw Universidad Distrital francisco Jos de Caldas. Modelo entidad Relacin. Obtenido en Internet el 22 de agosto de 2008. Hora: 10.05 pm. http://gemini.udistrital.edu.co/comunidad/profesores/rfranco/modelo_er.htm Universidad Nacional de Colombia. Visin de los Datos. Obtenido en Internet el 22 de agosto de 2008. Hora: 10.05 pm. http://www.virtual.unal.edu.co/cursos/sedes/manizales/4060029/lecciones/cap1-6.html You Tobe ideos, Obtenido en Internet el 23 de Octubre de 2008. Hora: 9.50 pm. http://es.youtube.com/watch?v=IPKl19SbiYQ You Tobe ideos, Obtenido en Internet el 23 de Octubre de 2008. Hora: 9.50 pm. http://es.youtube.com/watch?v=AIn8inZInAQ
144