Professional Documents
Culture Documents
Semestre 4
Tabla de contenido
Introduccin Conceptos previos Mapa conceptual Fascculo 3 Logros Definicin formal de relacin. Grado de una Relacin. Cardinalidad de las relaciones. Operadores: Select, Joins, Agrupacin Resumen Bibliografa recomendada Nexo Seguimiento al autoaprendizaje
Pgina 1 1 2 2 2 3 4 10 20 22 22 23
Semestre 4
Copyright2008 FUNDICIN UNIVERSITARIA SAN MARTN Facultad de Universidad Abierta y a Distancia, Educacin a Travs de Escenarios Mltiples Bogot, D.C. Prohibida la reproduccin total o parcial sin autorizacin por escrito del Presidente de la Fundacin. La redaccin de este fascculo estuvo a cargo de LUIS HERNANDO DUQUE RIOS Tutor Programa de Ingeniera de Sistemas a Distancia. Sede Bogot, D.C. Correccin de estilo; MARLON CARRERO R. Diseo grfico y diagramacin a cargo de SANTIAGO BECERRA SENZ ORLANDO DAZ CRDENAS Impreso en: GRFICAS SAN MARTN Calle 61A No. 14-18 - Tels.: 2350298 - 2359825 Bogot, D.C., Noviembre de 2010
Semestre 4
Lo gro s
Al finalizar el desarrollo del tema contenido en este fascculo el estudiante deber haber adquirido las siguientes destrezas. Reconocer las ventajas de utilizacin del Modelo Relacional. Tendr claro el concepto de Modelo Relacional. Estar en condiciones de utilizar algunas sentencias de agrupacin.
Ejemplos de relaciones binarias: Cliente Producto Profesor Estudiante Persona Vehiculo Proveedor Articulo Relacin N-aria: grado n. Se pueden asociar mas de dos entidades, las ms comunes son las de grado 3.
Ejemplos de relaciones N-arias: CLIENTE VEHICULO LOCAL COSECIONARIO relacin COMPRA VIAJERO DESTINO AEROLINEA RELACIN viaja Relacin reflexiva (o recursiva): grado 1. Se asocia una entidad con si misma.
Dependiendo de la cantidad de elementos del segundo conjunto con los que se relacione la cardinalidad puede ser: Uno a uno: 1:1. Una entidad del conjunto (E1) se relaciona con una nica entidad del conjunto de entidades (E2) y viceversa.
Figura 5. Relacin 1 a 1
Ejemplo de cardinalidad 1:1. EMPLEADO CARGO: Un empleado tiene un cargo y un cargo es desempeado por un empleado. HOMBRE MUJER: Un hombre esta casado con una mujer y una mujer esta casada con un hombre. Uno a muchos: 1:n. Una entidad del conjunto de entidades (E1) se relaciona con varias entidades del conjunto de entidades (E2) y una entidad del conjunto de entidades (E2) solo puede estar relacionada con una entidad del conjunto de entidades (E1).
Figura 7. Relacin 1 a n
Ejemplo de cardinalidad 1:n. JUGADOR EQUIPO. Un jugador integra un equipo, pero en un equipo hay varios jugadores. CLIENTE PRSTAMO. Un prstamo pertenece a un cliente pero un cliente puede tener uno o varios prstamos. Muchos a uno: n:1. Una entidad en (E1) esta relacionada con una nica entidad de (E2) y una entidad del conjunto de entidades (E2) esta relacionada con muchas entidades del conjunto de entidades (E1).
Ejemplo de cardinalidad n: 1. ESCUELA ALUMNO: Una escuela tiene muchos alumnos, cada alumno pertenece a una nica escuela.
Ejemplo de cardinalidad n:n. ALUMNO MATERIA: Un alumno cursa varias materias, una materia es cursada por varios alumnos. Para el anlisis detallado se requiere desarrollar cuatro puntos que
expresan las reglas del negocio que se necesitan hacer cumplir en la estructura de la Base de Datos. En estos casos la cardinalidad de las relaciones se expresa con un valor mnimo y uno mximo, y se declara grficamente en el diagrama entidad relacin, dado que las relaciones se indican en ambos direcciones entre las entidades, la cardinalidad mxima y mnima debe indicarse igualmente [Rub98]: Se tomar como ejemplo una agrupacin de propietarios de autos antiguos, con la restriccin de que un auto slo pertenece a una persona y
Fascculo No. 3 Semestre 4
Como se aprecia, el valor mnimo realmente es una restriccin de obligaCardinalidad de las relaciones indica el nmero de entidades del conjunto de entidades E2 que se relacionan con una entidad del conjunto de entidades E1 y viceversa.
toriedad o no en la participacin de las entidades en la relacin. Si es cero (0), es opcional la participacin, en otro caso (valor 1) es requerida. El valor mximo que puede ser 1 o n, determina si la participacin es singular o plural en la relacin. Los valores cero, uno y n, pueden reemplazarse por 0, | y un tridente, quedando el ltimo caso as: Diagrama para Mtodo CASE. Trabajando con los diagramas modelados para acercamiento a las herramientas CASE, Barker [BAR92] propone
En la grfica se aprecia la forma en que se representan las entidades, las relaciones, los atributos y la cardinalidad de las relaciones.
10
La tabla de llama EMPLEADO y sus atributos son: Nombres, Apellidos, NoCedula, FechaNacimmeinto. Primer ejercicio: Seleccionaremos de la tabla slo los atributos Nombres y Apellidos. SELECT Nombre, Apellidos FROM EMPLEADOS
11
La grafica slo muestra los dos atributos de la tabla que se indicaron en la consulta. Ntese que trae el total de los registros de la tabla (6), porque aun no le hemos indicado algn criterio para seleccionar o filtrar los registros del resultado. Segundo ejercicio: Seleccionaremos de la tabla los atributos Nombres y NoCedula. SELECT Nombre, NoCedula FROM EMPLEADOS
El resultado de esta consulta slo muestra los Nombres y NoCedula y los mismos (6) registros que son el total que hay en la Tabla EMPLEADO. A la sentencia SELECT se le puede indicar que solo muestre como resultado de la consulta algunos registros en especial que cumplan con una condicin dada en la consulta. La condicin puede ser aplicada a cualquiera de los atributos de la tabla y esta condicin debe ser acorde al tipo de dato al que corresponda el atributo.
12
SELECT nombre_campo(s) FROM nombre_Tabla WHERE nombre_campo operador Valor Ejemplo de tipos de condicin: Para tipo de dato numrico, entero, moneda SELECT Nombre, Apellidos FROM EMPLEADOS WHERE NoCedula > 73000000 Aqu le estamos indicando a la consulta que solo devuelva los registros cuyo nmero de cdula sea mayor que 73000000.
El conjunto de registros resultado es (4) y como se observa el atributo NoCedula cumple con la condicin propuesta de ser mayor a 73000000. Para tipo de dato texto SELECT Nombre, Apellidos FROM EMPLEADOS WHERE Nombres Like %Ca%
Fascculo No. 3 Semestre 4
13
El conjunto de registros resultado es (2) y como se observa, el atributo Nombres contiene la cadena de caracteres Ca. SELECT Nombre, Apellidos FROM EMPLEADOS WHERE Nombres = Favio Arturo Aqu le estamos indicando a la consulta que solo devuelva los registros en los que en el atributo Nombres es igual a Favio Arturo
Figura 22. Resultado del select
El conjunto de registros resultado (1) y como se observa el atributo Nombres es igual a Favio Arturo
3.1
Basado en la tabla anterior EMPLEADO construya una sentencia SQL en donde retorne los siguientes atributos: Fecha de nacimiento, NoCedula, Apellidos
JOIN La palabra JOIN es usada en una sentencia SQL para consultar dos o ms tablas que se encuentran entre si relacionadas por uno o mas atributos en cada tabla.
14
Existen varios tipos de JOIN JOIN Devuelve slo el conjunto de registros en donde el valor del atributo que relaciona la tabla A se encuentra como valor en el atributo de la tabla B El atributo que relaciona la tabla A con la tabla B es (IdEmpleado). La siguiente consulta SQL demuestra el uso de JOIN y su resultado. SELECT A.Nombres, A.Apellidos, B.Telefono FROM EMPLEADOS A JOIN TELFONOS B ON A.IdEmpleado = B.IdEmpleado.
Como podemos ver el resultado de esta consulta solo retorna (2) registros que son los que cumplen la condicin de estar como valores en el atributo IdEmpleado de la tabla A y de la tabla B.
15
Como se observa en el resultado muestra todos los registros de la tabla de la izquierda que para nuestro ejemplo es EMPLEADOS y los registros que no hacen match por el campo relacin muestran un valor de NULL. RIGHT JOIN Devuelve todos los registros de la tabla derecha, incluso si no hay coincidencias en la tabla izquierda. SELECT A.Nombres, A.Apellidos, B.Telefono FROM EMPLEADOS A RIGHT JOIN TELFONOS B ON A.IdEmpleado = B.IdEmpleado.
Como se observa en el resultado muestra todos los registros de la tabla de la derecha que para nuestro ejemplo es TELFONOS y los registros que no hacen match por el campo relacin muestran un valor de NULL.
16
Agrupaciones En el lenguaje SQL existe una clusula para hacer agrupaciones GROUP BY esta permite realizar agrupaciones de registros de una tabla. Junto con la clusula GROUP BY debemos aplicar sentencias de agregacin que son las encargadas de hacer las operaciones sobre los registros Ejm:. SUM, AVG, COUNT, MAX, MIN. La sintaxis bsica de la clusula GROUP BY en una sentencia SELECT es la siguiente: SELECT atributo1, atributo2, atributo3 FROM tablas WHERE condiciones GROUP BY atributo1, atributo2, atributo3... Para nuestro ejemplo tenemos la siguiente tabla EMPLEADO
17
Como se observa en el resultado de la consulta lo que hace es para cada diferente oficio saca un promedio del salario que se encuentra en los registros. Se quiere calcular a continuacin el nmero de empleados de cada departamento. En esta ocasin debemos realizar un agrupamiento de registros por el campo Dept_no. De cada grupo que se forme debemos contar el nmero de registros que forman cada grupo. La sentencia SQL quedara: SELECT Dept_no, COUNT(*) AS Cantidad FROM EMPLEADO GROUP BY Dept_no
Existe una clusula adicional que se puede agregar a las agrupaciones y permite restringir el resultado de las agrupaciones llamada HAVING, forma de utilizarla.
Fundamentos de bases de datos
18
Como se observa en el resultado omite los registros que estn por debajo de 1.000.000. Es as que la clusula HAVIN restringe los resultados en una agrupacin.
3.2
Desarrolle el modelo para las siguientes entidades (ESTUDIANTE, NOTAS, MATERIAS) indicando sus atributos, los campos clave y clave fornea en las entidades. ESTUDIANTES ( IdEstudiante, Nombre, Cedula ) NOTAS( IdMateria, IdEstudiante, Nota ) MATERIAS ( IdMateria, NombreMateria ) Realice consultas select en donde se muestren datos de las 3 entidades
19
Una relacin es toda asociacin significativa y estable entre dos o ms entidades de un dominio de aplicacin. El grado de una relacin hace referencia al nmero de entidades que asocia. Relacin Binaria: grado 2. Solamente se asocia a dos entidades. Relacin N-aria: grado n. Se pueden asociar mas de dos entidades, las ms comunes son las de grado 3. Relacin reflexiva (o recursiva): grado 1. Se asocia una entidad con si misma. Cardinalidad de las relaciones indica el nmero de entidades del conjunto de entidades E2 que se relacionan con una entidad del conjunto de entidades E1 y viceversa.
Dependiendo de la cantidad de elementos del segundo conjunto con los que se relacione la cardinalidad puede ser: Uno a uno: 1:1. Una entidad del conjunto (E1) se relaciona con una nica entidad del conjunto de entidades (E2) y viceversa. Uno a muchos: 1:n. Una entidad del conjunto de entidades (E1) se relaciona con varias entidades del conjunto de entidades (E2) y una entidad del conjunto de entidades (E2) solo puede estar relacionada con una entidad del conjunto de entidades (E1).
Muchos a uno: n:1. Una entidad en (E1) esta relacionada con una nica entidad de (E2) y una entidad del conjunto de entidades (E2) esta relacionada con muchas entidades del conjunto de entidades (E1).
Muchos a muchos: n:n. Una entidad del conjunto de entidades de (E1) esta relacionada con muchas entidades del conjunto de entidades (E2) y una entidad del conjunto de entidades de (E2) esta relacionada con muchas entidades del conjunto de entidades (E1).
20
21
SILVERSCHATZ, Henry F. Korth y S. Sudarshan Abraham. Fundamentos de Bases de Datos (3 edicin) [EN 2002] Elmasri, R.; Navathe, S.B. Fundamentos de Sistemas de Bases de Datos. 3 ed. Addison-Wesley, (Cap. 3 y 4). Texto gua [MPM 1999] De Miguel, A.; Piattini, M.; Marcos, E. Diseo de bases de datos relacionales. Ra-Ma. (Cap. 2) [CBS 1998] Connolly, T.; Begg C.; Strachan, A. Database Systems: A Practical Approach to Design, Implementation and Management. 2nd ed. Addison-Wesley. (Cap. 5) [SKS 1998] Silberschatz, A;Korth, H; Sudarshan, S. Fundamentos de Bases de Datos. 3 edicin. Madrid: McGraw-Hill. (Cap. 2)
En el siguiente fascculo el estudiante ver en forma ms detallada la utilizacin de ciertas sentencias SQL que le permitirn poner en practica los conceptos adquiridos de las sentencias bsicas del lenguaje SQL. A travs de l desarrollo de ejercicios prcticos el estudiante adquirir destrezas en cuanto al manejo del lenguaje SQL y algunos de los motores de bases de datos mas conocidos en el mercado.
22
23