Bases de Datos - Modulo
Bases de Datos - Modulo
Sistemas Informáticos
BASES DE DATOS
Fabián Castellano
Año 2022
INDICE
Presentación 4
Iconos Utilizados en el Módulo 5
Trabajo de Campo 6
Unidad 1: Introducción a las Bases de Datos 8
Objetivo de la unidad 1 8
Introducción 8
Características de una Base de Datos 18
Usuarios de una Base de Datos 22
Arquitectura de las Bases de Datos 24
Herramientas de un Sistema de Bases de Datos 26
Lenguajes en un Sistema de Gestión de Bases de Datos 28
Clasificación de los Sistemas de Gestión de Bases de Datos 29
1
Unidad 3: Diseño Físico de una Base de Datos 74
Objetivos de la unidad 3 74
Introducción 74
Tablas 74
Normalización 78
Primera Forma Normal 79
Segunda Forma Normal 80
Tercera Forma Normal 81
Ejercicios Resueltos 82
El Proceso de Diseño de una Base de Datos 89
Integridad de los Datos Contenidos en una Base de
Datos Relacional 94
Diagrama de Tablas 94
Ejercicios Resueltos 95
2
Funciones de una Línea 162
Funciones Numéricas 166
Funciones de Conversión de Datos 168
Funciones que Operan con Números 169
Outer Join 169
Subqueries 172
Minus 174
Intersect 175
Vistas 176
Indices 179
Secuencias 181
Lenguaje de Control de Datos (DCL) 183
Ejercicios Resueltos 185
MySQL 196
3
PRESENTACION
Es mi gran objetivo como profesor de Bases de Datos lograr
que se interesen por esta área del mundo de los sistemas.Que
tengan una cursada entretenida y que al finalizar obtengan
conocimientos sólidos que puedan aplicar en su vida profesional.
También me gustaría que no se queden sólo con el material de la
materia, sino que investiguen todo lo que puedan ya sea en libros,
publicaciones o en el inmenso mundo de Internet.
Esta materia se relaciona muy fuertemente con otras como son:
Programación II, Integración de Programación, Análisis y Diseño de
Sistemas y Desarrollo e Integración Profesional.
La materia contará con clases teóricas, clases prácticas y prácticas
profesionalizantes, incluiremos dos trabajos prácticos obligatorios
con la opción de un recuperatoriocada uno, el alumno deberá
desarrollar y aprobar la práctica profesionalizante antes de finalizar
la cursada, una vez aprobada la cursada el alumno tiene acceso a
rendir el examen final presencial, para obtener la aprobación de la
materia.
Cuando se desarrolla un sistema, la construcción correcta y precisa
de una base de datos es clave en el éxito final del sistema, donde se
deben incorporar conceptos que permitan optimizar la forma de
almacenar la información y la velocidad en el acceso a esos datos.
Utilizaremos el recurso de los foros de discusión con los que cuenta
el sistema de IRSO VIRTUAL, cuando necesitemos presentar temas
que requieran el aporte y discusiones de todos nosotros.
Al finalizar esta materia el alumno, deberá contar con conocimientos
precisos en la construcción de una base de datos relacional,
eficiente efectiva y durable en el tiempo, podrán organizar y
almacenar la información en las bases de datos seleccionando las
alternativas más adecuadas para sus aplicaciones.
4
Aprenderán a utilizar el siempre vigente lenguaje SQL en todas sus
características tanto básicas como avanzadas, este lenguaje es muy
solicitado por las empresas que buscan personal de sistemas.
Fabián Castellano
Actividad
Atención o recuerde
El icono de Atención o recuerde es para aquellas definiciones o
textos breves que deben recordar o son conceptos claves que se
usarán a lo largo del módulo
El icono de Lea con atención será usado cuando el texto para leer
con atención es largo y tal vez de allí surge una actividad o un
ejemplo posterior.
Foro
5
Trabajo de Campo
Tester.
6
realiza el proceso de Normalización de cada una de las estructuras de
datos, luego se construye el nuevo Diagrama Entidad Relación.
3)_ Se diseña y construye el Diagrama de Tablas con su Diccionario de
Datos asociado con un graficador.
4)_ El alumno toma el rol de soporte técnico de la base de datos,
realiza la instalación en tres ambientes de trabajo: desarrollo, test y
producción utilizando el Sistema de Gestión de Base de Datos
Relacional MySQL de distribución gratuita.
5)_ Se crean las estructuras de las tablas y todas sus relaciones en el
ambiente de desarrollo, luego en el ambiente de test.
El alumno en el rol de tester realiza en el ambiente de test la prueba
informando al terminar mediante formulario el resultado de la prueba.
Se crean las estructuras de las tablas en el ambiente de producción
previa autorización.
Para poder rendir el examen final el alumno deberá inscribirse en las
fechas de las mesas de examen que serán publicadas oportunamente,
a través del sistema IRSO VIRTUAL.
El trabajo de campo deberá ser documentada y presentada con
calidad profesional.
7
UNIDAD1: INTRODUCCION A LAS BASES DE DATOS.
Objetivodelaunidad 1:
En esta unidad el alumno reconocerá conceptos básicos y
teóricos de bases de datos referidos a la creación y administración
de una base de datos.
Introducción.
Las bases de datos tienen hoy en día una importancia
fundamental en lo que se refiere al uso de computadoras, aplicables
a una gran cantidad de áreas de la vida moderna como ser la
ingeniería, medicina, educación, negocios, comunicaciones,
financieras, etc.
8
Una base de datos es un conjunto de datos interrelacionados
almacenados en conjunto, sin redundancia perjudicial o innecesaria
con el objeto de servir a una aplicación o más de la mejor manera
posible.1
1
Del libro Organización de las Base de Datos. - James Martin
9
2)disponemos de software que es aplicable a cualquier aplicación
que use la base de datos.
Pacientes.
Nro historia Apellido Nombre Fec. Nac Sexo Tipo Nro doc Cod
clínica doc Obra
Social
1002 Pereyra Ariel José 11/03/1926 M LE 3.545.212 OS1
2008 Mayoral Ana María 21/10/1980 F DNI 26.899.998 OS3
4323 García Anibal 19/06/1964 M DNI 16.887.874 OS1
8787 Almeida Cristina 20/12/1943 F LC 7.787.545 OS2
6765 Martinez Josefina 12/04/1977 F DNI 20.984.654 OS2
9893 Pizzi Gerardo 26/03/1950 M DNI 7.765.789 OS1
10
Médicos
Nro. Apellido Nombre Fec. Nac Sexo Especialidad
matrícula
298987 Rosales Mariano 01/06/1970 M CM
108789 Di Marco Rubén 11/12/1950 M CA
230989 Perez Anton Liliana 30/05/1964 F OF
089897 Silva Martina 21/09/1942 F CM
Obras Sociales
Cod Obra Denominación Dirección Localidad Teléfono
Social
OS1 OSECAC Av. Corrientes 1232 Ciudad de Buenos Aires. 4333-9191
OS2 OSPLAD Av. Pueyrredon 301 Ciudad de Buenos Aires. 4332-9898
OS3 OSEM 25 de Mayo 3219 Ciudad de Buenos Aires. 4200-1882
OS4 OSEC Av. L. N. Alem 1001 Ciudad de Buenos Aires. 4132-7656
Consulta Médica
Nro historia Nro. Fecha/hora Diagnóstico Tratamiento recomendado
clínica Matrícula consulta
1002 298987 12/11/2000 Gripe Reposo 7 días.
13:30hs
2008 298987 13/02/2001 Fractura de Yeso durante 30 días.
15:00hs fémur
4323 230989 13/02/2001 Miopía Anteojos con mayor aumento.
16:00hs
8787 089897 14/02/2001 Dolor de espalda Faja y analgésicos.
16:30hs
Especialidades
Especialidad Denominación
CA Cardiología
CM Clínica Médica
OF Oftalmología
11
número de Historia Clínica, el cual es un número que le es asignado
al paciente por única vez y que lo identificará unívocamente respecto
de otros pacientes, también se incluye un Código de Obra Social a la
cual pertenece el paciente y que es un código para obtener la
denominación de la Obra Social, observando la tabla Obras Sociales
y buscando por Código de Obra Social obtenemos su denominación.
Ejemplo:
El paciente cuyo número de historia clínica es 1002, Ariel José
Pereira, posee como código de Obra Social OS1,accediendo por
OS1 a la tabla Obras Sociales observamos que a OS1 le pertenece
la denominación OSECAC.
Luego en Médicos, encontramos los nombres de todos los médicos
que atienden en la clínica, con su número de matrícula que lo
identifica en forma unívoca entre otros médicos y la especialidad,
que está representada por un código, por lo tanto de igual manera
que lo que ocurría con los códigos de obras sociales en este caso
accediendo por Especialidad en la tabla Especialidades obtenemos
la denominación de la especialidad.
Ejemplo:
Así el médico Rubén Di Marco con número de matrícula 108789
posee la especialidad de Cardiólogo.
Luego nos encontramos con la tabla Consulta Médica en donde
cada vez que un paciente es atendido por un médico, es registrada
esta situación en donde figura, el paciente identificado por su
número de historia clínica, el médico que lo atendió identificado por
su número de matrícula, fecha y hora de la consulta, el diagnóstico y
el tratamiento recomendado.
12
Estamos almacenando datos que representan a los pacientes, los
médicos, las Obras Sociales, las Especialidades y las Consultas
Médicas realizadas, en donde los registros pueden estar
relacionados entre sí, en su gran mayoría todas las bases de datos
cuentan con muchos registros y muchas relaciones entre ellos.
Sobre las bases de datos realizamos operaciones de consultas y
actualizaciones.
Cuando hablamos de manipulación de una base de datos nos
referimos a las consultas y actualizaciones que se realizan sobre
esta.
Ejemplos de consultasque realizamos sobre la base de datos son:
13
integrados en la base de datos, manteniendo su integridad,
confidencialidad y disponibilidad
Base de Datos
14
1. Función de definición: permite a los diseñadores de la base
de datos describir los elementos de datos,su estructura y las
relaciones que existen entre ellos; elSGBD proporciona un
lenguaje para la definición de las tablas, los atributos que la
componen,las restricciones semánticas y las características
de tipo físico o almacenamiento necesarias.
2. Función de manipulación: permite a los usuarios de la base
de datosagregar, eliminar o modificar losdatos de ella siempre
se respeten las características de seguridad que
hayaestablecido el administrador de la base de datos.
3. Función de control: esta función se ocupa de las interfaces
que requieren los distintos tipos deusuarios para comunicarse
con la base de datosy de las herramientas necesarias para
eladministrador para definir los mecanismos de seguridad y
mantenimiento de la base de datos.
Ejercitación
Siguiendo el razonamiento empleado en los últimos ejemplos,
resolver indicandocuales son los pasos a seguir.
15
3)_ Como se obtieneuna lista de todos los pacientes
incluyendo Apellido y Nombre cuyo diagnóstico en la consulta
fue Gripe.
4)_ Como se obtiene una lista de todos los pacientes
incluyendo Apellido y Nombre que hayan recibido una
Consulta en el año 2001.
Ejercitación
Siguiendo el razonamiento empleado en los últimos ejemplos,
resolver indicandocuales son los pasos a seguir.
16
fecha/ hora consulta, diagnóstico y tratamiento recomendado
a criterio del alumno.
17
Todo SGBD en la que trabajen muchos usuarios debe permitir que
estos puedan acceder simultáneamente a la base de datos. Esta
característica es fundamental para que puedan acceder a la base de
datos diferentes aplicaciones y toda la información sea mantenida en
una sola base de datos.
El SGBD debe incluir software para asegurar que cuando diferentes
usuarios actualicen datos al mismo tiempo lo hagan de manera
controlada. Considerando la base de datos de la clínica el sistema
debería controlar que no sea asignado un turno para una consulta
para un mismo médico en la misma fecha y en el mismo horario a
dos o más pacientes o que a dos pacientes le asignen el mismo
número de historia clínica.
18
tantas veces como versiones existan del mismo, y si por
algúnerror (por ejemplo se produce un corte de energía
eléctrica cuando se está actualizando), estos datos no serán
todos actualizados y tendremos información incoherente como
podría ser el caso que la fecha de nacimiento no fue
actualizada en todos lados y se encuentran con diferentes
valores.
¿Pero como solucionamos este problema?
La solución consiste en crear una base de datos en donde cada
dato se almacena en un solo lugar, esto logra evitar la inconsistencia
de los datos y ahorra espacio de almacenamiento.
Pero sí bien la teoría no acepta la redundancia en algunos casos se
la utiliza en forma controlada con el objeto de poder mejorar la
velocidad de acceso a los datos.
19
El SGBD posee un subsistema de seguridad y autorización que
permite a un usuario administrador de la base de datos crear los
usuarios y especificar las restricciones de acceso necesarias a la
base de datos.
20
Pero existe la posibilidad que se ingresen datos erróneos sin que
estos sean detectados por las restricciones de integridad.
Por ejemplo, si le asignamos la especialidad Oftalmología al médico
Rubén Di Marco que sólo posee la especialidad de Cardiólogo, este
tipo de errores sólo puede ser descubierto por un ser humano que
verifica la base de datos.
21
1)_ Administradores de base de datos.
En una base de datos grande se necesita una persona que
supervise y controle los recursos disponibles. Estos recursos son la
base de datos y el SGBD. La administración de estos recursos es
asignada a una persona conocida con el nombre de Administrador
de base de datos o (DBA Database Administrator) en inglés.
22
Los usuarios finales simples, la mayoría de los usuarios
finales son de este tipo. Su actividad más común es realizar
consultas y actualizaciones permanentes de la base de
datos de lo que se denominan consultas standard.
23
3)_ El uso de un catálogo para almacenar la estructura de la
base de datos.
En el año 1975, el comité ANSI-SPARC (American National
Standard Institute - Standards Planning and Requirements
Committee) determinó una arquitectura de tres niveles para los
sistemas de bases de datos, que resulta muy apropiada para
conseguir estas tres características.
24
Es importante aclarar que los tres esquemas sólo son observaciones
de los mismos datos pero con distintos niveles de abstracción. Los
únicos datos reales están a nivel físico, almacenados en por ejemplo
un disco rígido. En un SGBD basado en la arquitectura de tres
niveles, cada grupo de usuarios trabaja exclusivamente con su
propio esquema externo.
25
HERRAMIENTAS DE UN SISTEMA DE BASES DE
DATOS.
Los SGBD poseen las herramientas que ayudan al
administrador de la base de datos a realizar su trabajo.
Carga de datos: existe una herramienta que se ocupa
de realizar la carga inicial de la base de datos.
Supongamos que en una empresa contamos con un
sistema y su base de datos asociada que es
reemplazada por otra base de datos por ejemplo más
moderna, entonces toda la información con la que
26
cuenta la vieja base de datos debe ser almacenada en
la nueva base de datos.
En muchas ocasiones no es posible realizar una copia directa
entre las dos bases de datos, entonces tendremos que utilizar
algún formato en los datos que pueda ser interpretado tanto
en la base de datos vieja como en la nueva, básicamente son
los archivos de texto, esta herramienta se ocupará de leer
estos archivos de texto con los datos de la base de datos vieja
y copiarlos a la nueva base de datos.
27
brindar un lenguaje para que los distintos tipos de usuarios se
comuniquen con la base de datos.
En los SGBD relacionales se cuenta con el lenguaje SQL que de
acuerdo a lo que realicen sus instrucciones se dividen en:
28
relacional, anteriormente se utilizaban además los modelos de red y
el jerárquico. Los SGBD más nuevos utilizan el modelo orientado a
objetos.
El modelo relacional se basa en el concepto llamado relación, en
este tipo de modelo los datos y las relaciones que existen entre los
datos se representan con lasllamadas relaciones que poseen un
nombre único.
En el modelo relacional la base de datos es reconocida por los
usuarios como un conjunto de tablas, aunque esta visión es sólo a
nivel lógico ya que físicamente puede estar implementada por
diferentes estructuras de almacenamiento.
Otro modelo es el de red donde los datos se representan como
colecciones de registros y las relaciones entre los datos se
representan mediante conjuntos. Los registros son organizados
como un grafo. El SGBD de red más conocido es el sistema IDMS.
El modelo jerárquico es similar a un modelo de red con restricciones.
Aquí también los datos son representados como colecciones de
registros y las relaciones entre los datos mediante conjuntos, la base
de datos jerárquica puede ser representada con un árbol. El SGBD
jerárquico más importante es el sistema IMS.
Actualmente un gran porcentaje de los SGBD comerciales están
basados en el modelo relacional, y los sistemas más antiguos están
basados en el modelo de red o el jerárquico. Tanto el modelo de red
como el jerárquico necesitan que el usuario tenga conocimiento de la
estructura física de la base de datos para poder trabajar con ella a
diferencia del modelo relacional donde existe más independencia de
los datos.
El modelo conocido como orientado a objetos es descrito como un
conjunto de objetos, sus propiedades y sus operaciones. Aquellos
objetos que posean la misma estructura y comportamiento forman
parte de una clase y tales clases son organizadas en jerarquías. Las
operaciones aplicables a cada clase se definen como
procedimientos predefinidos llamados métodos.
29
Otro criterio para poder clasificar los SGBD es por la cantidad de
usuarios que trabajan con el sistema. Los sistemas que sólo sirven a
un usuario al mismo tiempo, se los conoce como monousuarios.
Aquellos sistemas que atienden a varios usuarios al mismo tiempo
se los conoce como sistemas multiusuario, estos representan la gran
mayoría de los sistemas actuales.
Otro criterio de clasificación es el número de sitios en los que se
encuentra distribuida la base de datos. La mayoría de los SGBD son
centralizados, donde sus datos se almacenan en una sola
computadora. Los SGBD centralizados pueden atender a varios
usuarios, pero el SGBD y la base de datos están en una sola
computadora.
Cuando el SGBD es distribuido la base de datos y el software puede
estar distribuido en varios sitios conectados mediante una red. Un
cuarto criterio es el costo del SGBD.
Por último, los SGBD pueden ser de propósito general o de
propósito específico. Cuando el rendimiento es fundamental, se
puede diseñar y construir un SGBD de propósito especial para una
empresa específica, y este sistema no sirve para otras aplicaciones.
30
UNIDAD 2: MODELO DE DATOS RELACIONAL
Objetivo de la unidad 2:
El alumno estará en condiciones de construir un modelo
relacional, identificará los diferentes elementos del modelo
empleando la herramienta Diagrama Entidad Relación.
31
automatizan en gran parte las tareas del diseño y que toman como
base estemodelo de datos.
El modelo E/R fue propuesto por Peter Chen en 1976. Desde
entonces muchos autores se haninteresado por él, estudiándolo y
ampliándolo, consiguiendo diversas variantes del modelo(distintas
formas de representación de los objetos), pero todas ellas parten del
mismo concepto:el conocimiento del mundo real que se desea
representar a través de un análisis de los requisitoso
especificaciones del problema.
En la realización del esquema o diseño conceptual de cualquier base
de datos es fundamental elconocimiento del problema a modelar y
es en este conocimiento donde representan un papelprimordial los
usuarios finales del sistema, pues es en esta primera etapa de
modelización en laque el diseñador de la base de datos debe hacer
tantas entrevistas como sean necesarias con losusuarios para
conseguir comprender todas las especificaciones del problema. Una
vez conocidoslos objetivos y las necesidades se deberá pasar al
diseño propiamente dicho de la base de datos.
El modelo E/R, como todos los modelos, consiste en un conjunto de
conceptos, reglas ynotaciones que permiten formalizar la semántica
del mundo real que se pretende modelaren un diagrama
quedenominamos esquema de la Base de Datos.
El concepto de Modelo Relacional, específicamente el
llamado Modelo Entidad Relaciónes muy utilizado en la actualidad.
Este modelo es utilizado en la confección de las bases de datos y
muchas herramientas aplican su teoría.
Cuando se encara el proceso de diseño de una base de datos, lo
primero es ocuparse de la recolección de datos y el análisis de
requerimientos etapa durante la cual la persona encargada del
diseño visita a los futuros usuarios de la base de datos para así
poder conocer cuales son las características de lo que espera el
usuario de la base de datos. En esta etapa también deben
especificarse los requerimientos funcionales, los cuales consisten en
32
las operaciones definidas por el usuario o transacciones que se
aplicarán a la base de datos que incluyen la actualización y la
consulta de los datos.
El siguiente paso es la creación del llamado Esquema Conceptual.
Este esquema representa la descripción de los requerimientos del
usuario incluyendo características de los datos, las restricciones y
sus relaciones, este esquema no tiene características de
implementación, generalmente son más fáciles de entender y por
este motivo es muy útil para poder comunicarse con usuarios que no
son técnicos.
Este esquema conceptual sirve para controlar que todos los
requerimientos solicitados por el usuario estén incluidos.
Entidades y atributos.
33
sucursal, un alumno, un profesor, un cliente, un médico, un
contribuyente, etc.
Cada entidad tiene una serie de atributos que la describen, por
ejemplo la entidad libro tiene como atributos el ISBN (International
Standard Book Number) es el número por el cual se identifica a
cualquier libro en el mundo, el nombre del libro, el o los autores,
género, cantidad de páginas, editorial, idioma original, edición, etc.
La entidad empresa tiene como atributo el nombre, su número de
CUIT, su número de ingresos Brutos, dirección, teléfonos, localidad,
e-mail, etc. Una entidad en particular tendrá valores para cada uno
de sus atributos.
En el siguiente ejemplo observamos dos entidades y posibles
valores asociados.
Libros
ISBN: 968-444-399-4
Nombre: SISTEMAS DE BASES DE DATOS
Autor: Rames A Elmasri, Shamkant B
Navathe
Idioma original: Inglés.
Editorial: Prentice Hall.
Alumnos:
Apellido: De la Sierra
Nombre: Antonio Raúl
Fecha de Nacimiento: 10/02/1955.
Tipo Documento: DNI
Número Documento: 10.432.987
Tipos de Atributos.
En el modelo Entidad Relación se utilizan varios tipos de
atributos: simples o compuestos; monovaluados o multivaluados.
34
Los atributos multivaluados son aquellos que están compuestos de
otros atributos.
Por ejemplo el atributo dirección puede ser dividido en atributos más
simples como calle, número y localidad.
Los atributos compuestos son útiles cuando los usuarios se refieren
a veces al atributo compuesto como una unidad y otras veces se
refieren a cada uno de sus componentes.
Los atributos simples son por ejemplo los anteriores: Calle, número,
localidad, apellido, fecha de nacimiento, etc., es decir aquellos que
no pueden ser ya descompuestos.
Otro tipo de atributos son los monovaluados, como por ejemplo la
fecha de nacimiento de un alumno, o el nombre de un empleado, es
decir que pueden tomar un solo valor, también existen los atributos
multivaluados como por ejemplo el sexo de una persona que puede
tomar el valor de femenino o masculino, o la forma de realizar un
pago (contado, cheque, tarjeta de crédito).
Una entidad puede tener atributos que no poseen ningún valor, por
ejemplo el atributo dirección de e-mail puede ser nulo para una
persona que no lo posea.
35
Conjuntos de valores de los atributos (dominios).
Los atributos de una entidad pueden estar asociados a un conjunto
posible de valores o dominio que representan los valores posibles
que ese atributo puede tomar.
Vayamos a los ejemplos:
En el caso de un tipo de documento el dominio estará representado
por los siguientes valores:
DNI (Documento Nacional de Identidad)
CI(Cédula de Identidad)
LE(Libreta de Enrolamiento)
LC(Libreta Cívica)
36
incluso con el valor S que representa Si, pero en algún lugar de la
base de datos vamos a tener que almacenar que Ro significa Rojo.
Este punto quizás parezca absurdo pero tengamos en cuenta que
pueden existir millones de registros que necesiten almacenar uno de
estos valores y un mínimo ahorro significa mucho en el total, además
de ser una característica entre otras que determinan si una base de
datos es de cierta calidad.
Volviendo a los anteriores ejemplos observamos que los dominios
son de dos tipos aquellos que tienen valores fijos que pueden tomar
(Tipo de documento, color, etc) o aquellos que están representados
por rangos de valores (edad).
Relaciones
Otros de los elementos del modelo relacional son las
relaciones. Definimos como relación a una abstracción que muestra
la asociación entre entidades.
Una entidad puede estar conectada a una o más relaciones pero
nunca conectada directamente a otra entidad.
Veamos un ejemplo:
Representamos a los alumnos que cursan materias
37
El gráfico anterior representa lo siguiente: el alumno Garcia Juan
cursa Programación I, Perez María cursa Algebra y Bases de Datos,
Arias Pablo cursa Redes y Bases de Datos y Marcos Ana cursa
Algebra y Redes.
En el caso anterior cursa es la relación que está conectando a dos
entidades (Alumnos y Materias).
Veamos otro ejemplo, en este caso la relación entre Empleados y
Sectores de una empresa.
38
PROPIEDADES DE UNA RELACION
Las relaciones poseen una serie de propiedades que
debemos tener en cuenta,
Ellas son:
Grado
Conectividad
Condicionalidad
39
En el ejemplo anterior tenemos Algebra como materia correlativa de
Análisis Matemático, y a Programación I como correlativa de
Programación II.
Otro ejemplo es el de las estaciones de subte en donde una estación
es precedida por otra estación, en este caso también una estación
de la entidad estaciones está relacionada con otra estación de la
misma entidad.
En las relaciones de grado ternario son tres las entidades que
forman parte de la relación, este tipo de relación así como las
unarias no son muy comunes, en donde cada una de las tres
entidades está relacionada con las otras dos.
Un ejemplo puede ser la relación que existe entre un fabricante un
componente y un proyecto, veamos este ejemplo en forma abstracta.
40
Conectividad de una Relación
Por conectividad entendemos a la cantidad de instancias de
un objeto que participan en la relación con otro objeto.
De esta manera podemos encontrar relaciones que tienen una
cardinalidad de tipo 1:1 (decimos que la relación es de tipo uno a
uno), o de cardinalidad 1:M (decimos que es de tipo uno a muchos),
de cardinalidad M a 1 (de muchos a uno) y de cardinalidad M:N (de
muchos a muchos). Siempre que nos refiramos a las letras M, N o P
significa muchos.
Relación 1:1
Veamos un ejemplo de una relación de 1:1, con la relación
que existe entre una provincia y un gobernador, en este caso una
Provincia tiene un solo gobernador y un gobernador gobierna una
sola Provincia.
41
Relación 1:M
En este caso una instancia de una entidad se relaciona con una o
muchas instancias de la otra entidad, veamos un ejemplo:
42
Relación M:1
Una relación de tipo muchos a uno es similar a la del ejemplo
anterior todo depende del lugar en el cual se encuentra la entidad,
veamos un ejemplo en donde supuestamente un proveedor provee
una o más materias primas
Relación M:N
En este tipo de relación cada una de las instancias de la
primera entidad se relaciona con una o muchas instancias de la otra
entidad y viceversa es decir cada una de las instancias de la
segunda entidad se relaciona con una o muchas instancias de la
primera entidad, en el siguiente ejemplo tenemos las entidades libros
y autores en la cual un libro es escrito por uno o muchos autores y
por el otro lado un autor lo es de uno o muchos libros.
43
Condicionalidad de una relación
Con la propiedad condicionalidad estamos indicando si la
relación entre las entidades es obligatoria u opcional, lo que significa
determinar si existen o no instancias de ambas entidades que
forman parte de la relación.
Supongamos el siguiente ejemplo: las entidades son profesor y
materia la relación es dicta, en la cual una materia puede no tener
asignado ningún profesor, y un profesor puede dictar varias
materias. Otro ejemplo puede ser en la relación pacientes y médicos
en una clínica un médico puede no atender a ningún paciente ya que
puede ser el director de la clínica.
44
Del ejemplo anterior observamos que si bien la relación es de
cardinalidad M a N, el médico M2 no atiende a ningún paciente por
lo tanto esta relación es condicional.
Otro ejemplo es el caso de la relación unaria que vimos más arriba
que también es condicional ya que por ejemplo la materia Estructura
de un Computador o cualquiera de las materias de primer año no
tienen correlativas.
45
Elementos de un Diagrama Entidad Relación.
Entidades.
Las entidades son uno de los elementos que forman parte de
un DER, una entidad es representada con un rectángulo donde en
su interior se escribe el nombre de la entidad, según el autor que se
consulte, en el DER pueden o no estar incluidos los atributos de la
entidad, en nuestro caso no incluiremos los atributos en el DER,
estos quedarán descriptos en el Diccionario de Datos que veremos
más adelante.
Ejemplos:
Clientes
Relaciones.
Las relaciones son otro de los elementos que forman parte de
un DER, y son representados mediante un rombo, donde en su
interior se escribe el nombre de la relación, para este nombre se
utiliza o un verbo que representa la asociación entre las dos
46
entidades que relaciona o el nombre de las dos entidades separadas
por un guión.
Veamos un ejemplo.
Para una relación que conecta Médicos con Pacientes. Las dos
opciones son las siguientes:
Medicos-
Médicos Pacientes
Pacientes
47
Se lee de la siguiente manera: un médico tiene uno o muchos
pacientes (N) y un paciente tiene uno o muchos médicos (M).
Observemos con cuidado la manera en la que se expresa la
cardinalidad en una relación. Ahora estudiamos en profundidad la
forma de expresar la cardinalidad, cuando aparece 1,M significa que
un paciente está relacionado como MÍNIMO con un médico y como
MAXIMO con M o muchos médicos, y para el caso inverso, un
médico está relacionado como MINIMO con un paciente y como
MAXIMO con muchos en este caso representado con la letra N.
Veamos otros ejemplos que representan la cardinalidad de una
relación
Para una relación de 1:1.
1,1 1,1
Esposos Tiene Esposas
1,1 1,M
Proyectos Trabaja Empleados
48
Significa que un empleado trabaja en un proyecto como mínimo y
un proyecto como máximo y en un proyecto trabajan uno o muchos
empleados.
Para una relación de M:1
1,M 1,1
Facturas Tiene Clientes
1,M 1,N
Canciones Tiene Com positores
1,1 0,M
Materias
Alumnos Tiene
Aprobadas
49
En donde un alumno no tiene aprobada ninguna o muchas materias,
ninguna puede ser para el caso de un alumno que recién se inscribe
en primer año ytodavía no aprobó ningún final.
Para el caso 1,1 condicional.
50
1,M 1,N
Proyecto Tiene Empleado
1,P
En este caso un proyecto está relacionado con un empleado
Producto
51
1,M 1,N
Locadores Locatarios
Contratos de
Alquiler
1,M 1,N
Médicos Pacientes
Tratamientos
52
1,M 1,1
Empleados Proyectos
Hojas de
actividad
1,M 1,N
Materias Profesores
Cursos
53
identificador y llamamos al tipo de relación que conecta un tipo de
entidad débil con su propietario el vínculo identificador.
Los tipos de entidades débiles siempre tienen una restricción de
participación total ya que un tipo de entidad débil no se puede
identificar sin una entidad propietaria.
Aunque no siempre la restricción de participación total significa que
exista la entidad débil ya que una entidad Licencia de Conductor
debe su existencia al propietario de la licencia pero no es entidad
débil pues Licencia de conductor tiene atributo clave propio que es el
número de la licencia.
Los tipos de entidades débiles por lo general tienen una clave parcial
que es el conjunto de atributos que pueden identificar a las
entidades débiles relacionadas con la entidad propietaria.
Entidad
Propietaria
Entidad
débil
54
El conjunto de instancias de cada una de estas agrupaciones es un
subconjunto de la entidad. Por ejemplo dada la entidad empleado
existen diferentes subgrupos: secretarias, técnicos, administrativos,
etc., lo que significa que toda entidad que sea miembro de una de
estas subagrupaciones también será un empleado.
Cada una de estas subagrupaciones es un subtipo de la entidad
empleado y empleado es supertipo de cada uno de estos subtipos.
55
Empleados
56
Empleados
Empleados
Técnicos
57
Dibujar el DER según la notación de la herramienta.
Eliminar elementos redundantes o fuera del alcance del
sistema.
58
Una relación debe conectarse a una o más entidades.
59
Lo siguiente no puede suceder, la entidad G está conectada
directamente a la entidad H en un DER, pero si en otro tipo de
diagramas, los diagramas de tablas.
Ejercicio resuelto
Empresa Constructora de Edificios:
Esta empresa cuenta con una nomina de personal disponible para
poder ser asignado a las diferentes obras. Una persona puede estar
asignada a una o mas obras, y en una obra pueden trabajar una o
mas personas, de esta asignación debe aparecer una ficha de
actividad de las personas en las obras, en donde debe figurar la
fecha, la hora y la actividad realizada.
Toda persona esta especializada en una o mas tareas, y una tarea
puede ser realizada por una o mas personas de la empresa
(ejemplos frentista, colocador de azulejos, electricistas, yeseros,
etc.).
Toda obra además del personal propio puede tener asignado
profesionales para realizar aquellas tareas con la que no existe
personal especializado (como es el caso de algún ingeniero que
estudie el suelo para saber si este puede resistir los pisos que se
desean construir, o el impacto ambiental de la obra, etc.), por este
60
motivo un profesional puede estar asignado a una o mas obras y una
obra puede contar con la colaboración de ninguno o muchos
profesionales.
Toda obra necesita contar con una serie de recursos como ser
mezcladoras de cemento, martillos neumáticos, inyectores de
hormigón, etc. y un recurso puede ser usado en ninguna o muchas
obras. Por cada recurso usado en cada obra debe figurar una
planilla de uso del recurso, en donde se debe almacenar las fechas
en el que fue utilizado y si sufrió roturas.
Los recursos pueden pertenecer o no a la empresa constructora, en
el caso que no lo sean, estos se pueden alquilar a un proveedor, por
lo cual se deberá confeccionar un contrato de alquiler.
61
1,M 1,N
Pers onal Obras
1,M
1,M 0,M
Tiene
Trabaja
Ficha de
actividad
0,N
1,N
Profesionales
Tareas
1,N
Planilla de
Recursos
us o
0,N
Contrato de
alquiler
0,M
Proveedores
62
Ejercicio resuelto
Armado de Televisores
Esta empresa se encuentra ubicada en Tierra del Fuego y se dedica
al armado de televisores.
Las componentes de los televisores pueden ser comprados a un
importador, en tal caso la compra viene acompañada de la factura,
otras piezas son fabricadas en la empresa, para lo cual esas piezas
tienen asignado un operario que se dedica exclusivamente a un tipo
de pieza, aunque una pieza puede ser fabricada por mas de un
operario, el operario completa una hoja de confección con las la
fecha y la cantidad fabricada..
Los diferentes modelos de televisores están compuestos por 300 o
más piezas, aunque una pieza puede estar incorporada en más de
un televisor, existe un mapa de armado para cada modelo de
televisor donde se indica la ubicación y el orden de las piezas que lo
componen.
63
DICCIONARIO DE DATOS.
Vamos a utilizar el diccionario de datos para describir los
elementos que forman parte de un DER.
Relación
@identificador1 + @identificador2 (caso 1:1).
64
{@identificador1} + @identificador2 (caso N:1).
{@identificador1} + {@identificador2} (caso m:n).
Entidades
65
TAREAS = @Codigo_Tarea + Denominación + Caracteristicas +
Observaciones.
Relaciones
Entidades
66
TELEVISORES = @Cod_Televisor + Modelo + Caracteristicas.
Relaciones
Ejercicio resuelto
Consideremos la carrera de Analista de Sistemas que ustedes están
cursando:
Sabemos que contamos con Alumnos, Profesores, Materias, Cursos
(cuando tenemos una materia le asignamos un profesor), Materias
Cursadas por los alumnos, Finales rendidos por los alumnos,
además las materias tienen correlativas.
Analizar toda esta información que disponemos y construir un
Diagrama Entidad Relación y su Diccionario de Datos.
67
Observen con cuidado cada una de las entidades, las relaciones, las
características de las relaciones como la conectividad y la
condicionalidad, los tipos de objetos asociativos como son los
Cursos y Materias Cursadas por Alumnos.
Intenten resolverlo, les envío además la resolución de este ejercicio,
y por favor me lo envían para la corrección, aunque les quede muy
diferente a la resolución.
Resolución
Veamos la relación que existe entre Materias Cursadas por Alumnos
y Finales rendidos, una Materia Cursada por un Alumno está
relacionada con un 0,2 con Finales Rendidos, esto es porque un
alumno que aprobó la cursada de una materia, todavía no rindió para
esa materia ningún final, y como máximo dos finales ya que se
disponen de dos oportunidades de rendir un final por la cursada.
68
Diccionario de Datos:
Entidades
69
Finales_Rendidos: @(Nro_Matrícula + Nro_Curso + Fecha_Final) +
Código_Materia + Calificación.
Ejercitación.
Se animan a pensar como resolverían estos temas?
Ejercicio resuelto
70
proyecto, la fecha en la que comenzó a trabajar en el proyecto y la
fecha de finalización de su trabajo que puede ser nula.
Un empleado tiene una categoría y una categoría puede tener uno o
muchos empleados, dentro de las categorías encontramos a los
asistentes, juniors, semi seniors, seniors.
Todo proyecto puede tener asociado ninguno o varios proveedores
de equipamiento, y un proveedor puede serlo de uno o varios
proyectos de los cuales surgen las condiciones de contratación.
1,N 1,N
Planilla de
Actividades
Emp - Cat
Condiciones
1,1 de 0,N
Contratación
Categorias Proveedor
Diccionario de Datos:
Entidades
71
Categorias: @Cod_Categoria + Descripcion_Categoria.
Condiciones_de_Contratacion:@Cod_Proyecto + @Cod_Proveedor
+ Condiciones_Contratacion
Relaciones
Ejercitación.
1) Fábrica de Lavarropas:
Esta empresa Argentina ubicada en la zona sur del Gran Buenos
Aires, fabrica distintos modelos de lavarropas para ser vendidos en
el mercado interno.
Un modelo de lavarropas esta compuesto por 15 o mas piezas y una
pieza puede componer uno o mas modelos de lavarropas, como
consecuencia de esto surgen las condiciones del armado del
72
lavarropa donde figura la ubicación de la pieza y las condiciones
para su colocación.
Las piezas pueden ser fabricadas por uno o más operarios y un
operario puede fabricar una o mas piezas, debe existir una orden de
fabricación que le es entregada al operario.
Algunas piezas son compradas a uno o mas proveedores externos y
un proveedor puede serlo de una o mas piezas, como consecuencia
de esta compra debe existir una orden de compra.
Los distintos modelos son vendidos a uno o mas Negocios
Minoristas y un Negocio Minorista puede comprar uno o mas
modelos, es necesario guardar la información de las compras del
mes que se realizaron.
73
UNIDAD 3: DISEÑO FISICO DE UNA BASE DE DATOS.
Objetivosdelaunidad 3:
Al término de la unidad el alumno identificará los elementos
que forman una base de datos física, podrá diseñar la estructura de
la base de datos a partir de los elementos aprendidos en la unidad 2.
Introducción
Anteriormente vimos como se construía una base de datos
desde el punto de vista lógico, ahora vamos a estudiar como se
construye una base de datos físicamente.
Luego de haber estudiado el Diagrama Entidad Relación conocimos
las entidades, las relaciones, los tipos de objeto asociativos, los
supertipos y subtipos etc., estos elementos lógicos serán
transformados en esta instancia en elementos físicos como ser por
ejemplo las tablas de una base de datos, empecemos por definirla:
TABLAS
Una tabla es un conjunto de datos sobre algún tema
específico como por ejemplo alumnos, profesores, empleados,
proveedores, libros, automóviles, pacientes, clientes, medicamentos,
etc.
Las tablas organizan los datos en columnas que las conocemos con
el nombre de campos y las filas conocidas como registros.
Clave Primaria
Es el conjunto de aquellos campos cuyos valores puede
identificar un registro de otro dentro de una tabla en forma unívoca.
74
La clave primaria por definición debe estar formada por la menor
cantidad posible de atributos, esta característica de las claves
primarias se las conoce como propiedad de minimalidad.
Clave Única.
Una clave única es también un atributo o conjunto de atributos
que identifican unívocamente a un registro de la tabla entre otros
registros de la tabla, pero a diferencia de la clave primaria, pueden
existir o ninguna, una o varias claves únicas.
75
La clave primaria también es una clave única, la diferencia es que
por definición la clave primaria debe ser o la más importante para
nuestra tabla o tener la menor cantidad de atributos.
La clave única se la conoce en inglés con el nombre de
Unique-Key. (se pronuncia iunic ki).
Ejemplos
Para la tabla Clientes la clave primaria podría ser nro_cliente y una
clave única formada por los dos campos tipo documento y número
documento.
Clave Foránea.
La clave foránea es un campo o conjunto de campos de una
tabla que son la clave primaria o clave única de la otra tabla con la
cual está relacionada.
Se la conoce en inglés como Foreign-Key
Veamos un ejemplo:
76
Clave Secundaria.
Es un campo o conjunto de campos que permiten recuperar
registros en forma rápida dentro de un objeto que cumplen con
determinada propiedad, en la próxima unidad veremos como se
crean cuando estudiemos Índices en SQL.
Conjunto A
Sistema Operativo
Unix
Multiusuario
77
Decimos entonces que el elemento Unix tiene Dependencia
Funcional Completa con el conjunto A, ya que Unix está relacionado
con todos los elementos del conjunto A.
Conjunto A
Sistema Operativo
Unix
Multiusuario
Fácil de usar
NORMALIZACION
Definiciónde Normalización
78
Es un conjunto de reglas y procedimientos que permiten
definir una estructura de datos simple y estable frente a los cambios.
Definición:
Una estructura de datos sin grupos repetitivos está
automáticamente en Primera Forma Normal.
Técnica de Construcción.
Veamos como transformamos una estructura para que quede en
primera forma normal
79
2)_ De las claves únicas, seleccionar la clave primaria.
3)_ Dividir el objeto en tantos objetos como sean necesarios para
separar los grupos repetitivos.
Definición:
Un objeto está en Segunda Forma Normal si está en Primera
Forma Normal y además todos los atributos no clave tienen
dependencia funcional completa con la clave primaria.
Técnica de Construcción
Si la clave primaria está compuesta por más de un atributo,
verificar que cada atributo que no pertenece a la clave primaria
depende de toda la clave y no solamente de una parte. Dividir el
objeto si es necesario para lograr este objetivo.
Si la clave primaria esta compuesta de un solo atributo la estructura
ya se encuentra en segunda forma normal.
80
Factura_Cabecera = @#factura + #cliente + nombre cliente + fecha
+ precio total.
Definición
Un objeto está en Tercera Forma Normal si está en Segunda
Forma Normal y además todos sus atributos que no son clave
primariasean independientes entre sí.
Técnica de Construcción
Verificar que todos los atributos no clave sean mutuamente
independientes entre si. Suprimir atributos redundantes o dividir los
objetos.
Ejemplo:
Factura_Cabecera = @#factura + #cliente + fecha.
81
Articulo = @#artículo + nombre artículo + precio unitario.
82
Remiseria = @nro_habilitacion + CUIT + Razon_Social + Direccion
+ Telefono (la estructura queda sin cambios porque ya se
encuentra en segunda forma normal).
Luego queda:
83
Shoping = @Numero_Shoping + Nombre_Shoping +
Domicilio_Shoping + Localidad_Shoping + Codigo_Postal_Shoping
+CUIT_Shoping.
Dueños=@Tipo_Documento_Dueño+
@Numero_Documento_Dueño + Apellido_Dueño_Local +
Nombre_Dueño_Local
84
Donde Tipo_Documento_Dueño y Numero_Documento_Dueño de
Locales es clave foránea a la tabla Dueños.
85
Cliente = @Nro_Cliente + Apellido + Nombre +
Cod_Pais_Nacimiento + Telefono + Domicilio + Codigo_Postal
86
Segunda Forma Normal:
87
depende del Nro_Proveedor, lo mismo ocurre con el CUIT
Proveedor, entonces como estos atributos no clave dependen entre
si, dividimos la estructura. Finalmente nos queda así:
88
Sucursales = @Nro_Empresa + @Nro_Sucursal +
Dirección_Sucursal + Localidad_Sucursal
89
Relación 1:1
Para una relación entre dos entidades del Diagrama Entidad
Relación de grado 1:1, se debe elegir una de las entidades y agregar
como atributo en una entidad la clave primaria de la otra entidad.
Consideremos las dos entidades A y B.
1,1 1,1
A Tiene B
A = @A1 + A2 + A3 + A4.
B = @B1 + B2 + B3 + B4.
Luego queda:
A = @A1 + A2 + A3 + A4.
B = @B1 + B2 + B3 + B4 + A1.
Observemos que la clave primaria de la entidad A pasa a formar
parte como atributo de la entidad B.
Relación 1:N
En el caso que la relación entre dos entidades sea del tipo
1:N, agregar como atributo en la entidad que tiene el grado de N, la
clave primaria de la otra entidad.
1,1 1,N
A Tiene B
A = @A1 + A2 + A3 + A4.
B = @B1 + B2 + B3 + B4 + A1.
Vemos que la entidad B es la que tiene el grado N, es decir un
elemento de la entidad A está relacionado con uno o muchos de la
entidad B.
90
Similar solución es aplicable en el caso que la relación sea de tipo
N:1.
Relación N:1
1,N 1,1
A Tiene B
A = @A1 + A2 + A3 + A4
B = @B1 + B2 + B3 + B4
Luego queda:
A = @A1 + A2 + A3 + A4.+ B1
B = @B1 + B2 + B3 + B4.
En este caso la que tiene la cardinalidad de N es A, por eso la clave
primaria de B pasa como atributo a la tabla A.
Relación N:M
Para el caso en que la relación sea del tipo N:M(es decir una
relación de muchos a muchos), se debe crear una nueva tabla que
hará de nexo entre las otras dos, teniendo como atributos las claves
primarias de las entidades de las cuales hace de nexo.
1,N 1,M
A Tiene B
A = @A1 + A2 + A3 + A4.
B = @B1 + B2 + B3 + B4.
91
Luego obtenemos las siguientes tres tablas:
A = @A1 + A2 + A3 + A4.
B = @B1 + B2 + B3 + B4.
C = @A1 + @ B1.
A = @A1 + A2 + A3 + A4.
B = @B1 + B2 + B3 + B4.
C = @A1 + @B1 + C1 + C2 + C3.
Supertipos y Subtipos
En el caso de super tipos y sub tipos, los super tipos, son
tratados como un objeto, en el caso de los sub tipos asociados,
deberán poseer la clave primaria del super tipo más los atributos que
le son propios.
Siendo A el Super Tipo y A1, A2 los subtipos:
92
Las tablas quedan así:
A = @A1 + A2 + A3 + A4.
A1 = @A1 + A11 + A12 + A13 + A14.
A2 = @A1 + A21 + A22 + A23 + A24.
Relación Ternaria
En el caso de una relación ternaria, es decir que en la relación
intervienen 3 entidades, se deberán crear 3 nuevas tablas que harán
de nexo entre las entidades.
A = @A1 + A2 + A3 + A4.
B = @B1 + B2 + B3 + B4.
C = @C1 + C2 + C3+ C4.
A = @A1 + A2 + A3 + A4.
B = @B1 + B2 + B3 + B4.
C = @C1 + C2 + C3+ C4.
A-B = @A1 + @B1.
93
A-C = @A1 + @C1.
B-C = @B1 + @C1.
DIAGRAMA DE TABLAS.
Cuando estudiamos en la unidad anterior el Diagrama Entidad
Relación, dijimos que representaba la relación entre diferentes
objetos como son las entidades, tipos de objeto asociativo,
supertipos y subtipos, ya conocimos que significa la normalización y
como las relaciones del Diagrama Entidad Relación son
94
representadas físicamente en tablas, emplearemos todos estos
conocimientos para construir un Diagrama de Tablas.
Veamos un ejemplo:
Continuamos con el ejemplo visto en la unidad 3, Armado de
Televisores.
Ahora normalizamos
95
Componentes se encuentra en primera, segunda y tercera forma
normal.
Diagrama de Tablas
Operarios
96
Telefono char(15)
Tipo_doc char(3) obligatorio
Numero_doc number(8) obligatorio
Televisores
Importador
Componentes
Mapa_de_Armado
97
Ubicación char(50)
Cod_componente y Cod_televisor son clave primaria.
Hoja_de_Confeccion
Ejercicio Resuelto:
Dado el siguiente Diagrama Entidad Relación y su Diccionario de
Datos, construir el Diagrama de Tablas y su Diccionario de Datos
asociado.
Diccionario de Datos
Ritmo = @#Ritmo + Nombre_Ritmo + Características.
98
Profesor = @#Profesor + Apellido_Profesor + Nombre_Profesor.
Alumno = @#Alumno + Apellido_Alumno + Nombre_Alumno.
Examen_Rendido = @#Ritmo + @#Alumno + @Fecha +
Calificación.
Diagrama de Tablas
Ritmo Profesor
Examen
Rendido
Alumno
99
Examen_Rendido = @#Ritmo + @#Alumno + @Fecha + Calificación
+ #Profesor
(Donde #Profesor será una foreign key hacia la tabla profesor).
Ejercicio Resuelto:
1,1
Recorrido
Diccionario de Datos
Locomotora = @#locomotora + Modelo + Marca + Año Fabricación +
Potencia.
Maquinista = @#Legajo + Apellido + Nombre + Tipo Documento +
#Documento + Fecha Nacimiento
Recorridos = @#Recorrido + Estación Salida + Hora Salida+
Estación Llegada + Hora Llegada + Cantidad de Estaciones.
Viaje = @#locomotora + @#Legajo + @fecha + Día Salida + Hora
Salida Efectiva + Día llegada + Hora Llegada Efectiva.
100
Diagrama de Tablas.
Locomotora Maquinista
Viaje
Recorrido
Ejercitación.
101
Aplicar normalización si es necesario.
1,M
0,M
1,N
1,N
Compañía
Banda o Solista Grabación
Grabadora
102
Ejercitación.
Considerando el enunciado que se encuentramas arriba sobre
Empresa Constructora de Edificios del cual contamos con el
Diagrama Entidad Relación y su Diccionario de Datos asociado se
pide.
a) Aplicar la técnica de Normalización.
b) Construir el Diagrama de Tablas.
c) Construir el Diccionario de Datos del Diagrama de Tablas.
103
UNIDAD 4: SQL – LENGUAJE ESTRUCTURADO DE
CONSULTA
Objetivo de la unidad 4:
Al término de la unidad el alumno podrá construir una base de
datos relacional, modificar su estructura y realizar consultas,
ingresos y modificación de la información que se encuentra
almacenada aplicando el lenguaje SQL.
Introducción.
El SQL (Lenguaje Estructurado de Consulta), (que se
pronuncia deletreando en inglés las letras que lo componen, es decir
"ese-cu-ele") comienza a desarrollarse en 1974 en los laboratorios
de investigación de IBM, con la creación de un lenguaje para la
especificación de las características de las bases de datos que
utilizaban el modelo relacional, con la definición, por parte de Donald
Chamberlin y de su equipo.
Este lenguaje se llamaba SEQUEL (Structured English Query
Language) y se implementó en un prototipo llamado SEQUEL-XRM
entre 1974 y 1975. Las experimentaciones con ese prototipo 1
El American
condujeron, entre 1976 y 1977, a una revisión del lenguaje National Standards
Institute (ANSI) es
(SEQUEL/2), que a partir de ese momento cambió de nombre por una organización
104
se convierte en el estándar industrial de hecho por lo que respecta a
las bases de datos relacionales.
En 1986, el ANSI1 adoptó SQL como estándar para los lenguajes
relacionales y en 1987 se transformó en estándar ISO(International
Organization for standardization).
Esta versión del estándar va con el nombre de SQL/86. En los años
siguientes, éste ha sufrido diversas revisiones que han conducido
primero a la versión SQL/89 y, posteriormente, a la actual SQL/92.
El hecho de tener un estándar definido por un lenguaje para bases
de datos relacionales abre potencialmente el camino a la
intercomunicabilidad entre todos los productos que se basan en él.
Desde el punto de vista práctico, por desgracia las cosas fueron de
otro modo. Efectivamente, en general cada productor adopta e
implementa en la propia base de datos sólo el corazón del lenguaje
SQL.
Actualmente, está en marcha un proceso de revisión del lenguaje
por parte de los comités ANSI e ISO, que debería terminar en la
definición de lo que en este momento se conoce como SQL3. Las
características principales de esta nueva encarnación de SQL
deberían ser su transformación en un lenguaje stand-alone (mientras
ahora se usa como lenguaje hospedado en otros lenguajes) y la
introducción de nuevos tipos de datos más complejos que permitan,
por ejemplo, el tratamiento de datos multimediales.
El SQL es un lenguaje simple, estructurado y muy poderoso que nos
permite definir, consultar y modificar los datos de una base de datos
relacional.
Sus operaciones las realiza sobre las llamadas tablas en donde
existen filas y columnas en base a las que se almacenan los datos.
Antes de comenzar con el estudio del lenguaje definiremos las
siguientes tablas con las cuales vamos a trabajar, tablas que
podríamos encontrar en el sistema del instituto, estas cinco tablas
son solo una parte de las que encontramos en la realidad.
105
Alumnos
Nro_ Apellido Nombre Tipo_Doc Nro_Doc Sexo Pais_Nacimiento
Alumno
1 Garcia Jose Ramon DNI 10.455.656 M AR
2 Martinez Analia DNI 16.776.543 F AR
3 Arias Adrian Marcelo DNI 23.878.652 M PE
4 Perez Maria Evangelina DNI 20.881.330 F AR
5 Sosa Aldo DNI 10.878.767 M BO
Materias
Cod_Materia Denominación Carga_horaria Año_Carrera
A1 Programacion I 8 1
A2 Algebra 4 1
A3 Estructura de un 4 1
Computador
A4 Ingles Tecnico 2 1
A5 Teoría de Sistemas 2 1
A6 Análisis Matemático 2 2
A7 Bases de Datos 2 2
A8 Etica Profesional 2 2
A9 Probabilidad y 4 2
Estadística
A10 Programación II 8 2
A11 Redes 4 2
A12 Administración de 6 3
Proyectos
A13 Análisis y Diseño de 6 3
Sistemas
A14 Estructura e 4 3
Información de las
Organizaciones
A15 Investigación 4 3
Operativa
A16 Desarrollo e 8 3
Integración
Profesional
106
Materias Correlativas
Cod_Materia Cod_Materia_Correlativa
A6 A2
A7 A1
A7 A3
A8 A5
A9 A6
A10 A1
A11 A3
A12 A7
A12 A10
A12 A14
A13 A7
A13 A10
A13 A14
A14 A2
A15 A9
A16 A12
A16 A13
A16 A15
Finales Rendidos
Cod_Materia Nro_Alumno Fecha_Final Nota
A1 1 10/03/2000 6
A2 3 03/03/2000 2
A1 4 12/12/2000 7
A3 1 13/12/2000 9
A3 2 20/12/2003 4
A4 1 10/03/2005 5
A5 4 02/03/2009 8
Países
Pais_Nacimiento Nombre_Pais
AR Argentina
PE Perú
BO Bolivia
UR Uruguay
107
Veamos el Modelo de Datos de las cinco tablas anteriores.
108
LENGUAJE DE DEFINICIÓN DE DATOS (DDL)
CREATE TABLE
Esta instrucción nos permite crear tablas, pudiendo
determinar los campos que la forman, los tipos de datos, si los
campos admitirán valores nulos o no entre los valores que
almacenarán y la definición de la clave primaria, claves únicas y
foráneas.
Veamos como se usa la instrucción con la definición de las
anteriores tablas.
109
de los campos tipo_doc y nro_doc y su clave primaria compuesta por
el campo nro_alumno y una clave foránea con el campo
pais_nacimiento que apunta al campo pais_nacimiento de la tabla
paises.
Ahora vamos a crear las otras tablas:
110
relaciona el nro_alumno de la tabla finales rendidos con el campo
nro_alumno de la tabla alumnos.
Como podemos observar estacuarta tabla creada se encuentra
relacionada con tablas creadas anteriormente.
Ahora creamos la última tabla.
DROP TABLE.
Esta instrucción sirve para eliminar una tabla, borra los datos
de la tabla y la estructura de la tabla. Se describe de la siguiente
manera.
DROP TABLEalumnos;
DROP TABLE materias;
DROP TABLE finales_rendidos;
DROP TABLE materias_correlativas;
111
Las instrucciones anteriores eliminan las tres tablas anteriormente
creadas.
ALTER TABLE.
Con esta instrucción podemos modificar la estructura de la
tabla, por ejemplo podemos agregar un nuevo campo a una tabla ya
creada, agreguemos el campo fecha_nacimiento de tipo DATE a la
tabla alumnos.
112
fecha_nacimiento DATE
email CHAR(30)
113
DROP TABLE y volver a crearla con la nueva estructura, y si la tabla
tiene datos habrá que previamente salvar los datos para después
volver a insertarlos en la tabla. Esta característica produce que en la
realidad que queden campos que no se utilizan debido a los cambios
que se producen en las tablas, pero si bien esto es cierto en el SQL
Standard que vemos acá, algunos SQL están permitiendo que se
pueda eliminar un campo con algún adicional.
INSERT.
La instrucción INSERT permite insertar filas a una tabla,
comencemos con la tabla paises.
114
VALUES
(“UR”, “Uruguay”);
115
INSERT INTO alumnos
(nro_alumno, apellido, nombre, tipo_doc, nro_doc, sexo,
pais_nacimiento)
VALUES
(5, “Sosa”, “Aldo”, “DNI”, 10878767, “M”, “BO”);
116
INSERT INTO materias
(cod_materia, denominacion, carga_horaria, anio_carrera)
VALUES
(“A5”, “Teoria de Sistemas”, 2, 1);
117
VALUES
(“A11”, “Redes”, 4, 2);
118
VALUES
(“A1”, 1, “10/03/2000”, 6)
119
Por último trabajemos con la tabla materias_correlativas.
120
INSERT INTO materias_correlativas
(cod_materia, cod_materia_correlativa)
VALUES
(“A11”, “A3”);
121
VALUES
(“A13”, “A14”);
DELETE.
Esta instrucción utiliza para borrar filas de una tabla dada una
condición.
122
Supongamos que queremos borrar todas las filas de la tabla
alumnos, la sintaxis es la siguiente.
DELETE FROM alumnos;
123
DELETE FROM materias
WHERE denominacion = “Algebra”
DELETE alumnos
WHEREnro_alumno > 3;
En este caso utilizando el símbolo matemático de mayor >,
eliminamos todos los alumnos sean o 4 o superior, entonces para
nuestro ejemplo eliminamos a los alumnos con el nro_alumno 4 y 5.
DELETE alumnos
WHERE apellido < “B”;
Con esta instrucción estamos borrando a todos los alumnos cuyo
apellido empiece con la letra “A”, en nuestro ejemplo eliminamos al
alumno Arias Adrián Marcelo.
DELETE alumnos
WHERE apellido > “Perez”;
En nuestro caso eliminamos aquellos alumnos que en orden
alfabético aparezcan después de Perez, es decir a Sosa Aldo.
DELETE paises
WHERE nombre_pais >= “Perú”;
Estamos eliminando a Perú y a Uruguay.
DELETE alumnos
124
WHERE nro_doc <= 20000000;
Estamos eliminando a aquellos alumnos cuyo número de documento
sea menor o igual a 20 millones, en nuestro caso eliminamos a
García José Ramón, Martinez Analía y Sosa Aldo.
DELETE finales_rendidos
WHERE nota >< 2;
En nuestro caso todas las filas a excepción de una serán eliminadas.
DELETE alumnos
WHERE nro_alumno> 2 ANDnro_alumno <= 4;
DELETEfinales_rendidos
WHERE nro_alumno > 3 AND nota >= 8;
Observemos que se deben cumplir las dos condiciones es decir que
el nro_alumno sea mayor que 3 y que la nota se 8 o mayor.
En nuestro caso eliminamos la fila del cod_materia “A5”, nro_alumno
4, fecha final “02/03/09” y nota 8.
125
Necesitamos eliminar de la tabla finales_rendidos aquellas filas que
tengan en el campo nota un número menor o igual a 3o una nota
mayor o igual a 9.
DELETE finales_rendidos
WHERE nota <= 3 ORnota >= 9;
Estamos eliminando aquellas filas de los alumnos que tengan como
nota de final un 3 o menos y los que tienen como nota un 9 o 10.
DELETE finales_rendidos
WHERE (nro_alumno >=3 AND nro_alumno <= 4) ORnota = 5;
DELETE finales_rendidos
WHERE cod_materia = “A99”;
En este caso no eliminamos ninguna fila ya que no existe ningún
cod_materia con valor “A99”.
Actividad
126
servalores de jugadores reales, no se olviden de incluir las claves
primarias y la clave foránea.
UPDATE.
Esta instrucción se utiliza para modificar filas en una tabla,
Es decir modificamos los valores de los campos que se encuentran
almacenados.
Veamos algunos ejemplos. Si queremos modificar el apellido de un
alumno con nro_documento 104556565, por Garcia Veron.
UPDATE alumnos
SET apellido = “Garcia Veron”
WHERE nro_doc = 10455656;
Observamos que luego de la palabra SET, figuran primero en campo
que se desea modificar, el símbolo = y después el nuevo valor.
UPDATE alumnos
SET tipo_doc = “LE”,
nro_doc = 48769098
WHERE tipo_doc = “DNI”
AND nro_doc = 104556565;
127
Si no incluimos la cláusula WHERE no estaríamos restringiendo por
ninguna condición y modificaríamoslos dos campos de todos los
alumnos.
Este sería el caso.
UPDATE alumnos
SET tipo_doc = “LE”,
nro_doc = 48769098;
UPDATE materias
SET carga_horaria = 6
WHERE carga_horaria = 4 ANDaño_carrera = 1;
UPDATE materias
SET carga_horaria = carga_horaria + 1
WHERE año_carrera = 3;
UPDATE alumnos
SET tipo_doc = “CI”
128
WHERE tipo_doc = “XY”;
En este caso no se realiza ninguna modificación ya que no existe
ningún alumno que tenga en el campo tipo_doc el valor “XY”
Actividad
UPDATE Películas
SET genero = “Drama”
WHEREgenero = “Documental”
AND (Cod_Pelicula < 10 AND Cod_Pelicula > 12)
CONTROL DE TRANSACCIONES
Cuando utilizamos las instrucciones INSERT, UPDATE y
DELETE estas modificaciones en los datos sólo pueden ser vistas
por el usuario que las realizó. Esto sucede porque estas
129
instrucciones no modifican los datos de la base, para que las
modificaciones se hagan efectivas existen instrucciones para
confirmar o desechar la modificación. Son los llamados instrucciones
para el control de transacciones:
COMMIT: esta instrucción realiza efectivamente las modificaciones
en la base de datos. Desecha todos los SAVEPOINT activos.
Supongamos que sobre una misma base de datos trabajan dos
personas las llamamos el usuario 1 y el usuario 2.
El usuario 1 realiza la siguiente operación
130
ROLLBACK (TO (nombre del SAVEPOINT)); vuelve las
modificaciones realizadas sobre la base de datos después del último
COMMIT o hasta el SAVEPOINT que sea especificado.
SAVEPOINT puntoa;
ROLLBACK TO puntoa
Elimine el insert de la alumna Ruiz Rosa.
Algunas aclaraciones:
El nombre del savepoint puede ser cualquiera nombre,
como si fuera el nombre de una variable en Pascal.
Puedo trabajar con más de un savepoint.
131
En el ejemplo anterior si después del segundo insert
ejecuto la instrucción COMMIT, y luego ejecuto
ROLLBACK TO puntoa, esta no tiene ningún efecto, ya
que los cambios se hicieron efectivos en la base de datos.
SELECT
La instrucción SELECT nos permite realizar consultas simples
y muy complejas, de esta manera podemos obtener información de
una Base de Datos
Esta instrucción presenta muchas características que estudiaremos
paso a paso.
Vemos la sintaxis de esta instrucción en su forma más simple,
supongamos que queremos obtener los nombres y apellido de todos
los alumnos
Nombre Apellido
Jose Ramon Garcia
Analia Martinez
Adrian Marcelo Arias
Maria Evangelina Perez
Aldo Sosa
132
SELECT nro_alumno,
apellido,
nombre,
tipo_doc,
nro_doc,
sexo,
pais_nacimiento
FROMalumnos;
SELECT *
FROMalumnos;
133
SELECT nro_alumno,
apellido,
nombre
FROMalumnos
WHERE sexo = ‘M’;
El resultado es el siguiente:
SELECTnro_alumno,
apellido,
nombre
FROMalumnos
WHERE sexo = 'F'
AND pais_nacimieto = “AR”
El resultado es el siguiente:
134
criterio puede tener incluida la cláusula AND, el uso de paréntesis o
la cláusula OR y de esta manera poder realizar filtros complejos,
veamos un ejemplo:
Obtener el numero de alumno, el apellido y el nombre de todos
aquellos alumnos que sean masculinos y pais_nacimiento sea
Bolivia o de aquellos alumnos cuyo sexo sea femenino.
SELECT nro_alumno,
nombre,
apellido
FROM alumnos
WHERE (sexo = “M”
AND pais_nacimiento = “BO”)
OR sexo = “F”;
SELECT cod_materia,
denominacion,
carga_horaria,
año_carrera
FROM materias
WHERE (año_carrera = 1
AND carga_horaria >= 4)
135
OR (año_carrera = 3
AND carga_horaria >= 6);
El resultado es el siguiente:
SELECT nro_alumno,
nombre,
apellido,
tipo_doc,
nro_doc,
sexo,
pais_nacimiento
FROMalumnos
WHERE nro_doc > 20000000
AND tipo_doc = “DNI”;
El resultado es el siguiente:
136
Nro_ Apellido Nombre Tipo_Doc Nro_Doc Sexo Pais_Nacimiento
Alumno
3 Arias Adrian Marcelo DNI 23.878.652 M PE
4 Perez Maria Evangelina DNI 20.881.330 F AR
Obtener todos los datos de aquellos finales donde la nota fue 4 o mas
y el cod_materia no sea “A16”
SELECT cod_materia,
nro_alumno,
fecha_final,
nota
FROM finales_rendidos
WHERE nota >= 4
AND cod_materia <> “A16”;
El resultado es el siguiente:
Cod_Materia Nro_Alumno Fecha_Final Nota
A1 1 10/03/2000 6
A1 4 12/12/2000 7
A3 1 13/12/2000 9
A3 2 20/12/2003 4
A4 1 10/03/2005 5
A5 4 02/03/2009 8
137
El resultado es el siguiente:
SELECT nro_alumno,
apellido,
nombre
FROMalumnos
ORDER BY apellido,
Nombre;
Es decir primero se ordena por apellido, en el caso que coincida se
ordena por nombre.
SELECT cod_materia,
nro_alumno,
fecha_final,
nota
FROM finales_rendidos
138
ORDER BY nro_alumno, nota;
Veamos el resultado.
SELECT pais_nacimiento,
nombre_pais
FROM paises
ORDER BY nombre_pais DESC;
Pais_Nacimiento Nombre_Pais
UR Uruguay
PE Perú
BO Bolivia
AR Argentina
139
cod_materia en forma descendente y después por nro_alumno de
forma ascendente.
SELECT cod_materia,
nro_alumno,
fecha_final,
nota
FROM finales_rendidos
WHERE cod_materia DESC,
Nro_alumno ASC;
140
SELECT cod_materia,
nro_alumno,
fecha_final,
nota,
pais_nacimiento,
nombre_pais
FROM finales_rendidos, paises;
El resultado es el siguiente:
141
A4 1 10/03/2005 5 UR Uruguay
A5 4 02/03/2009 8 AR Argentina
A5 4 02/03/2009 8 PE Perú
A5 4 02/03/2009 8 BO Bolivia
A5 4 02/03/2009 8 UR Uruguay
SELECT nro_alumno,
apellido,
nombre,
a.pais_nacimiento,
nombre_pais
FROM alumnos a,
paises p
WHERE a.pais_nacimiento = p.pais_nacimiento;
142
Además indicamos con a.pais_nacimiento que nos referimos a la
tabla alumnos y con p.pais_nacimiento a la tabla paises.
También observamos que con la cláusula Where estamos igualando
los campos pais_nacimiento de ambas tablas, ya no se produce el
producto cartesiano.
El resultado del Select es el siguiente:
SELECT m.denominacion,
a.apellido,
a.nombre,
f.fecha_final,
f.nota
FROM materias m,
alumnos a,
finales_rendidos f
WHERE f.cod_materia = m.cod_materia
AND f.nro_alumno = a.nro_alumno;
El resultado es el siguiente:
143
Programación I Perez Maria Evangelina 12/12/2000 7
Estructura de un Garcia Jose Ramon 13/12/2000 9
Computador
Estructura de un Martinez Analia 20/12/2003 4
Computador
Ingles Tecnico Garcia Jose Ramon 10/03/2005 5
Teoría de Perez Maria Evangelina 02/03/2009 8
Sistemas
Creo que a esta altura podemos darnos cuenta lo útil que puede
resultar el lenguaje SQL.
SELECT a.nro_alumno,
a.apellido,
a.nombre,
a.tipo_doc,
a.nro_doc,
a.sexo
p.nombre_pais
FROM alumno a,
paises p
WHERE a.pais_nacimiento = p.pais_nacimiento
AND a.sexo = “M”
AND a.pais_nacimiento = “AR”
ORDER BY nro_doc DESC;
El resultado es:
144
Nro_ Apellido Nombre Tipo_Doc Nro_Doc Sexo Nombre_Pais
Alumno
1 Garcia Jose Ramon DNI 10.455.656 M Argentina
Actividad
Empleados:
Nro_Empleado Numérico (8) Obligatorio Clave
Primaria
Apellido Char(30) Obligatorio
Nombre Char(30) Obligatorio
Tipo_Documento Char(3) Obligatorio Si
Nro_Documento Numérico(20) Obligatorio Si
Domicilio Char(30)
Localidad Char(30)
Código_Postal Numérico(4)
Telefono Numérico(25)
Pais_Nacimiento Char(25)
Sexo Char(1)
Email Char(30)
Fecha_Nacimiento Date
145
b)_ Seleccionar los apellidos y los nombres de aquellos empleados
mujeres (los que tienen la letra “F” en el campo sexo).
CREATE TABLEalumnos_paises_hermanos
(nro_alumno NUMBER(5) NOT NULL,
apellido CHAR(30) NOT NULL,
nombre CHAR(35) NOT NULL,
tipo_doc CHAR(3) NOT NULL,
nro_doc NUMBER(8) NOT NULL)
AS
146
SELECT nro_alumo,
apellido,
nombre,
tipo_doc,
nro_doc
FROM alumnos
WHERE pais_nacimiento <> “AR”;
147
alumnos a,
finales_rendidos f
WHERE f.cod_materia = m.cod_materia
AND f.nro_alumno = a.nro_alumno;
FUNCIONES AGREGADAS.
Las funciones agregadas son aquellas que nos permiten
realizar utilidades de cálculo en las bases de datos.
Estas funciones se las utiliza dentro de las consultas SELECT y
devuelven un único valor al ser aplicadas a un grupo de registros.
Veamos las funciones:
COUNT
Esta función devuelve la cantidad de registros que cumplen cierta
condición, el * significa que contará todos los registros incluyendo
valores nulos, si escribimos el nombre de una columna nos
devolverá la cantidad de registros que cumplen con la condición pero
no incluirá los valores nulos, si agregamos a esta segunda opción la
palabra distinct (en inglés distinto), no contará aquellos valores que
figuren dos o más veces, veamos algunos ejemplos:
SELECT COUNT(*)
FROM alumnos;
148
Recordamos que el * (asterisco) cuando vimos la instrucción select
indicaba que nos referíamos a todos los campos.
Nos devuelve el siguiente resultado.
COUNT(*)
5
En este caso nos está diciendo que la tabla alumnos está compuesta
de cinco registros.
Idéntico resultado obtenemos con la siguiente instrucción ya que en
este caso no hay ningún valor nulo.
SELECT COUNT(apellido)
FROM alumnos
COUNT(apellido)
5
SELECT COUNT(nro_alumno)
FROM finales_rendidos;
COUNT(nro_alumno)
7
149
SELECT COUNT(DISTINCT nro_alumno)
FROM finales_rendidos
El resultado es el siguiente:
COUNT(DISTINCT nro_alumno)
4
Función SUM
Veamos su sintaxis:
SUM([DISTINCT] columna), esta función se utiliza para sumar los
valores de tipo numérico de aquellos registros que cumplan con la
condición, si incluimos DISTINCT no se sumarán los valores
repetidos.
Veamos un ejemplo:
SELECT SUM(nota)
FROM finales_rendidos;
SUM(nota)
41
150
SUM(DISTINCT nota)
41
El resultado es el siguiente:
SUM(DISTINCT nro_alumno)
10
Función AVG.
Esta función devuelve el promedio de una columna de tipo
numérico que cumpla con cierta condición, si incluimos la palabra
DISTINCT no se incluirán para el cálculo aquellos valores repetidos.
Veamos su sintaxis:
AVG([DISTINCT] columna)
SELECT AVG(nota)
FROM finales_rendidos
El resultado es el siguiente:
AVG(nota)
5,857
151
Como dijimos anteriormente como no tenemos registradas notas
iguales a distintos alumnos la siguiente instrucción genera el mismo
resultado.
SELECT AVG( DISTINCT nota)
FROM finales_rendidos
El resultado es el siguiente:
AVG(DISTINCT nota)
5,857
Función Max
Esta función devuelve el valor máximo de la columna que
cumple con la condición, en este caso esta función puede ser
aplicada a tanto a valores numéricos avalores de tipo carácter y de
tipo fecha, veamos la sintaxis.
MAX([DISTINCT] columna)
SELECT MAX(apellido)
FROM alumnos;
El resultado es el siguiente:
MAX (apellido)
Sosa
Otro ejemplo.
SELECT MAX (fecha_final)
FROM finales_rendidos;
152
MAX (fecha_final)
02/03/2009
Función MIN
Esta función devuelve el valor mínimo de una columna que
cumpla con la condición, su sintaxis es similar a la de la función MAX
y se puede aplicar a columnas de tipo carácter, de tipo fecha o
numérico.
SELECT MIN(nota)
FROM finales_rendidos;
MIN (nota)
2
SELECT MIN(nota)
FROM finales_rendidos
WHEREcod_materia = “A1”;
MIN (nota)
6
GROUP BY
Si necesitamos que una sentencia Select nos devuelve una
serie de registros que se encuentren agrupados mediante algún
criterio debemos incluir en la construcción de la consulta la cláusula
Group by.
La cláusula Group by es opcional y la sintaxis dentro de una
sentencia Select es la siguiente:
153
SELECT campos
FROM tabla
WHERE criterio
GROUP BY campos del grupo
ORDER BY campo1, campo2;
SELECT nro_alumno
FROM finales_rendidos
GROUP BY nro_alumno;
El resultado es el siguiente:
nro_alumno
1
3
4
2
SELECT nro_alumno
FROM finales_rendidos
nro_alumno
1
154
3
4
1
2
1
4
155
Ahora veamos un ejemplo donde agrupamos por dos campos:
cod_materia y nro_alumno de la tabla finales_rendidos.
Este es el resultado:
cod_materia nro_alumno
A1 1
A2 3
A1 4
A3 1
A3 2
A4 1
A5 4
cod_materia nro_alumno
A1 1
A2 3
A1 4
A3 1
A3 2
A4 1
A5 4
A2 3
156
Combinamos ahora las funciones agregadas que ya conocemos con
la cláusula group by.
Veamos un ejemplo con la función count.
Queremos saber cuantos finales rindió cada alumno:
157
En la cláusula group by todos los campos que figuran en el select
deben estar en la cláusula group by y en el mismo orden.
El resultado es:
cod_materia AVG (nota)
A1 6,5
A2 4,5
A3 6,5
158
A4 5
A5 8
HAVING
Así como la cláusula WHERE sirve para poder condicionar los
registros obtenidos por la sentencia SELECT, la cláusula HAVING
sirve para condicionar los grupos.
Veamos un ejemplo: supongamos que queremos obtener sólo los
datos de aquellos alumnos que hayan rendido la materia en más de
una oportunidad.
El resultado es el siguiente:
nro_alumno cod_materia COUNT(*)
3 A2 2
El resultado es:
159
nro_alumno AVG(nota)
1 6,66
3 4,5
4 7,5
2 4
UNION
La cláusula UNION combina dos o más sentencias SELECT
en un único resultado. Este resultado es la suma de los resultados
de cada uno de los SELECT.
Creamos una nueva tabla profesores
Profesores
Nro_ Apellido Nombre Tipo_Doc Nro_Doc
Profesor
100 Lombardero Daniel DNI 25.124.325
101 Perera Rodolfo DNI 26.226.543
102 Castellano Fabián DNI 17.878.652
103 Rivas Ana DNI 20.881.330
104 Ramasco Alicia DNI 19.878.767
160
Veamos como aplicamos la instrucción UNION y el resultado que
obtenemos.
apellido nombre
Garcia Jose Ramon
Martinez Analia
Arias Adrian Marcelo
Perez Maria Evangelina
Sosa Aldo
Lombardero Daniel
Perera Rodolfo
Castellano Fabián
Rivas Ana
Ramasco Alicia
161
vez, en cambio si usamos el UNION ALL, en el resultado aparecerá
dos veces.
Resumiendo UNION ALL, incluye la totalidad de las filas obtenidas
en cada uno de los select, aunque se encuentren repetidos, el
UNION no muestra las filas si están repetidas.
Actividad
1)_ Dadas las siguientes tablas, escribir la sentencia Union entre
ambas tablas y mostrar el resultado en otra tabla para todos los
campos.
Fabrica
Nombre Medida
Tornillo Cabeza Frezada 1 1/4
Arandela Grover ¼
Arandela Plana 5/16
Proveedor
Nombre Medida
Tornillo Cabeza Tanque ¾
Arandela Grover ¼
Arandela Plana 3/8
162
LOWER
Esta función transforma una cadena de caracteres a
minúscula del valor de una columna.
Veamos un ejemplo:
SELECT LOWER(apellido)
FROM profesores;
Apellido
lombardero
perera
castellano
rivas
ramasco
UPPER
Esta función transforma una cadena de caracteres a
mayúscula del valor de una columna.
Veamos un ejemplo en donde consultamos dos veces el apellido de
los alumnos en el primer caso aplicando la función UPPER y en la
segunda no.
El resultado es el siguiente:
UPPER(apellido) Apellido
GARCIA Garcia
MARTINEZ Martinez
ARIAS Arias
PEREZ Perez
SOSA Sosa
163
INITCAP
Obtiene la primer letra de la columna en mayúscula el resto
de las letras en minúscula.
Apellido Nombre
Garcia Jose Ramon
Martinez Analia
Arias Adrian Marcelo
Perez Maria Evangelina
Sosa Aldo
SUBSTR
Su sintaxis es SUBSTR(columna/valor, posición, n); donde se
obtiene una subcadena (en inglés substring) de la columna/valor
desde el número expresado en posición hasta n posiciones.
Ejemplo obtener una subcadena de los apellidos de los profesores
desde la segunda letra hasta la cuarta.
164
Tener en cuenta que la letra n, son posiciones y el ejemplo pide
hasta la cuarta letra, si comenzamos en la letra dos, el valor de n
debe ser 3.
LTRIM
Esta función elimina dela columna los espacios en blanco
desde la izquierda.Su sintaxis es LTRIM(columna).
SELECT LTRIM(apellido)
FROMprofesores;
RTRIM
Esta función elimina de la columna en blanco desde la
derecha, Su sintaxis es RTRIM(columna) elimina de la columna los
espacios en blanco desde la derecha.
RTRIM(apellido)
Lombardero
Perera
Castellano
Rivas
Ramasco
165
LENGTH
Esta función devuelve la cantidad de caracteres que tiene la
columna.
Veamos un ejemplo, donde se pide contar la cantidad de letras que
tienen los apellidos de los alumnos.
apellido LENGTH(apellido)
Garcia 6
Martinez 8
Arias 5
Perez 5
Sosa 4
FUNCIONES NUMÉRICAS
Algunas de estas funciones conocen su significado cuando
estudiaron Pascal.
MOD
Esta función devuelve el resto de la división, su sintaxis
MOD(Valor 1, Valor 2), y nos devuelve el resto de la división del
valor 1 dividido el valor 2.
166
9 1
4 0
5 1
8 0
7 1
ABS
Su sintaxis ABS(columna) devuelve el valor absoluto de la
columna.
Nota ABS(nota, 2)
6 3
2 1
7 3
9 4
4 2
5 2
8 4
7 3
SIGN
Su sintaxis SIGN(columna) devuelve –1 si la columna es
negativo, 0 si es 0 y 1 si tiene valor positivo.
En nuestros datos no tenemos números negativos o ceros.
167
Nota SIGN(nota)
6 1
2 1
7 1
9 1
4 1
5 1
8 1
7 1
168
FUNCIONES QUE OPERAN CON NÚMEROS
OUTER JOIN
En las tablas que creamos más arriba tenemos algunas tablas
que están relacionadas entre si: por ejemplo la tabla alumnos está
relacionada con la tabla países. La tabla alumno y la tabla materias
están relacionadas con la tabla finales_rendidos. La tabla materias
correlativas está relacionada con la tabla materias.
De estos ejemplos también observamos lo siguiente, si bien las
tablas están relacionadas no todas las filas de las tablas están
relacionadas con otra u otras filas de otras tablas, por ejemplo no
existe ningún alumno de los que cuenta nuestra tabla que tenga
como país de nacimiento Uruguay, aunque quizás en el futuro
tengamos un alumno Uruguayo.
169
De la relación entre la tabla alumnos y finales rendidos observamos
que el alumno con apellido Sosa, aún no rindió ningún examen final.
De la relación entre la tabla materias y finales rendidos varias
materias no fueron rendidas por ningún alumno como son Análisis
Matemático, Bases de Datos, Redes, etc.
Entonces cuando existe relación entre dos tablas pero no todos los
datos de una tabla se encuentran relacionados en la otra tabla
ynecesitamos obtener toda la información de ambas tablas usamos
lo que llamamos outer join.
Ejemplo si trabajamos con las tablas alumnos y finales_rendidos, y
queremos obtener el nro_alumno, apellido, nombre del alumno y en
el caso que haya rendido algún examen la materia y nota obtenida,
Veamos el resultado
Nro_alumno Apellido Nombre Cod_materia Nota
1 Garcia Jose Ramon A1 6
1 Garcia Jose Ramon A3 9
1 Garcia Jose Ramon A4 5
2 Martinez Analia A3 4
3 Arias Adrian Marcelo A2 2
3 Arias Adrian Marcelo A2 7
4 Perez Maria Evangelina A1 7
4 Perez Maria Evangelina A5 8
5 Sosa Aldo
170
Veamos otro ejemplo, obtener el apellido, nombre y país nacimiento
de todos los alumnos, incluir todos los países.
Veamos el resultado.
Actividad
Empleados.
Categorías.
Cod_Categoria Categoría
Sup Supervisor
Sec Secretaria
171
Ead Empleado Administrativo
Acu Analista de Cuentas
Cad Cadete
Jse Jefe de Sector
Pas Pasante
SUBQUERIES
Un subquery es una instrucción SELECT en donde existe un
SELECT dentro de otro, El select más interno se ejecuta primero y el
resultado de este es usado por el select inmediatamente más
externo. Se pueden construir subqueries con hasta 16 niveles, de
SELECT.
Veamos un ejemplo donde podamos aplicar este concepto.
Supongamos que necesitamos obtener aquellos nro de alumnos que
obtuvieron notas mayores o iguales al promedio obtenidos por todos
los alumnos.
SELECT nro_alumno
FROMfinales_rendidos
WHERE Nota >= (SELECTAVG(Nota)
FROM finales_rendidos);
172
En este caso se ejecuta primero el select interno que obtiene la nota
promedio entre todos los alumnos, luego ese valor lo usamos en la
condición de WHERE del SELECT siguiente.
SELECT AVG(nota)
FROM finales_rendidos;
SELECT nro_alumno
FROMfinales_rendidos
WHERE Nota >=6;
El resultado es el siguiente:
nro_alumno
1
4
1
4
3
El resultado es el siguiente:
173
nro_alumno
1
4
3
MINUS
Colores 2
Nombre Color
Blanco
Gris
SELECT nombre_color
FROM COLORES1
MINUS
SELECTnombre_color
FROM COLORES 2
174
El resultado es el siguiente:
Nombre Color
Rojo
Negro
Celeste
INTERSECT
Ventas Internet
Fecha Monto Vendido
10/01/2010 20.050
12/01/2010 3.251
13/01/2010 6.654
15/01/2010 9.254
Ventas Negocio
Fecha Monto Vendido
10/01/2010 25.214
13/01/2010 7.884
175
SELECT fecha
FROMVentas Internet
INTERSECT
SELECT fecha
FROMVentas Negocio
Veamos el resultado:
Fecha
10/01/2010
13/01/2010
VISTAS
En SQL una vista es una tabla que nace como consecuencia
de otras tablas, donde estas tablas pueden ser otras vistas.
Las vistas no existen fisicamente se las considera tablas virtuales.
La instrucción para crear una vista es la siguiente:
176
Creamos una vista llamada alumnas_v, con la misma estructura que
la tabla alumnos sin incluir el campo sexo y que contenga solo
mujeres.
SELECT nro_alumno,
apellido,
nombre,
tipo_doc,
nro_doc,
pais_nacimiento
FROMalumnas_v;
Veamos ahora como se crea una vista utilizando dos o más tablas.
Vamos a crear una vista con el apellido, nombre de los alumnos y el
código de las materias de las cuales rindieron finales.
177
CREATE VIEW alumnos_finales_v
AS SELECT a.apellido
a.nombre
f.cod_materia
FROM alumnos a, finales_rendidos f
WHERE a.nro_alumno = f.nro_alumno;
El resultado es el siguiente:
Como vimos una vista puede estar representada por los campos de una
tabla o de la combinación de más de una tabla.
Es una buena práctica agregar al final del nombre de cada vista _v, de
esta manera identificamos rapidamente si se trata de una tabla o una
vista.
178
DROP VIEW
Así como conocimos la instrucción DROP TABLE para borrar una
tabla, existe la instrucción DROP VIEW para borrar una vista, su sintaxis
es la siguiente:
INDICES
Los índices son caminos físicos de accesos a las tablas, sirven para
mejorar la velocidad de acceso a los datos que están almacenados en
las tablas.
Un índice es una estructura física de acceso que se especifica con base
en uno o más atributos de un archivo. El atributo o los atributos sobre los
que se crea el índice son conocidos con el nombre de atributos de
indización. Los índices producen que la ejecución de una consulta
tardará menos si alguno de los atributos por los cuales se está buscando
se encuentra indizada. Esta mejora en los accesos es mucho más
notoria si la consulta se realiza sobre tablas de muchos registros. La
instrucción para crear un índice esCREATE INDEX.
Veamos como podemos crear un índice sobre la tabla alumnos, en base
al apellido del alumno.
179
Si en el ejemplo anterior no especificamos orden la creación será para el
campo apellido del alumno en forma ascendente.
Ahora supongamos que queremos crear un índice sobre la misma tabla
alumnos, con un índice sobre los campos apellido y alumno ambos en
forma ascendente.
180
SECUENCIAS
Algunas bases de datos como es en ORACLE, poseen un
objeto que se utiliza para generar automáticamente secuencias de
números. Como por ejemplo la generación de números de facturas o
números de remitos o números de socio en un club, la característica
de estos ejemplos es que deben ser números únicos.
181
MINVALUE, y si fuera descendente después de MINVALUE
continuará con MAXVALUE. El valor por omisión es NOCYCLE en
este caso cuando la secuencia llegue a su límite dependiendo si es
ascendente o descendente no seguirá generando valores.
Veamos un ejemplo:
CREATE SECUENCEnro_factura_sec
INCREMENT BY 1
START WITH 1000
MAXVALUE 1000000
SELECT nro_factura.CURRVAL
FROM DUAL;
SELECTnro_factura.NEXTVAL
FROM DUAL;
El primer valor que obtiene es 1001, luego 1002, 1003, etc.
ALTER SEQUENCE
Para modificar la definición de una secuencia usamos ALTER
SEQUENCE.
182
ALTER SEQUENCE (nombre de la secuencia)
(INCREMENT BY n)
(MAXVALUE n)
(MINVALUE n)
(CYCLE / NOCYCLE);
Ejemplo:
ALTER SEQUENCEnro_factura_seq
(MAXVALUE 10000);
Es decir cambiamos el máximo valor que puede tomar la secuencia.
ON TABLE ListaTablas
TO PUBLIC | ListaUsuarios
183
Con ALL o Lista Privilegios se otorgan o todos los privilegios o
seleccionar un subconjunto de privilegios que permitan borrar,
insertar o modificar (DELETE, INSERT, SELECT, UPDATE) una
tabla o conjunto de tablas.
Con la cláusula WITH GRANT OPTION nos está indicando que los
privilegios que le fueron otorgados a un usuario, el mismo usuario
puede asignárselos a otros usuarios por medio de instrucciones
GRANT.
ON TABLE alumnos;
REVOKE
ON TABLE listaTablas
184
El uso de vistas combinada con el control de los usuarios y el
otorgamiento responsable de los privilegios es el modelo de
seguridad que los administradores de la base de datos SQL utilizan.
Veamos un ejemplo
Proveedores
Articulos
Proveedores_Articulos
185
1 60 200
1 50 400
3 60 200
1 40 100
4 10 100
4 60 300
4 30 400
1 30 200
3 20 200
4 20 300
3 10 150
186
1)_ Seleccionar el nro de todos los proveedores, vemos dos
soluciones.
a)_
SELECT Nro_Articulo
FROM Articulos;
b)_
SELECT DISTINCT Nro_Articulo
FROM Proveedores-Articulos;
Nro_Articulo
10
20
60
50
40
30
187
3)_ Seleccionar el número de proveedor y la categoría de los
proveedores residentes en La Plata, ordenados ascendentemente
por categorías.
SELECT Nro_Prov, Categoría
FROM Proveedores
WHERE Ciudad = “La Plata”;
Nro_Proveedor Categoria
4 10
3 30
SELECT Nro_Proveedor
FROM Proveedores
WHERE Ciudad = “La Plata
AND Categoría > 20;
Nro_Proveedor Categoria
3 30
a)
SELECT Nro_Prov
FROM Proveedores
WHERE Categoría Not = 20;
188
b)
SELECT Nro_Prov
FROM Proveedores
WHERE Categoría <> 20;
Nro_Prov
3
4
5
SELECT *
FROM Proveedores
WHERE Nro_Prov IN (SELECT Nro_Prov
FROM Proveedores-Articulos
WHERE Nro_Articulo = 20);
Nro_Prov
6
3
4
189
Proveedores
a)_
SELECT DISTINCT Nro_Prov
FROM Proveedores-Articulos
NOT IN (SELECT Nro_Prov
FROM Proveedores-Articulos
WHERE Nro_Articulo = 20);
190
Observamos que primero se resuelve el select interno donde se
obtienen los proveedores que suministran el artículo 20.
b)_
SELECT Nro_Prov
FROM PROVEEDORES
MINUS
SELECT Nro_Prov
FROM Proveedores-Articulos
WHERE Nro_Articulo = 20;
Veamos el resultado.
191
Nro_Prov Nro_Articulo Ciudad
3 20 La Plata
4 20 La Plata
1 30 Mar del Plata
6 30 Mar del Plata
1 40 Mar del Plata
6 40 Mar del Plata
3 50 La Plata
4 50 La Plata
1 60 Mar del Plata
6 60 Mar del Plata
192
SELECT Nro_Prov
FROM Proveedores
WHERE Ciudad = (SELECT Ciudad
FROM Proveedores
WHERE Nro_Prov = 5);
Nro_Prov
5
a)_
SELECT DISTINCT Nro_Articulo
FROM Proveedores_Articulos pa, Proveedores p
WHERE pa.Nro_Prov = p.Nro_Prov
AND p.Ciudad = “Mar del Plata”;
b)_
SELECT DISTINCT Nro_Articulo
FROM Proveedores_Articulos
WHERE Nro_Prov IN (SELECT Nro_Pro
FROM Proveedores
WHERE Ciudad = “Mar del Plata”);
193
El resultado es:
Nro_Articulo
10
20
60
50
40
30
a)_
SELECT pa.Nro_Articulo
FROM Articulos a
WHERE peso BETWEEN (4 AND 8)
UNION
SELECT Nro_Articulo
FROM Proveedores_Articulos
WHERE Nro_Prov = 3;
b)_
SELECT pa.Nro_Articulo
FROM Articulos a, Proveedores_Articulos pa
WHERE pa.Nro_Articulo = a.Nro_Articulo
AND (pa.Nro_Prov = 3 OR (Peso BETWEEN (4
AND8)));
194
c)_
SELECT Nro_Articulo
FROM Articulos
WHERE (Peso >= 4 AND Peso <= 8)
OR Nro_Articulo IN (SELECT Nro_Articulo
FROMProveedores_Articulos
WHERE Nro_Proveedor = 3);
13)
Seleccionar el nombre de los artículos que se depositan en la misma
ciudad donde está el depósito del artículo 50.
a)_
SELECT a2.Nombre
FROM Articulos a1, Articulos a2
WHERE a1.Ciudad = 50
AND a1.Ciudad = a2.Ciudad;
Sorprendidos con esta respuesta, esta también es una posibilidad
que nos ofrece el SQL, la de utilizar dos veces una misma tabla.
b)
SELECT Nombre
FROM Articulos
WHERE Ciudad = (SELECT Ciudad
FROM Articulos
WHERE Nro_Articulo = 50);
El resultado es el siguiente:
Nombre
F
C
195
14)_
Seleccionar el nombre de aquellos proveedores que suministren el
artículo 10.
a)
SELECT Razon_Social
FROM Proveedores
WHERE Nro_Prov IN (SELECT Nro_Prov
FROM Proveedores_Articulos
WHERE Nro_Articulo = 10);
b)
SELECT Razon_Social
FROM Proveedores p, Proveedores_Articulos pa
WHERE p.Nro_Prov = pa.Nro_Prov
AND Nro_Articulo = 10;
El resultado es el siguiente:
Razon_Social
Prov 1
Prov 4
Prov 3
MySQL
196
(RDBMS). Es un programa que permite almacenar una enorme
cantidad dedatos y de administrarlos para cubrir las necesidades de
cualquiertipo de organización, desde pequeñas a grandesempresas
y organismos administrativos. MySQL compite con sistemas
RDBMSpropietarios conocidos, como Oracle, SQL Server y DB2.
MySQL cuenta con todos los elementos necesarios para instalar el
programa para que puedan los usuarios tener diferentes niveles de
acceso, administrar el sistema y proteger los datos. Puede
desarrollar sus propias aplicaciones de base de datos en la mayor
parte de los lenguajes de programación utilizados hoy en dia y
ejecutarlos en casi todos los sistemas operativos.
197
create database instituto;
Create DataBase instituto;
show databases;
show tables;
198
Si queremos crear una tabla con un nombre que ya existe, se
mostrará un mensaje de error diciendo que la acción no se realizó
porque ya existe una tabla con el mismo nombre.
show tables;
Aparecera "alumnos".
describe alumnos;
Aparece lo siguiente:
Si ejecutamos nuevamente:
199
drop table if exists alumnos;
200
Estos son algunos tipos de datos básicos:
= igual
<> distinto
> mayor
< menor
>= mayor o igual
<= menor o igual
201
Si intentamos borrar un registro que no existe, o sea que ningún
registro cumple con la condición, no se borrarán registros, pues no
encontró registros con ese dato.
202
Para establecer que un campo autoincremente sus valores
automáticamente, éste debe ser entero (integer) y debe ser clave
primaria:
203
Si el valor ingresado es 0, no lo toma y guarda el registro
continuando la
secuencia.
Si el valor ingresado es negativo (y el campo no está definido
para aceptar sólo valores positivos), lo ingresa.
204
Igualmente para campos de tipo cadena, las siguientes sentencias
"select" no retornan los mismos registros:
Hasta ahora hemos visto 3 tipos de datos: varchar, integer (con y sin
signo) y float (con y sin signo). Hay más tipos, incluso, subtipos.
205
varchar(x): define una cadena de caracteres de longitud variable en
la cual determinamos el máximo de caracteres con el argumento "x"
que va entre paréntesis. Su rango va de 1 a 255 caracteres. Un
varchar(10) ocupa 11 bytes, pues en uno de ellos almacena la
longitud de la cadena. Ocupa un byte más que la cantidad definida.
206
- tinyint(x): define un valor entero pequeño, cuyo rango es de -128 a
127. El tipo sin signo va de 0 a 255.
207
time: una hora. Su formato es "HH:MM:SS". El rango va de "-
838:59:59" a "838:59:59".
208
Si queremos saber el precio de cada libro con un 10% de descuento
podemos incluir en la sentencia los siguientes cálculos:
select ord('A');
retorna 65.
select char(65,66,67);
retorna "ABC".
select concat_ws('-','Juan','Pedro','Luis');
209
retorna "Juan-Pedro-Luis".
select length('Hola');
devuelve 4.
retorna 2.
210
retorna 2.
select locate('ar','Margarita',1);
retorna 1.
select locate('ar','Margarita',3);
retorna 5.
devuelve 2.
select lpad('hola',10,'0');
retorna "000000hola".
211
rpad(cadena,longitud,cadenarelleno): igual que "lpad" excepto
que rellena por la derecha.
left(cadena,longitud): retorna la cantidad (longitud) de
caracteres de la cadena comenzando desde la inquierda,
primer caracter. Ejemplo:
retorna "enas".
select substring('Margarita',4);
retorna "garita".
212
-substring(cadena from posicion): variante de
"substring(cadena,posicion)". Ejemplo:
retorna "garita".
substring_index(cadena,delimitador,ocurrencia): retorna la
subcadena de la cadena enviada como argumento antes o
después de la "ocurrencia" de la cadena enviada como
delimitador. Si "ocurrencia" es positiva, retorna la subcadena
anterior al delimitador (comienza desde la izquierda); si
"ocurrencia" es negativa, retorna la subcadena posterior al
delimitador (comienza desde la derecha). Ejemplo:
retorna
"Hola "
.
213
retorna
" Hola"
.
retorna 'Hola'.
retorna "hola00".
retorna "00hola".
retorna "hola".
retorna "hola".
retorna "hola".
replace(cadena,cadenareemplazo,cadenareemplazar):
retorna la cadena con todas las ocurrencias de la subcadena
reemplazo por la subcadena a reemplazar. Ejemplo:
214
select replace('xxx.mysql.com','x','w');
retorna "www.mysql.com'.
select repeat('hola',3);
retorna "holaholahola".
select reverse('Hola');
retorna "aloH".
insert(cadena,posicion,longitud,nuevacadena): retorna la
cadena con la nueva cadena colocándola en la posición
indicada por "posicion" y elimina la cantidad de caracteres
indicados por "longitud". Ejemplo:
retorna ""bxxtardes".
215
retorna "hola estudiante".
select strcmp('Hola','Chau');
retorna 1.
Funciones matemáticas.
select 5/0;
select abs(-20);
retorna 20.
select ceiling(12.34),
retorna 13.
216
floor(x): redondea hacia abajo el argumento "x". Ejemplo:
select floor(12.34);
retorna 12.
select mod(10,3);
retorna 1.
select mod(10,2);
retorna 0.
select 10%3;
retorna 1.
select 10%2;
retorna 0.
select power(2,3);
retorna 8.
217
rand(): retorna un valor de coma flotante aleatorio dentro del
rango 0 a 1.0.
round(x): retorna el argumento "x" redondeado al entero más
cercano. Ejemplos:
select round(12.34);
retorna 12.
select round(12.64);
retorna 13.
select truncate(123.4567,2);
retorna 123.45;
218
current_date: retorna la fecha de hoy con formato "YYYY-MM-
DD" o "YYYYMMDD".
current_time: retorna la hora actual con formato "HH:MM:SS"
o "HHMMSS".
date_add(fecha,interval expresion tipo) y
date_sub(fecha,interval expresion tipo): el argumento "fecha"
es un valor "date" o "datetime", "expresion" especifica el valor
de intervalo a ser añadido o substraído de la fecha indicada
(puede empezar con "-", para intervalos negativos), "tipo"
indica la medida de adición o substracción.
219
dayofyear(fecha): retorna el día del año para la fecha dada,
dentro del rango 1 a 366. Ejemplo: dayofmonth('2006-08-10')
retorna 222.
extract(tipo from fecha): extrae partes de una fecha.
Ejemplos:
Los valores para tipo pueden ser: second, minute, hour, day, month,
year, minute_second, hour_minute, day_hour, year_month,
hour_second (horas, minutos y segundos), day_minute (días, horas
y minutos), day_second (días a segundos).
220
second(hora): retorna los segundos para la hora dada, en el
rango de 0 a 59.
sec_to_time(segundos): retorna el argumento "segundos"
convertido a horas, minutos y segundos. Ejemplo:
sec_to_time(90) retorna "1:30".
timediff(hora1,hora2): retorna la cantidad de horas, minutos y
segundos entre hora1 y hora2.
time_to_sec(hora): retorna el argumento "hora" convertido en
segundos.
to_days(fecha): retorna el número de día (el número de día
desde el año 0).
weekday(fecha): retorna el índice del día de la semana para la
fecha pasada como argumento. Los índices son: 0=lunes,
1=martes,... 6=domingo). Ejemplo: weekday('2006-08-10')
retorna 3, o sea jueves.
year(fecha): retorna el año de la fecha dada, en el rango de
1000 a 9999. Ejemplo: year('06-08-10') retorna "2006".
221
UNIDAD 5: ARQUITECTURA DE SISTEMAS DE BASES
DE DATOS.
Objetivo de la unidad 5.
Al término de la unidad el alumno identificará
diversasarquitectura de sistemas de base de datos como las
centralizadas, el sistema cliente / servidor, sistemas paralelos y
distribuidas.
Introducción
La arquitectura de un sistemade base de datos esta
intimamenterelacionada con el sistema informáticoen el que se
ejecuta el sistema de bases de datos, algunos puntos clave de la
arquitectura de bases de datos son:
Conexión en red: en esta conexión de computadoras se vera
la ejecución detareas en un servidor y en los sistemas de
clientes. De aquí surge elsistema Cliente-Servidor.
Procesamiento paralelo dentro de una computadora: Agiliza el
proceso de las tareas dentro de una base de datos.
Distribución de datos: permite la accesibilidad de diferentes
áreas de la organización.
SISTEMAS CENTRALIZADOS
Este tipo de arquitectura se adapta a la formatradicional de
una organización, con estructuracentralizada y jerárquica, dividida en
departamentos. Cada departamento tiene actividades muy
específicas, las relaciones que pueda establecer con otros
departamentosestán muy definidas y limitadas y se realizan a través
de la jerarquía.
El sistema de la base de datos centralizados se ejecuta en el único
sistemainformático existente, sin interactuar con ningún otro sistema.
222
La arquitectura está centralizada en un servidor central al que sólo
tienen acceso losusuarios del departamento correspondiente, no
puede estar ubicada en varias partes,sino que debe estar en una
solacomputadora, ala cual podrán ingresar los usuarios
quenecesiten hacer uso.
Las tareas de gestión y control son más sencillas pero no suelen
ofrecer solucionesexcesivamente avanzadas en la gestión de bases
de datos.
Características funcionales
• La computadora central es la únicacomputadora de la organización.
• En ellaencontramos todos los datos y es la responsable de todala
información.
• Desde lacomputadora central se controla el acceso a múltiples
terminalesconectadas a través de productos integrados al equipo.
• Las terminales funcionan como computadoras esclavas
delacomputadora central.
• Cada usuario tiene un número asignado, derechos y prioridades
deejecución en la máquina de sus programas o peticiones.
Características físicas
• Una únicacomputadora corporativacon la suficiente capacidad para
soportar todos los procesos de laorganización, todos los datos y las
posibles comunicaciones.
• Una gran base de datos donde se encuentran todos los datos de la
organización.
• Impresoras y terminales (ocomputadoras con emulación de
terminal)como puestos de trabajo conectados en grupos
alacomputadora central.
Características lógicas
223
• Se ejecutan todos los procesos en lacomputadora central.
•Si la empresa está dividida geográficamente y dispone de
comunicaciones, todoslos puestos de trabajo están conectados
alacomputadora formando una "estrella".
Ventajas e Inconvenientes
Entre las principales ventajas se encuentran:
• Alto rendimiento en la operación.
• Alta disponibilidad.
• Entorno de trabajo muy estable y personal experimentado.
• Control total de lacomputadora, al ser éste único y residente en un
único Centro deCómputos.
• Concentración de todo el personal de desarrollo y administración
del sistemaen un único Centro de Cómputos.
• Alto nivel de seguridad.
• Entre los inconvenientes destacan:
• Alto precio del equipo, al necesitarse mucha potencia de
tratamiento paradar servicio a todos los usuarios que estén
conectados y gran espacio en discopara almacenar todos los datos
dela organización.
• Alta dependencia de las comunicaciones si existen. En caso de
caída de unalínea, todos los puestos de trabajo dependientes de
dicha línea quedaninactivas.
• Interfaces de usuario de caracteres, dondeno encontramos gráficos
ypor lo tanto, pocoamigables.
SISTEMAS CLIENTE-SERVIDOR
La Arquitectura Cliente/Servidor.- Es un modelo para el desarrollo de
sistemas deinformación en el que las transacciones se dividen en
procesos independientes quecooperan entre sí para intercambiar
información, servicios o recursos. Se denominacliente al proceso
que inicia el diálogo o solicita los recursos y servidor al proceso que
da respuesta a las solicitudes.
224
La Arquitectura múltiples clientes / múltiples servidores.- Son mas
flexibles, ya que la basede datos es distribuida en varios servidores.
Cada cliente tiene un servidor directo al cualhace sus peticiones. La
comunicación entre los servidores ejecuta las transacciones y
peticiones de los usuarios y esta es transparente para ellos.
Arquitectura de igual a igual.-Un SGBD verdadero no distingue entre
cliente y servidor.
Idealmente cada maquina puede realizar la funcionalidad de cliente y
de servidor. Labase de datos esta físicamente distribuida en
diferentes lugares fragmentado y replicandolos datos. La
fragmentación es deseable ya que hace posible el poner los datos
cerca delos usuarios que los necesitan, de esta forma reduciendo
potencialmente el costo de latransmisión y reduciendo el tamaño de
las relaciones involucradas en las consultas de losusuarios.
Entre las principales características de la arquitectura
cliente/servidor se pueden destacarlas siguientes:
• El servidor presenta a todos sus clientes una interfaz única
• El cliente no necesita conocer la lógica del servidor, sólo su interfaz
externa.
• El cliente no depende de la ubicación física del servidor, ni del tipo
de equipofísico en el que se encuentra, ni de su sistema operativo.
• Los cambios en el servidor implican pocos o ningún cambio en el
cliente.
Arquitectura Cliente / servidor.
225
Cliente
Servidor
Limitaciones:
- El número usuarios máximo es de 100. Más allá de este número de
usuarios se excede lacapacidad de procesamiento.
226
- No hay independencia entre la interfaz de usuario y los
tratamientos, lo que hacedelicada la evolución de las aplicaciones.
- Dificultad de relocalizar las capas de tratamiento consumidoras de
cálculo.
- Reutilización delicada del programa desarrollado bajo esta
arquitectura.
Arquitectura de 3 capas:
La arquitectura de 3 capas surgió para superar las limitaciones de la
arquitectura de 2capas. La tercera capa (servidor intermedio) está
entre el interfaz de usuario (cliente) y elgestor de datos (servidor). La
capa intermedia proporciona gestión del procesamiento yen ella se
ejecutan las reglas y lógica de procesamiento. Permite cientos de
usuarios (encomparación con sólo 100 usuarios de la arquitectura de
2 capas). La arquitectura de 3capas se usa cuando se necesita un
diseño cliente / servidor que proporcione, encomparación con la
arquitectura de 2 capas, incrementar el rendimiento,
flexibilidad,mantenibilidad, reusabilidad y escalabilidad mientras se
esconde la complejidad delprocesamiento distribuido al usuario.
Limitaciones:
Construir una arquitectura de 3 capas es una tarea complicada. Las
herramientasde programación que soportan el diseño de
arquitecturas de 3 capas no proporcionantodos los servicios
deseados que se necesitan para soportar un ambiente de
computacióndistribuida. Un problema potencial en el diseño de
arquitecturas de 3 capas es que laseparación de la interfaz gráfica
de usuario, la lógica de gestión de procesamiento y lalógica de datos
no es siempre obvia. Algunas lógicas de procesamiento de
transaccionespueden aparecer en las 3 capas. La ubicación de una
función particular en una capa u otradebería basarse en criterios
como los siguientes:
- Facilidad de desarrollo y comprobación.
227
- Facilidad de administración.
- Escalabilidad de los servidores.
- Funcionamiento (incluyendo procesamiento y carga de la red).
El middleware:
Como hemos visto, las capas están localizadas en máquinas
diferentes que estánconectadas a través de la red. El middleware es
el software que proporciona un conjuntode servicios que permite el
acceso transparente a los recursos en una red. El middlewarees un
módulo intermedio que actúa como conductor entre dos módulos de
software. Paracompartir datos, los dos módulos de software no
necesitan saber cómo comunicarse entreellos, sino cómo
comunicarse con el módulo de middleware.
Es el encargado del acceso a los datos: recibe las consultas y datos
recuperadosdirectamente de la aplicación y los transmite por la red.
También se ocupa de enviarde vuelta a la aplicación, los datos de
interés y de la generación de códigos de error.
Ventajas y Desventajas
Ventajas
• Aumento de la productividad:
• Los usuarios pueden utilizar herramientas que le son familiares,
comohojas de cálculo y herramientas de acceso a bases de datos.
• Mediante la integración de las aplicaciones cliente/servidor con
lasaplicaciones personales de uso habitual, los usuarios pueden
construirsoluciones propias que se ajusten a sus necesidades muy
variables.
• Una interfaz gráfica de usuario bien diseñada reduce el tiempo
deaprendizaje de las aplicaciones.
• Se obtienen menores costos de operación:
• Permiten un mejor aprovechamiento de los sistemas
existentes,protegiendo la inversión. Por ejemplo, el compartirlos
servidores
228
(habitualmente caros) y dispositivos periféricos (como impresoras)
entremáquinas clientes permite un mejor rendimiento del conjunto.
• Proporcionan un mejor acceso a los datos. La interfaz de usuario
ofreceuna forma homogénea de ver el sistema, independientemente
de loscambios o actualizaciones que se produzcan en él y de la
ubicación de lainformación.
• El movimiento de funciones desde un servidor central hacia
servidores oclientes locales transmite los costos de ese
procesohacia computadoras más pequeñas y por tanto, más
baratas.
• Mejora en el rendimiento de la red:
• Las arquitecturas cliente/servidor eliminan la necesidad de mover
grandesbloques de información por la red hacia los ordenadores
personales oestaciones de trabajo para su proceso. Los servidores
controlan los datos,procesan peticiones y después transfieren sólo
los datos requeridos a lamáquina cliente. Entonces, la máquina
cliente presenta los datos al usuariomediante interfaces amigables.
Todo esto reduce el tráfico de la red, lo quefacilita que pueda
soportar un mayor número de usuarios.
• Tanto el cliente como el servidor pueden escalarse para ajustarse a
lasnecesidades de las aplicaciones. Las UCPs utilizadas en los
respectivosequipos pueden dimensionarse a partir de las
aplicaciones y el tiempo derespuesta que se requiera.
• La existencia de varias UCPs proporciona una red más confiable:
un error enuno de los equipos no significa necesariamente que el
sistema deje defuncionar.
• En una arquitectura como ésta, los clientes y los servidores
sonindependientes entre si con lo que pueden renovarse
paraaumentar sus funciones y capacidad de forma independiente,
sin afectar al resto del sistema.
• La arquitectura de los sistemas cliente/servidor permite el uso
decomputadoras especializadas (servidores de base de datos,
estaciones de trabajo para CAD, etc.).
229
• Permite centralizar el control de sistemas que estaban
descentralizados,como por ejemplo la gestión de computadoras
personales que antesestuvieron aislados.
Desventajas
• Hay una alta complejidad tecnológica al tener que integrar una gran
variedad deproductos.
• Requiere un fuerte rediseño de todos los elementos involucrados
en los sistemasde información (modelos de datos, procesos,
interfaces, comunicaciones,almacenamiento de datos, etc.).
Además, en la actualidad existen pocasherramientas que ayuden a
determinar la mejor forma de dividir las aplicacionesentre la parte
cliente y la parte servidor.
• Es más difícil asegurar un elevado grado de seguridad en una red
de clientes yservidores que en un sistema con un único servidor
centralizado.
• A veces, los problemas de congestión de la red pueden degradar el
rendimientodel sistema por debajo de lo que se obtendría con una
única máquina (arquitecturacentralizada). También la interfaz gráfica
de usuario puede a veces hacer más lento elfuncionamiento de la
aplicación.
• El quinto nivel de esta arquitectura (bases de datos distribuidas) es
técnicamente muy complejo y en la actualidad hay muy pocas que
garanticen unfuncionamiento totalmente eficiente.
Fases de implantación
• Fase de Iniciación
Esta etapa se centra sobre todo en la distribución física de los
componentes entreplataformas. Los dos tipos de plataforma son:
• Una plataforma cliente para la presentación (generalmente
unacomputadora de escritorio).
230
• Una plataforma servidora (como por ejemplo el servidor de una
base dedatos relacional) para la ejecución de procesos y la gestión
de los datos.
Un ejemplo sería el de una herramienta de consulta que reside en
unacomputadora personal amodo de cliente y que genera peticiones
de datos que van a través de la red hasta elservidor de base de
datos. Estas peticiones se procesan, dando como resultado
unconjunto de datos que se devuelven al cliente.
En esta fase pueden surgir los siguientes problemas:
• Cómo repartir la lógica de la aplicación entre las plataformas cliente
yservidor de la mejor forma posible.
• Cómo gestionar la arquitectura para que permita que cualquier
cliente seconecte con cualquier servidor.
• Fase de Proliferación
La segunda etapa de una arquitectura cliente/servidor se caracteriza
por la proliferaciónde plataformas clientes y servidoras. Ahora, el
entorno para la interacción entre clientes yservidores se hace mucho
más complejo. Puede hacerse una distinción entre:
• Datos de servidores a los que se accede a través de una red de
área media (WAN).
• Datos a los que se accede a través de una red de área local (LAN).
Los mecanismos de conexión son muy variados y suelen ser
incompatibles.En esta fase los problemas que se pueden encontrar
son:
• La gestión de accesos se convierte en crítica y compleja debido a
laestructura del organismo donde se está implantando la
arquitectura. Elmercado ofrece algunas soluciones que mejoran la
interoperabilidad y quese basan en conexiones modulares que
utilizan entre otros:
• Driversen la parte cliente
• Pasarelas (gateways) a bases de datos
• Especificaciones de protocolos cliente/servidor, etc.
231
• Los requisitos de actualización de datos pasan a formar parte de
losrequisitos solicitados al sistema cliente/servidor. Ahora no sólo se
consultan datos, sino que se envían peticiones para actualizar,
insertar yborrar datos.
• Fase de Control
En esta fase se consolidan los caminos de acceso desde una
plataforma cliente particulara una plataforma servidora particular.
Los conceptos en los que se debe poner especial énfasis son los
siguientes:
• Transparencia en la ubicación. Significa que la aplicación cliente
nonecesita saber nada acerca de la ubicación (física o lógica) de los
datoso los procesos. La ubicación de los recursos debe estar
gestionada porservidores y estar representada en las plataformas
adecuadas de forma quese facilite su uso por parte de las
plataformas cliente.
• Gestión de copias. El sistema se debe configurar de forma que se
permitacopiar la información (datos o procesos) de los servidores.
• Especialización de los equipos servidores en servidores de bases
de datoso en servidores de aplicaciones. Los servidores de bases de
datoscontinúan ofreciendo servicios orientados a datos a través de
llamadasSQL o a través de procedimientos almacenados. En
cualquier caso, losservicios se orientan a mantener la integridad de
los datos. Por otro lado,los servidores de aplicaciones se centran en
los procesos implementandopartes de la lógica de la aplicación en la
parte servidora.
• Fase de Integración
Esta etapa se caracteriza por la funciónen conjunto con las que
funcionan la gestión de accesos, lagestión de copias y la gestión de
recursos. La gestión de la información se debe realizarde forma que
se pueda entregar la información controlada por los servidores
quecontienen los datos a las plataformas clientes que los requieran.
232
El concepto en que sebasa este tipo de gestión es la distinción entre
dos tipos de datos: datos de operación ydatos de información. Para
ajustarse a los posibles cambios en los procesos, los datos
deoperación varían continuamente mientras que los datos de
información son invariablesporque son de naturaleza histórica y se
obtienen tomando muestras en el tiempo de losdatos de operación.
• Fase de Madurez
Esta es la etapa final de una arquitectura cliente/servidor. Se
caracteriza por una visiónmás flexible de las plataformas físicas del
sistema que se contemplan como una únicaunidad lógica. Este
estado también se caracteriza porque la tecnología cliente/servidor
seha generalizado en la empresa. Ya no es un problema saber qué
componentes sedistribuyen en qué plataformas, porque los recursos
se pueden redistribuir para equilibrarla carga de trabajo y para
compartir los recursos de información. Lo fundamental aquí essaber
quién ofrece qué servicios. Para ello es necesario distinguir qué tipo
de servicios yrecursos se necesitan y conocer las características de
esta arquitectura basada enservicios.
En la fase de integración veíamos que se produce una distinción
entre datos deoperación y datos de información histórica. Por el
contrario, en un entorno de operacióncliente/servidor que se
encuentre en la fase de madurez, lo interesante es distinguir
entredos nuevos términos: organismo y grupo de trabajo. Esta
distinción se establecebasándose en sus diferencias organizativas.
El grupo de trabajo es el entorno en el quegrupos organizados de
personas se centran en tareas específicas de la actividad
delorganismo al que pertenecen. Estos equipos de personas
requieren informaciónpropia y reglas de trabajo particulares, que
pueden ser diferentes de las delaorganización.
Una arquitectura basada en servicios es la que se contempla como
una colección deconsumidores de servicios poco relacionados entre
sí y los productores de dichosservicios. La utilización de este tipo de
arquitectura permite pensar en nuevos retos dediseño:
233
• Desarrollo de componentes reutilizables entre distintas aplicaciones
y distintosgrupos de trabajo.
• Desarrollo de aplicaciones distribuidas.
• Gestión del desarrollo de aplicaciones entre distintos equipos, etc.
Los sistemas Cliente-Servidor utilizan varios tipos de servidores los
cuales son:
• Servidor de transacciones: también llamados sistemas servidores
deconsultas, proporcionan una interfaz a través de la cual los
clientesconsultan a la base de datos. Se pueden usar con SQL o
procedimientosalmacenados.
• Servidor de datos: permiten que los clientes puedan interactuar con
losservidores realizando peticiones de lectura o modificación de
datos enunidades tales como archivos o páginas.
Servidor de Transacciones
Estos servidores se ocupan de la interacción con los Clientes,
liberando al servidorde datos de esa actividad.
El servidor de transacciones se encarga de mantener un alto
rendimiento, disponibilidad eintegridad de datos. Asimismo, se
asegura que ninguna computadora tenga demasiadoo muy poco que
hacer.
Cuando un servidor de transacciones ve que a una computadora se
le ha dado demasiadotrabajo, automáticamente divide el trabajo
entre todas las computadoras disponibles,haciendo que las mismas
compartan recursos para evitar que alguna de las máquinas
secolapse.
Cuando actualiza bases de datos, el servidor de transacciones
también ejecuta lo que seconoce como el manejo de estados. Esto
quiere decir que si el servidor de transaccionespercibe que una
computadora no puede completar una transacción, hace que el
softwareabandone el trabajo y regrese a su estado original sin que
ocurra corrupción de datos.
234
Se basa en distintas normas, como pueda ser la ODBC4. Utiliza SQL
para lacomunicación con los clientes y ofrece la ejecución de
procedimientos remotos.
Son una parte que le es propiaa los servidores de datos
centralizados.
Servidor de datos
Estos no son necesariamente servidores de bases de datos
relacionales, pueden serservidores de archivos, servidores de
directorios, de objetos, etc.
Tienen una comunicación directa con los clientes, de forma que el
cliente debe tenertodas las funcionalidades del sistema servidor.
Sus características son:
• Envio de páginas o elementos.
• Bloqueo: gestionado por el servidor.
• Cache de datos: agiliza el envió de datos muy comunes.
• Cache de bloqueos.
• Open DataBase Connectivity (ODBC)
• Costo de comunicación
Sistemas Paralelos
El concepto de paralelismo supone la introducción de varios
procesadores para resolverun problema. Sabemos que un
procesador es diez veces más potente que un procesador
depotencia normal y es mucho más caro que diez procesadores de
potencianormal. Por ello, si paralelizamos nuestro programa es
decir, dividimosla carga computacional entre varios procesadores
distintos, vamos a obtener una mejoraen la relación entre costo y
rendimiento. Con menos inversión en hardware estamosobteniendo
mucha más potencia computacional.
Los sistemas paralelos mejoran la velocidad de procesamiento y
Entradas\Salidas mediante lautilización de UCP y discos en paralelo.
Las arquitecturas de sistemas paralelos varían entre dos extremos:
235
• No compartir nada.- Cada procesador tiene acceso exclusivo a su
memoriaprincipal y a sus unidades de disco.
• Memoria compartida.- Cualquier procesador tiene acceso a
cualquier módulo dememoria o unidad de disco a través de una
interconexión rápida.
• Un punto intermedio son los discos compartidos - donde cualquier
procesador tieneacceso a cualquier unidad de disco a través de la
interconexión, pero solo tieneacceso exclusivo a su memoria
principal.
• Jerárquico- Es un híbrido de las anteriores.
También se le llama grano grueso (varias computadoras
independientes) y granofino (varias computadoras integrados al
mismo sistema).
Cuando trabajamos con paralelismo debemos tener muy en cuenta
que se trabajacon recursos dependientes entre si, lo deseable es
quesean recursos independientesque permitan la ganancia de
velocidad lineal.
Ganancia de ampliabilidad
Es la capacidad para procesar tareas mas largas en el mismo tiempo
mediante unincremento de los recursos.
Existen dos tipos de ampliabilidad:
1. Ampliabilidad por lotes:
a. Aumentar el tamaño de la base de datos, y las tareas son trabajos
máslargos, cuyos tiempos de ejecución dependen del tamaño de la
base de datos (Ej.: recorrido secuencial)
b. El problema es el tamaño.
2. Ampliabilidad de transacciones:
a. Aumenta la velocidad a la que se envían las peticiones a la base
dedatos, y el tamaño crece proporcionalmente a la tasa de
transacción.
(Ej.: reservar una butaca en el cine: mas butaca, mas reservas)
236
b. Se adapta muy bien a la ejecución paralela, ya que las
transaccionesse ejecutan de forma concurrente.
c. Las transacciones duran lo mismo, por lo que es factible un
paralelismo lineal.
237
• Bus: todos los componentes del sistema pueden enviar o recibir
datos de unúnico bus de comunicaciones. El bus solo puede
gestionar la comunicaciónde un elemento en un momento dado.
• Malla: los componentes se organizan como nodos de una retícula.
Se utilizael paso de mensajes.
• Hipercubo: sistema de conexión n-dimensional basado en la
representaciónbinaria de los componentes. Es un sistema de altas
prestaciones y maseficiente que el de malla.
SISTEMAS DISTRIBUIDOS
En un sistema de datos distribuidos, la información se almacena en
variascomputadoras estas computadoras están conectadas por
redes de comunicación de alta velocidad o líneas telefónicas. Por lo
que pueden realizar transacciones globales,según tenga que
acceder solo a sus datos o a los datos almacenados en las bases de
datos distribuidas.
Objetivo primordial de los sistemas distribuidos es el
compartimiento fácil y eficientede los recursos entre múltiples
usuarios. Por esto, no se les debe confundir con lossistemas
paralelos, cuyo propósito es acelerar la ejecución de un cierto
programa en unúnico ordenador (normalmente aplicaciones
científicas), y están compuestos pormúltiples procesadores que
suelen compartir memoria y reloj.
Un sistema distribuido puede verse como un sistema formado por
varias computadorashaciendo algo conjuntamente, de lo que se
desprenden tres características inmediatas:
-Compuesto por múltiples computadoras. Un sistema distribuido
está compuesto de másde un sistema independiente, cada uno con
una o más CPU.s, memoria local, memoriasecundaria (discos) y, en
general, conexiones con periféricos de acceso inmediato (online).
-Hay interconexión entre ellos. Parece claro que si varias
computadoras distintas van acolaborar en la realización de tareas,
238
deben comunicarse y sincronizarse entre ellas, porlo que debe haber
alguna línea o red de interconexión.
-Tienen un estado compartido. Si las computadoras realizan un
trabajo conjunto,deben mantener un estado compartido, es decir,
todas las computadoras tienen la mismavisión del estado del sistema
distribuido: tablas, bases de datos del sistema, de servidores,etc.
239
Problemas de los sistemas distribuidos:
- Mayor costo de desarrollo del software: al tener que reunir una
serie decaracterísticas especiales.
- Mayor probabilidad de errores: como las computadoras operan en
paralelo, esmás difícil asegurar la corrección de los algoritmos.
- Mayor sobrecarga de procesamiento: el intercambio de mensajes y
el cómputoadicional necesario para conseguir la coordinación entre
las distintascomputadoras constituyen una forma especial de
sobrecarga.
240
otro, estos sistemas abarcanun solo puesto de trabajo y muchos
puestos de trabajo.
Las arquitecturas centralizadas no suelen ofrecer soluciones
excesivamente avanzadasen la gestión de bases de datos.
El advenimiento de los sistemas de gestión de bases de datos
relaciónales (RDBMS),Relational Database Management System
fue, realmente, la tecnología clave que hizoposible la arquitectura
informática cliente-servidor. El RDBMS servia como
almacéncentralizado para los datos de la organización. El RDBMS
estaba diseñado para gestionarel acceso multiusuario a un conjunto
compartido de datos. Toda la gestión de bloqueos yconexiones es
llevada a cabo por el RDBMS, que también se encarga de la
seguridad. Ellenguaje SQL (Structured Query Language), fue creado
como lenguaje universal deprogramación para solicitar datos
específicos a un RDBMS.
La arquitectura cliente-servidor fue realmente una combinación de
las mejores funcionesdel entorno basado en host y del entorno de
red de área local basado en PC. Estaarquitectura utiliza la potencia
de la PC para obtener los datos, junto conel complicado
procesamiento relativo a la lógica de negocio que añade valor a
dichosdatos. El RDBMS proporciona un área de almacenamiento
centralizada para los datos. Laarquitectura cliente-servidor puede
tomar muchas formas, dependiendo de cómo se elija, separar los
niveles de presentación, lógica de negocio y datos.
Las bases de datos distribuidas y paralelas han permitido que los
sistemas de base dedatos puedan crecer considerablemente en la
cantidad de información que manejan, yaque permiten sistemas
integrados con múltiples computadoras, las cuales pueden
estardistribuidas en distintas partes del mundo y cada una tener los
recursos suficientes paracontener y manejar por si sola grandes
cantidades de información. El empleo de sistemasparalelos y
distribuidos nos permite también dividir las consultas para que sean
realizadasa una mayor velocidad por distintas máquinas o
241
procesadores, incrementandoenormemente el rendimiento del
sistema de base de datos.
Sin embargo, no obstante las ventajas que presenta la distribución
de la información y elempleo de sistemas paralelos para manejarla,
estos esquemas presentan algunosinconvenientes, a tener en
cuenta, que deben ser manejados adecuadamente, tales como
lasdecisiones de la distribución física de la información; de que
manera será fragmentada, siexistirán copias de los fragmentos en
distintas localidades, de que manera se va a manejarla posibilidad
de modificaciones concurrentes de la misma información, como
secontrolarán las actualizaciones de la información duplicada para
mantener la consistencia,como se manejará la posibilidad de que,
debido a fallas en la comunicación, el sistemaquede dividido en dos
o más sub-redes fragmentadas y otros problemas más.
242
AUTOEVALUACION
D.N.I: ………………………………………………………………………
Consideraciones Generales
Intente responder en forma completa y sintética a lo
solicitado.
Se estima un máximo de 2 (dos) horas reloj para su
realización.
El examen se realizará sin material de apoyo o consulta.
Se recomienda la lectura completa del examen antes de
comenzar a responder.
No se considerarán los borradores.
Calificación
Se califica el examen de 1 (uno) a 10 (diez).
Se aprueba con un puntaje mínimo de 4 (cuatro) puntos
Deben responderse todas las preguntas, es decir, no se
puede aprobar el examen con alguna pregunta sin responder
aunque con las resueltas se llegara a la calificación de 4
(cuatro) o más puntos.
En cada pregunta se indica la puntuación de la misma entre
paréntesis.
Criterios de evaluación
Correcta interpretación de los enunciados.
Pertinencia de las respuestas.
243
Aplicación de conceptos teóricos y prácticos trabajados.
Coherencia en la respuesta de los enunciados.
Comprensión de los núcleos esenciales de los contenidos.
Elección y aplicación correcta de las sentencias SQL para el
punto 1 y 2.
Correcta aplicación de la técnica de Normalización para el
punto 3.
Correcta selección y conexión de los elementos del DER para
el punto 4
1) (2 puntos)
Dadas las siguientes estructuras de datos:
a)_ Crear mediante sentencias SQL las tres tablas incluyendo las
claves Prymary-Key y Foreign-Key.
2) (2 puntos)
Considerando las tablas del punto anterior y utilizando sentencias
SQL
244
3) (3 puntos)
Dada la siguiente estructura aplicar las tres formas normales.
4) (3 puntos)
Alquiler de películas.
Un negocio barrial se ocupa del alquiler de películas en dos formatos
dvd o vhs,
Existe una nomina de clientes donde se encuentran almacenados
todos sus datos,y la lista de las películas disponibles para alquilar,
con todos sus datos como ser titulo, director, calificación, actores,
genero, etc.
Cuando un cliente alquila una película debe quedar registrada la
fecha en la que se entrego la película, la fecha de devolución el
monto del alquiler y si abono o no.
Las películas son pedidas a proveedores externos, cuando se
solicita una película a un proveedor se debe confeccionar una orden
de compra, con los datos de la película, el proveedor y la cantidad
de películas compradas, junto con la fecha.
RESOLUCION AUTOEVALUACION
1) a)
CREATE TABLE profesores
(nro_profesor NUMBER(5) NOT NULL,
245
apellido CHAR(30) NOT NULL,
nombre CHAR(35) NOT NULL,
tipo_documento CHAR(3) NOT NULL,
nro_documento NUMBER(8) NOT NULL
UNIQUE (tipo_documento, nro_documento),
PRIMARY KEY (nro_profesor);
246
INSERT INTO materias
(cod_materia, nombre_materia, año, carga_horario)
VALUES
(6, “Programacion II”, 2, 8);
b)_
SELECT apellido, nombre, count (*)
FROM profesores p, cursos c
WHERE p.nro_profesor = c.nro_profesor
GROUP_BY apellido, nombre
HAVING count(*) > 1;
247
FACTURA_DETALLE: @#factura + @#articulo + cantidad_articulo +
precio_por_cantidad
4)_
248
Diccionario de Datos
249
PELICULAS: @Cod_Pelicula + Titulo + Director + Calificación +
Actores + Genero + Año
250
GLOSARIO
Administrador de Bases de Datos: encargado de asegurar la
disponibilidad, confidencialidad y la integridad de los datos.
251
Eficiente: Capacidad para lograr un fin empleando los mejores
medios posibles.
LAN: Local Area Network (Red de Area Local). Una red local es la
interconexión de varias computadoras y periféricos. Su extensión
está fisicamente limitada a un edificio. Su aplicación más utilizada es
la interconexión de computadoras en oficinas, fábricas, etc. Para
poder compartir recursos e intercambiar datos y aplicaciones.
252
Red de Area Local: véase LAN.
253
BIBLIOGRAFÍA DEL ESPACIO CURRICULAR
• Ian Gilfillan, La Biblia del MySql, Editorial Anaya
Multimedia, 2017
• Beynon Davies Paul, Sistemas de Bases de Datos,
Editorial Reverte, 2014
• Cuadra Dolores. Desarrollo de Bases de Datos: Casos
Prácticos desde el Análisis a la Implementación.2º ed.
Editorial: Alfaomega Grupo Editor, 2013.
• Coronel Carlos; Morris Steven Rob Peter. Base de Datos:
Diseño, Implementación y Administración. 9º ed. Editorial:
Cengage Learning, 2014
• Jacobo Pavón Puertas, Creación de un sitio web con PHP
y MySQL. 5ª Edición Actualizada, Editorial Ra Ma, 2015
Ebook
• Elena Castro Galán, César de Pablo Sánchez, Francisco
Javier Calle Gómez, Harith Aljymaily, Jesica Rivero Espinosa,
José Luis Martínez Fernández, Isabel Segura Bedmar, Sonia
García Manzano; Desarrollo de Bases de Datos: casos
prácticos desde el análisis a la implementación. 2ª Edición
actualizada, Casos prácticos desde el análisis a la
implementación, Editorial Alfaomega Grupo Editor, 2013.
254