Académique Documents
Professionnel Documents
Culture Documents
Informáticos
BASES DE DATOS
Fabián Castellano
Año 2017
INDICE
Presentación 4
Iconos Utilizados en el Módulo 5
Práctica Profesionalizante 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, 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 recuperatorio cada 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
Práctica Profesionalizante.
6
La Práctica Profesionalizante deberá seguir los siguientes pasos y
comenzará cuando se promedie la unidad 2 del programa:
7
UNIDAD1: INTRODUCCION A LAS BASES DE DATOS.
Objetivo de la unidad 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
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 consultas que 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; el SGBD 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 datos agregar, eliminar o modificar los datos de ella
siempre se respeten las características de seguridad que
haya establecido 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 de usuarios para
comunicarse con la base de datos y de las herramientas
necesarias para el administrador para definir los mecanismos
de seguridad y mantenimiento de la base de datos.
Ejercitación
Siguiendo el razonamiento empleado en los últimos ejemplos,
resolver indicando cuales son los pasos a seguir.
15
3)_ Como se obtiene una 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 indicando cuales 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ún
error (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 las llamadas 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 este modelo de datos.
El modelo E/R fue propuesto por Peter Chen en 1976. Desde
entonces muchos autores se han interesado 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 requisitos o
especificaciones del problema.
En la realización del esquema o diseño conceptual de cualquier base
de datos es fundamental el conocimiento del problema a modelar y
es en este conocimiento donde representan un papel primordial los
usuarios finales del sistema, pues es en esta primera etapa de
modelización en la que el diseñador de la base de datos debe hacer
tantas entrevistas como sean necesarias con los usuarios para
conseguir comprender todas las especificaciones del problema. Una
vez conocidos los 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 y notaciones que permiten formalizar la semántica
del mundo real que se pretende modelar en un diagrama que
denominamos esquema de la Base de Datos.
El concepto de Modelo Relacional, específicamente el
llamado Modelo Entidad Relación es 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 y todavía no aprobó ningún final.
Para el caso 1,1 condicional.
50
Ahora veamos como se representa una relación ternaria.
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
atributos. Decimos que esta otra entidad es el propietario
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
En algunos casos una entidad tiene varias subagrupaciones
adicionales que deben representarse explicitamente por su
importancia en la base de datos.
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
Veamos como se representan un supertipo y sus subtipos en un
Diagrama Entidad Relación.
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.
Objetivos de la unidad 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ón de 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
primaria sean 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
Vemos que el atributo Cantidad Total Pedida de Articulos puede ser
calculado sumando todas las Cantidades de ese Nro_Pedido, por lo
tanto podemos eliminarlo. También vemos que la Razon_Social
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
Dividimos la estructura para cumplir con la Primera Forma Normal.
89
Hasta ahora considerábamos las relaciones como una conexión
entre datos, pero veremos como son representadas físicamente
según el tipo.
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.
90
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.
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.
91
1,N 1,M
A Tiene B
A = @A1 + A2 + A3 + A4.
B = @B1 + B2 + B3 + B4.
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.
92
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:
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.
93
Las entidades existentes que luego se transforman en tablas con las
tres nuevas tablas quedarían como:
A = @A1 + A2 + A3 + A4.
B = @B1 + B2 + B3 + B4.
C = @C1 + C2 + C3+ C4.
A-B = @A1 + @B1.
A-C = @A1 + @C1.
B-C = @B1 + @C1.
94
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
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
Televisores se encuentra en primera, segunda y tercera forma
normal.
Diagrama de Tablas
96
Ahora vemos la composición de las tablas.
Operarios
Televisores
Importador
Componentes
97
Cod_componente clave primaria
Mapa_de_Armado
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.
98
Diccionario de Datos
Ritmo = @#Ritmo + Nombre_Ritmo + Características.
Profesor = @#Profesor + Apellido_Profesor + Nombre_Profesor.
Alumno = @#Alumno + Apellido_Alumno + Nombre_Alumno.
Examen_Rendido = @#Ritmo + @#Alumno + @Fecha +
Calificación.
Diagrama de Tablas
99
Ritmo Profesor
Examen
Rendido
Alumno
Ejercicio Resuelto:
100
Dado el siguiente Diagrama Entidad Relación y su Diccionario de
Datos, construir el Diagrama de Tablas y su Diccionario de Datos.
Trenes de Larga Distancia
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.
Diagrama de Tablas.
101
Locomotora Maquinista
Viaje
Recorrido
Ejercitación.
102
Discos 0, N 1,1 Genero Musical
1,M
0,M
1,N
1,N
Compañía
Banda o Solista Grabación
Grabadora
Ejercitación.
Considerando el enunciado que se encuentra mas arriba sobre
Empresa Constructora de Edificios del cual contamos con el
103
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.
Objetivo de la unidad 4:
104
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
motivos legales, convirtiéndose en SQL. El prototipo (System R), privada, no lucrativa,
que administra y
basado en este lenguaje, se adoptó y utilizó internamente en IBM y coordina la
lo adoptaron algunos de sus clientes elegidos. Gracias al éxito de estandarización
voluntaria y el
este sistema, que no estaba todavía comercializado, también otras sistema de
compañías empezaron a desarrollar sus productos relacionales conformidad a los
estándares, en los
basados en SQL. A partir de 1981, IBM comenzó a entregar sus EEUU.
productos relacionales y en 1983 empezó a vender DB2. En el curso
de los años ochenta, numerosas compañías (por ejemplo Oracle y
Sybase entre otros) comercializaron productos basados en SQL, que
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).
105
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.
Alumnos
Nro_ Apellido Nombre Tipo_Doc Nro_Doc Sexo Pais_Nacimiento
Alumno
1 Garcia Jose Ramon DNI 10.455.656 M AR
106
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
Materias Correlativas
Cod_Materia Cod_Materia_Correlativa
A6 A2
A7 A1
A7 A3
107
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
108
Las instrucciones en SQL se dividen basicamente en dos categorías:
CREATE TABLE
109
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.
110
pais_nacimiento que apunta al campo pais_nacimiento de la tabla
paises.
Ahora vamos a crear las otras tablas:
111
Como podemos observar esta cuarta 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.
112
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.
113
La instrucción ALTER TABLE también sirve para modificar
uno o más campos de la tabla. Por ejemplo si queremos que el
campo email pase de ser un char(30) a un char(35), lo hacemos de
la siguiente manera.
114
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.
115
Con las cuatro instrucciones INSERT anteriores ingresamos a la
tabla paises, cuatro filas que representan los datos de la tabla paises
que vimos mas arriba.
Trabajemos ahora sobre la tabla alumnos ejecutando las
instrucciones INSERT.
116
(nro_alumno, apellido, nombre, tipo_doc, nro_doc, sexo,
pais_nacimiento)
VALUES
(5, “Sosa”, “Aldo”, “DNI”, 10878767, “M”, “BO”);
117
(cod_materia, denominacion, carga_horaria, anio_carrera)
VALUES
(“A5”, “Teoria de Sistemas”, 2, 1);
118
INSERT INTO materias
(cod_materia, denominacion, carga_horaria, anio_carrera)
VALUES
(“A12”, “Administración de Proyectos”, 6, 3);
VALUES
(“A1”, 1, “10/03/2000”, 6)
119
INSERT INTO finales_rendidos
(cod_materia, nro_alumno, fecha_final, nota)
VALUES
(“A2”, 3, “03/03/2000”, 2);
120
INSERT INTO materias_correlativas
(cod_materia, cod_materia_correlativa)
VALUES
(“A6”, “A2”);
121
VALUES
(“A11”, “A3”);
122
INSERT INTO materias_correlativas
(cod_materia, cod_materia_correlativa)
VALUES
(“A14”, “A2”);
DELETE.
Esta instrucción utiliza para borrar filas de una tabla dada una
condición.
Supongamos que queremos borrar todas las filas de la tabla
alumnos, la sintaxis es la siguiente.
DELETE FROM alumnos;
123
En este caso no hay ninguna condición en la instrucción se eliminan
todas las filas de la tabla alumnos.
Ahora veamos como podemos borrar las filas de una tabla con
alguna condición.
Supongamos que quiero borrar aquellas filas de la tabla alumnos
cuyo sexo sea masculino o sea que tengan el valor “M” en el campo
sexo.
124
En este caso se borra la fila cuyo campo denominación tiene el valor
Algebra, en este caso borramos una sola fila de la tabla materias.
DELETE alumnos
WHERE nro_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
WHERE nro_doc <= 20000000;
125
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 AND nro_alumno <= 4;
DELETE finales_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.
126
Necesitamos eliminar de la tabla finales_rendidos aquellas filas que
tengan en el campo nota un número menor o igual a 3 o una nota
mayor o igual a 9.
DELETE finales_rendidos
WHERE nota <= 3 OR nota >= 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) OR nota = 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
127
valores 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;
128
Si no incluimos la cláusula WHERE no estaríamos restringiendo por
ninguna condición y modificaríamos los 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 AND año_carrera = 1;
UPDATE materias
SET carga_horaria = carga_horaria + 1
WHERE año_carrera = 3;
UPDATE alumnos
SET tipo_doc = “CI”
129
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”
WHERE genero = “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
130
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
131
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.
132
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
133
SELECT nro_alumno,
apellido,
nombre,
tipo_doc,
nro_doc,
sexo,
pais_nacimiento
FROM alumnos;
SELECT *
FROM alumnos;
134
SELECT nro_alumno,
apellido,
nombre
FROM alumnos
WHERE sexo = ‘M’;
El resultado es el siguiente:
SELECT nro_alumno,
apellido,
nombre
FROM alumnos
WHERE sexo = 'F'
AND pais_nacimieto = “AR”
El resultado es el siguiente:
135
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)
136
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
FROM alumnos
WHERE nro_doc > 20000000
AND tipo_doc = “DNI”;
El resultado es el siguiente:
137
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
138
El resultado es el siguiente:
SELECT nro_alumno,
apellido,
nombre
FROM alumnos
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
139
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
140
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;
141
SELECT cod_materia,
nro_alumno,
fecha_final,
nota,
pais_nacimiento,
nombre_pais
FROM finales_rendidos, paises;
El resultado es el siguiente:
142
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;
143
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:
144
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:
145
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
146
b)_ Seleccionar los apellidos y los nombres de aquellos empleados
mujeres (los que tienen la letra “F” en el campo sexo).
147
SELECT nro_alumo,
apellido,
nombre,
tipo_doc,
nro_doc
FROM alumnos
WHERE pais_nacimiento <> “AR”;
148
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;
149
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
150
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
151
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
152
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 a valores 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;
153
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
WHERE cod_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:
154
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
155
3
4
1
2
1
4
156
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
157
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:
158
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
159
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:
160
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
161
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
162
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
163
LOWER
Esta función transforma una cadena de caracteres a
minúscula del valor de una columna.
Veamos un ejemplo:
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
164
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.
165
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 de la columna los espacios en blanco
desde la izquierda. Su sintaxis es LTRIM(columna).
SELECT LTRIM(apellido)
FROM profesores;
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
166
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.
167
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.
168
Nota SIGN(nota)
6 1
2 1
7 1
9 1
4 1
5 1
8 1
7 1
169
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.
170
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 y
necesitamos 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
171
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
172
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
FROM finales_rendidos
WHERE Nota >= (SELECT AVG(Nota)
FROM finales_rendidos);
173
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
FROM finales_rendidos
WHERE Nota >= 6;
El resultado es el siguiente:
nro_alumno
1
4
1
4
3
El resultado es el siguiente:
174
nro_alumno
1
4
3
MINUS
Colores 2
Nombre Color
Blanco
Gris
SELECT nombre_color
FROM COLORES1
MINUS
SELECT nombre_color
FROM COLORES 2
175
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
176
SELECT fecha
FROM Ventas Internet
INTERSECT
SELECT fecha
FROM Ventas 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:
177
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
FROM alumnas_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.
178
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.
179
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 es CREATE INDEX.
Veamos como podemos crear un índice sobre la tabla alumnos, en base
al apellido del alumno.
180
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.
181
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.
182
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:
SELECT nro_factura.CURRVAL
FROM DUAL;
SELECT nro_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.
183
ALTER SEQUENCE (nombre de la secuencia)
(INCREMENT BY n)
(MAXVALUE n)
(MINVALUE n)
(CYCLE / NOCYCLE);
Ejemplo:
ALTER SEQUENCE nro_factura_seq
(MAXVALUE 10000);
Es decir cambiamos el máximo valor que puede tomar la secuencia.
184
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
185
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
186
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
187
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
188
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;
189
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
190
Proveedores
a)_
SELECT DISTINCT Nro_Prov
FROM Proveedores-Articulos
NOT IN (SELECT Nro_Prov
FROM Proveedores-Articulos
WHERE Nro_Articulo = 20);
191
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.
192
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
193
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”);
194
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 AND
8)));
195
c)_
SELECT Nro_Articulo
FROM Articulos
WHERE (Peso >= 4 AND Peso <= 8)
OR Nro_Articulo IN (SELECT Nro_Articulo
FROM Proveedores_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
196
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
197
(RDBMS). Es un programa que permite almacenar una enorme
cantidad de datos y de administrarlos para cubrir las necesidades de
cualquier tipo de organización, desde pequeñas a grandes empresas
y organismos administrativos. MySQL compite con sistemas RDBMS
propietarios 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.
198
create database instituto;
Create DataBase instituto;
show databases;
show tables;
199
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:
200
drop table if exists alumnos;
201
Estos son algunos tipos de datos básicos:
= igual
<> distinto
> mayor
< menor
>= mayor o igual
<= menor o igual
202
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.
203
Para establecer que un campo autoincremente sus valores
automáticamente, éste debe ser entero (integer) y debe ser clave
primaria:
204
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.
205
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.
206
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.
207
- tinyint(x): define un valor entero pequeño, cuyo rango es de -128 a
127. El tipo sin signo va de 0 a 255.
208
time: una hora. Su formato es "HH:MM:SS". El rango va de "-
838:59:59" a "838:59:59".
209
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');
210
retorna "Juan-Pedro-Luis".
select length('Hola');
devuelve 4.
retorna 2.
211
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".
212
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".
213
-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 "
.
214
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:
215
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".
216
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.
217
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.
218
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;
219
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.
220
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).
221
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".
222
UNIDAD 5: ARQUITECTURA DE SISTEMAS DE BASES
DE DATOS.
Objetivo de la unidad 5.
Al término de la unidad el alumno identificará diversas
arquitectura de sistemas de base de datos como las centralizadas, el
sistema cliente / servidor, sistemas paralelos y distribuidas.
Introducción
La arquitectura de un sistema de base de datos esta intimamente
relacionada con el sistema informático en 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 de tareas en un servidor y en los sistemas de
clientes. De aquí surge el sistema 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 forma tradicional de
una organización, con estructura centralizada y jerárquica, dividida
en departamentos. Cada departamento tiene actividades muy
específicas, las relaciones que pueda establecer con otros
departamentos está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
sistema informático existente, sin interactuar con ningún otro
sistema.
223
La arquitectura está centralizada en un servidor central al que sólo
tienen acceso los usuarios del departamento correspondiente, no
puede estar ubicada en varias partes, sino que debe estar en una
sola computadora, a la cual podrán ingresar los usuarios que
necesiten hacer uso.
Las tareas de gestión y control son más sencillas pero no suelen
ofrecer soluciones excesivamente avanzadas en la gestión de bases
de datos.
Características funcionales
• La computadora central es la única computadora de la
organización.
• En ella encontramos todos los datos y es la responsable de toda la
información.
• Desde la computadora central se controla el acceso a múltiples
terminales conectadas a través de productos integrados al equipo.
• Las terminales funcionan como computadoras esclavas de la
computadora central.
• Cada usuario tiene un número asignado, derechos y prioridades de
ejecución en la máquina de sus programas o peticiones.
Características físicas
• Una única computadora corporativa con la suficiente capacidad
para soportar todos los procesos de la organizació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 (o computadoras con emulación de
terminal) como puestos de trabajo conectados en grupos a la
computadora central.
224
Características lógicas
• Se ejecutan todos los procesos en la computadora central.
• Si la empresa está dividida geográficamente y dispone de
comunicaciones, todos los puestos de trabajo están conectados a la
computadora 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 la computadora, al ser éste único y residente en un
único Centro de Cómputos.
• Concentración de todo el personal de desarrollo y administración
del sistema en un único Centro de Cómputos.
• Alto nivel de seguridad.
• Entre los inconvenientes destacan:
• Alto precio del equipo, al necesitarse mucha potencia de
tratamiento para dar servicio a todos los usuarios que estén
conectados y gran espacio en disco para almacenar todos los datos
de la organización.
• Alta dependencia de las comunicaciones si existen. En caso de
caída de una línea, todos los puestos de trabajo dependientes de
dicha línea quedan inactivas.
• Interfaces de usuario de caracteres, donde no encontramos
gráficos y por lo tanto, poco amigables.
SISTEMAS CLIENTE-SERVIDOR
La Arquitectura Cliente/Servidor.- Es un modelo para el desarrollo de
sistemas de información en el que las transacciones se dividen en
procesos independientes que cooperan entre sí para intercambiar
información, servicios o recursos. Se denomina cliente al proceso
que inicia el diálogo o solicita los recursos y servidor al proceso que
225
da respuesta a las solicitudes.
La Arquitectura múltiples clientes / múltiples servidores.- Son mas
flexibles, ya que la base de datos es distribuida en varios servidores.
Cada cliente tiene un servidor directo al cual hace 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. La base de datos esta físicamente distribuida en
diferentes lugares fragmentado y replicando los datos. La
fragmentación es deseable ya que hace posible el poner los datos
cerca de los usuarios que los necesitan, de esta forma reduciendo
potencialmente el costo de la transmisión y reduciendo el tamaño de
las relaciones involucradas en las consultas de los usuarios.
Entre las principales características de la arquitectura
cliente/servidor se pueden destacar las 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 equipo fí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.
226
Cliente
Servidor
Limitaciones:
- El número usuarios máximo es de 100. Más allá de este número de
usuarios se excede la capacidad de procesamiento.
227
- No hay independencia entre la interfaz de usuario y los
tratamientos, lo que hace delicada 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 2 capas. La tercera capa (servidor intermedio) está
entre el interfaz de usuario (cliente) y el gestor de datos (servidor).
La capa intermedia proporciona gestión del procesamiento y en ella
se ejecutan las reglas y lógica de procesamiento. Permite cientos de
usuarios (en comparación con sólo 100 usuarios de la arquitectura
de 2 capas). La arquitectura de 3 capas se usa cuando se necesita
un diseño cliente / servidor que proporcione, en comparación con la
arquitectura de 2 capas, incrementar el rendimiento, flexibilidad,
mantenibilidad, reusabilidad y escalabilidad mientras se esconde la
complejidad del procesamiento distribuido al usuario.
Limitaciones:
Construir una arquitectura de 3 capas es una tarea complicada. Las
herramientas de programación que soportan el diseño de
arquitecturas de 3 capas no proporcionan todos los servicios
deseados que se necesitan para soportar un ambiente de
computación distribuida. Un problema potencial en el diseño de
arquitecturas de 3 capas es que la separación de la interfaz gráfica
de usuario, la lógica de gestión de procesamiento y la lógica de
datos no es siempre obvia. Algunas lógicas de procesamiento de
transacciones pueden aparecer en las 3 capas. La ubicación de una
función particular en una capa u otra debería basarse en criterios
como los siguientes:
- Facilidad de desarrollo y comprobación.
228
- 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án conectadas a través de la red. El middleware es
el software que proporciona un conjunto de servicios que permite el
acceso transparente a los recursos en una red. El middleware es un
módulo intermedio que actúa como conductor entre dos módulos de
software. Para compartir datos, los dos módulos de software no
necesitan saber cómo comunicarse entre ellos, sino cómo
comunicarse con el módulo de middleware.
Es el encargado del acceso a los datos: recibe las consultas y datos
recuperados directamente de la aplicación y los transmite por la red.
También se ocupa de enviar de 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,
como hojas de cálculo y herramientas de acceso a bases de datos.
• Mediante la integración de las aplicaciones cliente/servidor con las
aplicaciones personales de uso habitual, los usuarios pueden
construir soluciones propias que se ajusten a sus necesidades muy
variables.
• Una interfaz gráfica de usuario bien diseñada reduce el tiempo de
aprendizaje 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 compartir los servidores
229
(habitualmente caros) y dispositivos periféricos (como impresoras)
entre máquinas clientes permite un mejor rendimiento del conjunto.
• Proporcionan un mejor acceso a los datos. La interfaz de usuario
ofrece una forma homogénea de ver el sistema, independientemente
de los cambios o actualizaciones que se produzcan en él y de la
ubicación de la información.
• El movimiento de funciones desde un servidor central hacia
servidores o clientes locales transmite los costos de ese proceso
hacia 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
grandes bloques de información por la red hacia los ordenadores
personales o estaciones de trabajo para su proceso. Los servidores
controlan los datos, procesan peticiones y después transfieren sólo
los datos requeridos a la máquina cliente. Entonces, la máquina
cliente presenta los datos al usuario mediante interfaces amigables.
Todo esto reduce el tráfico de la red, lo que facilita que pueda
soportar un mayor número de usuarios.
• Tanto el cliente como el servidor pueden escalarse para ajustarse a
las necesidades de las aplicaciones. Las UCPs utilizadas en los
respectivos equipos pueden dimensionarse a partir de las
aplicaciones y el tiempo de respuesta que se requiera.
• La existencia de varias UCPs proporciona una red más confiable:
un error en uno de los equipos no significa necesariamente que el
sistema deje de funcionar.
• En una arquitectura como ésta, los clientes y los servidores son
independientes entre si con lo que pueden renovarse para aumentar
sus funciones y capacidad de forma independiente, sin afectar al
resto del sistema.
• La arquitectura de los sistemas cliente/servidor permite el uso de
computadoras especializadas (servidores de base de datos,
estaciones de trabajo para CAD, etc.).
230
• Permite centralizar el control de sistemas que estaban
descentralizados, como por ejemplo la gestión de computadoras
personales que antes estuvieron aislados.
Desventajas
• Hay una alta complejidad tecnológica al tener que integrar una gran
variedad de productos.
• Requiere un fuerte rediseño de todos los elementos involucrados
en los sistemas de información (modelos de datos, procesos,
interfaces, comunicaciones, almacenamiento de datos, etc.).
Además, en la actualidad existen pocas herramientas que ayuden a
determinar la mejor forma de dividir las aplicaciones entre la parte
cliente y la parte servidor.
• Es más difícil asegurar un elevado grado de seguridad en una red
de clientes y servidores que en un sistema con un único servidor
centralizado.
• A veces, los problemas de congestión de la red pueden degradar el
rendimiento del sistema por debajo de lo que se obtendría con una
única máquina (arquitectura centralizada). También la interfaz
gráfica de usuario puede a veces hacer más lento el funcionamiento
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 un funcionamiento 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 entre plataformas. Los dos tipos de plataforma son:
• Una plataforma cliente para la presentación (generalmente una
computadora de escritorio).
231
• Una plataforma servidora (como por ejemplo el servidor de una
base de datos 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
una computadora personal a modo de cliente y que genera
peticiones de datos que van a través de la red hasta el servidor de
base de datos. Estas peticiones se procesan, dando como resultado
un conjunto 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
y servidor de la mejor forma posible.
• Cómo gestionar la arquitectura para que permita que cualquier
cliente se conecte con cualquier servidor.
• Fase de Proliferación
La segunda etapa de una arquitectura cliente/servidor se caracteriza
por la proliferación de plataformas clientes y servidoras. Ahora, el
entorno para la interacción entre clientes y servidores 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
la estructura del organismo donde se está implantando la
arquitectura. El mercado ofrece algunas soluciones que mejoran la
interoperabilidad y que se basan en conexiones modulares que
utilizan entre otros:
• Drivers en la parte cliente
• Pasarelas (gateways) a bases de datos
• Especificaciones de protocolos cliente/servidor, etc.
232
• Los requisitos de actualización de datos pasan a formar parte de
los requisitos solicitados al sistema cliente/servidor. Ahora no sólo se
consultan datos, sino que se envían peticiones para actualizar,
insertar y borrar datos.
• Fase de Control
En esta fase se consolidan los caminos de acceso desde una
plataforma cliente particular a 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 no
necesita saber nada acerca de la ubicación (física o lógica) de los
datos o los procesos. La ubicación de los recursos debe estar
gestionada por servidores y estar representada en las plataformas
adecuadas de forma que se facilite su uso por parte de las
plataformas cliente.
• Gestión de copias. El sistema se debe configurar de forma que se
permita copiar la información (datos o procesos) de los servidores.
• Especialización de los equipos servidores en servidores de bases
de datos o en servidores de aplicaciones. Los servidores de bases
de datos continúan ofreciendo servicios orientados a datos a través
de llamadas SQL o a través de procedimientos almacenados. En
cualquier caso, los servicios se orientan a mantener la integridad de
los datos. Por otro lado, los servidores de aplicaciones se centran en
los procesos implementando partes de la lógica de la aplicación en
la parte servidora.
• Fase de Integración
Esta etapa se caracteriza por la función en conjunto con las que
funcionan la gestión de accesos, la gestión de copias y la gestión de
recursos. La gestión de la información se debe realizar de forma que
se pueda entregar la información controlada por los servidores que
contienen los datos a las plataformas clientes que los requieran. El
233
concepto en que se basa este tipo de gestión es la distinción entre
dos tipos de datos: datos de operación y datos de información. Para
ajustarse a los posibles cambios en los procesos, los datos de
operación varían continuamente mientras que los datos de
información son invariables porque son de naturaleza histórica y se
obtienen tomando muestras en el tiempo de los datos de operación.
• Fase de Madurez
Esta es la etapa final de una arquitectura cliente/servidor. Se
caracteriza por una visión más flexible de las plataformas físicas del
sistema que se contemplan como una única unidad lógica. Este
estado también se caracteriza porque la tecnología cliente/servidor
se ha generalizado en la empresa. Ya no es un problema saber qué
componentes se distribuyen en qué plataformas, porque los recursos
se pueden redistribuir para equilibrar la carga de trabajo y para
compartir los recursos de información. Lo fundamental aquí es saber
quién ofrece qué servicios. Para ello es necesario distinguir qué tipo
de servicios y recursos se necesitan y conocer las características de
esta arquitectura basada en servicios.
En la fase de integración veíamos que se produce una distinción
entre datos de operación y datos de información histórica. Por el
contrario, en un entorno de operación cliente/servidor que se
encuentre en la fase de madurez, lo interesante es distinguir entre
dos nuevos términos: organismo y grupo de trabajo. Esta distinción
se establece basándose en sus diferencias organizativas. El grupo
de trabajo es el entorno en el que grupos organizados de personas
se centran en tareas específicas de la actividad del organismo al que
pertenecen. Estos equipos de personas requieren información propia
y reglas de trabajo particulares, que pueden ser diferentes de las de
la organización.
Una arquitectura basada en servicios es la que se contempla como
una colección de consumidores de servicios poco relacionados entre
sí y los productores de dichos servicios. La utilización de este tipo de
arquitectura permite pensar en nuevos retos de diseño:
234
• Desarrollo de componentes reutilizables entre distintas aplicaciones
y distintos grupos 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
de consultas, proporcionan una interfaz a través de la cual los
clientes consultan a la base de datos. Se pueden usar con SQL o
procedimientos almacenados.
• Servidor de datos: permiten que los clientes puedan interactuar con
los servidores realizando peticiones de lectura o modificación de
datos en unidades tales como archivos o páginas.
Servidor de Transacciones
Estos servidores se ocupan de la interacción con los Clientes,
liberando al servidor de datos de esa actividad.
El servidor de transacciones se encarga de mantener un alto
rendimiento, disponibilidad e integridad de datos. Asimismo, se
asegura que ninguna computadora tenga demasiado o muy poco
que hacer.
Cuando un servidor de transacciones ve que a una computadora se
le ha dado demasiado trabajo, automáticamente divide el trabajo
entre todas las computadoras disponibles, haciendo que las mismas
compartan recursos para evitar que alguna de las máquinas se
colapse.
Cuando actualiza bases de datos, el servidor de transacciones
también ejecuta lo que se conoce como el manejo de estados. Esto
quiere decir que si el servidor de transacciones percibe que una
computadora no puede completar una transacción, hace que el
software abandone el trabajo y regrese a su estado original sin que
ocurra corrupción de datos.
235
Se basa en distintas normas, como pueda ser la ODBC4. Utiliza SQL
para la comunicación con los clientes y ofrece la ejecución de
procedimientos remotos.
Son una parte que le es propia a los servidores de datos
centralizados.
Servidor de datos
Estos no son necesariamente servidores de bases de datos
relacionales, pueden ser servidores de archivos, servidores de
directorios, de objetos, etc.
Tienen una comunicación directa con los clientes, de forma que el
cliente debe tener todas 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 resolver un problema. Sabemos que un
procesador es diez veces más potente que un procesador de
potencia normal y es mucho más caro que diez procesadores de
potencia normal. Por ello, si paralelizamos nuestro programa es
decir, dividimos la carga computacional entre varios procesadores
distintos, vamos a obtener una mejora en la relación entre costo y
rendimiento. Con menos inversión en hardware estamos obteniendo
mucha más potencia computacional.
Los sistemas paralelos mejoran la velocidad de procesamiento y
Entradas\Salidas mediante la utilización de UCP y discos en
paralelo.
236
Las arquitecturas de sistemas paralelos varían entre dos extremos:
• No compartir nada.- Cada procesador tiene acceso exclusivo a su
memoria principal y a sus unidades de disco.
• Memoria compartida.- Cualquier procesador tiene acceso a
cualquier módulo de memoria o unidad de disco a través de una
interconexión rápida.
• Un punto intermedio son los discos compartidos - donde cualquier
procesador tiene acceso a cualquier unidad de disco a través de la
interconexión, pero solo tiene acceso 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 grano fino (varias computadoras integrados al
mismo sistema).
Cuando trabajamos con paralelismo debemos tener muy en cuenta
que se trabaja con recursos dependientes entre si, lo deseable es
que sean recursos independientes que permitan la ganancia de
velocidad lineal.
Ganancia de ampliabilidad
Es la capacidad para procesar tareas mas largas en el mismo tiempo
mediante un incremento 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ás largos, 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
de datos, y el tamaño crece proporcionalmente a la tasa de
transacción.
(Ej.: reservar una butaca en el cine: mas butaca, mas reservas)
237
b. Se adapta muy bien a la ejecución paralela, ya que las
transacciones se ejecutan de forma concurrente.
c. Las transacciones duran lo mismo, por lo que es factible un
paralelismo lineal.
238
• Bus: todos los componentes del sistema pueden enviar o recibir
datos de un único bus de comunicaciones. El bus solo puede
gestionar la comunicación de un elemento en un momento dado.
• Malla: los componentes se organizan como nodos de una retícula.
Se utiliza el paso de mensajes.
• Hipercubo: sistema de conexión n-dimensional basado en la
representación binaria de los componentes. Es un sistema de altas
prestaciones y mas eficiente que el de malla.
SISTEMAS DISTRIBUIDOS
En un sistema de datos distribuidos, la información se almacena en
varias computadoras 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 eficiente de los recursos entre múltiples
usuarios. Por esto, no se les debe confundir con los sistemas
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 por múltiples procesadores que
suelen compartir memoria y reloj.
Un sistema distribuido puede verse como un sistema formado por
varias computadoras haciendo algo conjuntamente, de lo que se
desprenden tres características inmediatas:
-Compuesto por múltiples computadoras. Un sistema distribuido
está compuesto de más de un sistema independiente, cada uno con
una o más CPU.s, memoria local, memoria secundaria (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 a colaborar en la realización de tareas,
239
deben comunicarse y sincronizarse entre ellas, por lo 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 misma visión del estado del
sistema distribuido: tablas, bases de datos del sistema, de
servidores, etc.
240
Problemas de los sistemas distribuidos:
- Mayor costo de desarrollo del software: al tener que reunir una
serie de características especiales.
- Mayor probabilidad de errores: como las computadoras operan en
paralelo, es más difícil asegurar la corrección de los algoritmos.
- Mayor sobrecarga de procesamiento: el intercambio de mensajes y
el cómputo adicional necesario para conseguir la coordinación entre
las distintas computadoras constituyen una forma especial de
sobrecarga.
241
otro, estos sistemas abarcan un solo puesto de trabajo y muchos
puestos de trabajo.
Las arquitecturas centralizadas no suelen ofrecer soluciones
excesivamente avanzadas en 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 hizo posible la arquitectura
informática cliente-servidor. El RDBMS servia como almacén
centralizado para los datos de la organización. El RDBMS estaba
diseñado para gestionar el acceso multiusuario a un conjunto
compartido de datos. Toda la gestión de bloqueos y conexiones es
llevada a cabo por el RDBMS, que también se encarga de la
seguridad. El lenguaje SQL (Structured Query Language), fue
creado como lenguaje universal de programación para solicitar datos
específicos a un RDBMS.
La arquitectura cliente-servidor fue realmente una combinación de
las mejores funciones del entorno basado en host y del entorno de
red de área local basado en PC. Esta arquitectura utiliza la potencia
de la PC para obtener los datos, junto con el complicado
procesamiento relativo a la lógica de negocio que añade valor a
dichos datos. El RDBMS proporciona un área de almacenamiento
centralizada para los datos. La arquitectura 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 de datos puedan crecer considerablemente en la
cantidad de información que manejan, ya que permiten sistemas
integrados con múltiples computadoras, las cuales pueden estar
distribuidas en distintas partes del mundo y cada una tener los
recursos suficientes para contener y manejar por si sola grandes
cantidades de información. El empleo de sistemas paralelos y
distribuidos nos permite también dividir las consultas para que sean
realizadas a una mayor velocidad por distintas máquinas o
242
procesadores, incrementando enormemente el rendimiento del
sistema de base de datos.
Sin embargo, no obstante las ventajas que presenta la distribución
de la información y el empleo de sistemas paralelos para manejarla,
estos esquemas presentan algunos inconvenientes, a tener en
cuenta, que deben ser manejados adecuadamente, tales como las
decisiones de la distribución física de la información; de que manera
será fragmentada, si existirán copias de los fragmentos en distintas
localidades, de que manera se va a manejar la posibilidad de
modificaciones concurrentes de la misma información, como se
controlará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 sistema quede dividido en dos
o más sub-redes fragmentadas y otros problemas más.
243
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.
244
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
245
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,
246
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);
247
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;
248
FACTURA_DETALLE: @#factura + @#articulo + cantidad_articulo +
precio_por_cantidad
4)_
249
Diccionario de Datos
250
PELICULAS: @Cod_Pelicula + Titulo + Director + Calificación +
Actores + Genero + Año
251
GLOSARIO
Administrador de Bases de Datos: encargado de asegurar la
disponibilidad, confidencialidad y la integridad de los datos.
252
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.
253
Red de Area Local: véase LAN.
254
BIBLIOGRAFÍA DEL ESPACIO CURRICULAR
Cuadra Dolores. Desarrollo de Bases de Datos: Casos
Prácticos desde el Análisis a la Implementación. Editorial: Alfaomega
Grupo Editor, 2013.
255