Documente Academic
Documente Profesional
Documente Cultură
• Modelos de Datos
• Sistemas Administradores (Gestores) de Bases de Datos (SGBDs o
DBMS's)
Modelos de Datos
Hablar del concepto lógico o físico de Base de Datos involucra un conjunto de
pensamientos concretos que hacen posible la absorción temática del
significado de los datos. La abstracción de los datos como una forma o un
comportamiento que hace posible concretar un “algo”, se asocia con un
esquema del conocimiento lógico, su semántica, condiciones y acciones, que
permiten la producción de modelos por medio de los cuales se representa la
funcionalidad de un sistema.
Estos modelos de datos, hacen posible que la lógica de un negocio pueda ser
estructurada de forma tangible a través de un esquema físico que representa
el almacenamiento de los datos bajo las reglas del negocio y de un sistema
gestor de base de datos que permitirá la persistencia de estos a través del
tiempo.
_________
Sistemas Administradores (Gestores) de Bases de
Datos
DISEÑO CONCEPTUAL
Cuando se trabaja bajo el análisis conceptual de una situación, nos referimos a la
abstracción de hechos reales de los cuales se emite un concepto o es posible hacer una
idea de ello. Para poder realizar la abstracción de un tema en un área específica, a nivel
informático, es necesario tener los requerimientos formulados por los usuarios con
respecto a este. Estos requerimientos contienen el conjunto de hechos y reglas que dan
pauta a la creación del esquema conceptual donde por medio de este se podrá realizar
una descripción de alto nivel de la futura base de datos. Para manipular este esquema se
utiliza un modelo conceptual que proporciona un lenguaje que permite utilizar un
conjunto de símbolos (estándares) para la creación de este.
Cada entidad tendrá un valor por cada uno de los atributos, que posteriormente será
almacenado en la base de datos. El valor de cada atributo está enmarcado en un
conjunto de valores permitidos llamado Dominio. Ejemplo: el conjunto de valores
permitidos (dominio) para el atributo cédula pueden ser todos los enteros positivos.
Tipos de Atributos:
Un atributo compuesto se divide sólo por razones de manejo a nivel del lenguaje de
consulta o programación o por requerimientos del usuario, si no hay necesidad no se
debe dividir ya que en algunas ocasiones se vuelve complejo el manejo de esta
situación, es decir el atributo compuesto se trabaja como un atributo simple. Así se
puede concluir que un atributo compuesto es la suma (concatenación) de los valores de
los atributos simples que lo conforman.
Derivado: Son atributos cuyo valor depende de los valores de otros atributos o
entidades. Ejemplo: el atributo salario pude derivarse a partir del cálculo de los
siguientes valores:
PARAMETROS(salario_base, 5000), NOVEDADES(nro_horas_trabajadas, 240), el
valor que tendría el atributo en un instante en el tiempo será:
PERSONA(salario,1200000).
El modelo E-R se representa gráficamente así: los tipos de entidades por medio de
rectángulos que contienen el nombre del tipo de entidad. Los nombres de los atributos
se encierran en óvalos y se conectan con su tipo de entidad a través de líneas. Ejemplo:
ATRIBUTOS CLAVE: Por lo general todo tipo de entidad cuenta con un atributo cuyo
valor diferencia (identifica) una entidad individual de otra. El atributo o conjunto de
atributos que ejercen esta función se denominan atributos claves, donde a partir de estos
se ejerce la restricción por clave o unicidad de atributos en los tipos de entidad.
Ejemplo: el atributo cedula en el tipo de entidad persona se utiliza como atributo clave
para diferenciar una entidad de otra. Un atributo clave puede ser un atributo compuesto.
Gráficamente en el modelo E-R el atributo clave va subrayado dentro del óvulo.
Esta relación se conoce como binaria ya que se realiza entre dos tipos de entidad.
Los tipos de entidad débil siempre tienen una restricción de participación (dependencia
de existencia) con respecto a su vínculo identificador, porque una entidad débil no se
puede identificar sin una entidad fuerte o propietaria. Ejemplos: entidad
licencia_conductor depende de la entidad persona.
DISEÑO LÓGICO
Una vez establecido el modelo conceptual del problema o situación, el diseño lógico de
los datos permite que estos se puedan representar usando de manera eficiente posibles
recursos para estructurar datos y modelar restricciones disponibles en el modelo
lógico. El objetivo es convertir el esquema conceptual de datos en un esquema lógico
que se ajuste al gestor de la base de datos que va a ser utilizado (el DBMS). Para
escenificar esta situación se tomará el Modelo Relacional cuyo esquema relacional es
trabajado por muchos DBMS comerciales. Algunos de ellos son: ORACLE (Oracle
Inc.), INFORMIX (Informix Inc.), SQL/DS, DB2 (IBM), INGRES (ASK/Computer
Systems Inc.), UNIFY(Unify Inc.).
• Modelo Relacional
• Características para pasar de un MER a un MR
• Normalización y Dependencia Funcional
• Algebra Relacional
• SQL
• Relación: Es el elemento básico del modelo, está compuesta por dos partes:
Cabecera y Cuerpo. La cabecera esta formada por un conjunto fijo de atributos.
El cuerpo está formado por un conjunto de tuplas . Por esto podemos nombrar
una relación con el nombre de TABLA, la cual está compuesta por filas y
columnas, donde cada fila (tupla) representa un conjunto de valores
relacionados entre sí(hechos del mundo real), y las columnas (atributos) tienen
la función de ayudar a interpretar el significado de los valores que están en cada
fila de la tabla. Como ejemplo, la gráfica representa la relación PERSONA.
- Las tuplas no están ordenadas: Esta propiedad sirve para ilustrar la diferencia
entre una relación y una tabla, porque las filas de una tabla tienen un orden
obvio de arriba hacia abajo, en tanto que las tuplas de una relación carecen de tal
orden.
- Los atributos no están ordenados: Esta propiedad desprende el hecho de que la
cabecera de una relación se define también como conjunto. Las columnas de una
tabla tienen un orden evidente de izquierda a derecha, pero los atributos de una
relación carecen de tal orden.
R= PERSONA
Atributos: Cedula, Nombre, Ubicación, Ciudad
PERSONA(Cedula, Nombre, Ubicación, Ciudad)
- Transformación de entidades
Normalización
La normalización es un proceso que consiste en comprobar que las tablas (también
denominadas relaciones en terminología propia del modelo relacional de datos)
definidas cumplen unas determinadas condiciones. Se pretente garantizar la no
existencia de redundancia y una cierta coherencia en la representación mediante un
esquema relacional de las entidades y relaciones del modelo conceptual (diagrama E-R).
Mediante la normalización se pueden solucionar diversos errores en el
diseño de la base de datos así como mejorarlo. También se facilita el trabajo posterior
del administrador de la base de datos y de los desarrolladores de aplicaciones.
Dependencia Funcional
Una dependencia funcional, denotada por X -> Y, entre dos conjuntos de atributos X y
Y que son subconjuntos de R (R ={A1, A2,...,A3}) especifica una restricción sobre las
posibles tuplas que podrían formar un ejemplar de relación r de R. La restricción dice
que, para cualesquier dos tuplas t1 y t2 de r tales que t1[X] = t2[X], debemos tener
también t1[Y] = t2[Y]. Esto significa que los valores componentes de Y de una tupla de
r dependen de los valores del componente X, o están determinados por ellos; o bien, que
los valores del componente X de una tupla determinan de manera única (o
funcionalmente) los valores del componente Y. También decimos que hay una
dependencia funcional de X a Y o que Y depende funcionalmente de X.
Proyectividad. Si x -> y+z entonces x -> y. Ejemplo: si a partir del dni es posible
deducir el nombre y la dirección
de una persona, entonces con el dni es posible determinar el nombre.
Aditividad. Si x -> y y z -> w entonces x+z -> y+w. Ejemplo: si con el dni se
determina el nombre y con la
dirección el teléfono de una persona, entonces con el dni y la dirección podrá
determinarse el nombre y el teléfono.
Reglas de normalización
Un esquema relacional que satisface todas las restricciones impuestas por la tercera
forma normal se considera de buena
calidad aunque es mejor que satisfaga una interesante propiedad. La verificación de una
forma normal implica el
cumplimiento de todas las formas normales anteriores. La primera forma normal es de
cumplimiento obligatorio para que
exista siquiera un esquema relacional propiamente formado
FN2.Si FN1 y cada atributo de la tabla que no forma parte de la clave depende
funcionalmente de forma completa de la
clave primaria. Es decir, depende de toda la clave y no de ningún subconjunto de ella.
Se pretende garantizar una
correcta elección de claves y eliminar redundancias. Si la clave están formada por un
único atributo entonces ese
esquema estará seguro en segunda forma normal.
b.Empleado_proyecto
nss numero_proy horas nombre_emp nombre_proy lugar_proy
Emp_proy
- nss -> nombre (el nss del empleado determina de forma única el nombre de ese
empleado)
- numero_proy -> {nombre_proy,lugar_proy}
- {nss, numero_proy} -> horas
Algebra Relacional
Conjunto de operaciones para manipular las tuplas de las relaciones o tablas. El
resultado de cada operación es una nueva relación que podemos manipular
posteriormente.
Operaciones
- Seleccionar (σ )
- Proyectar (π )
- Operaciones de Teoría de Conjuntos: Unión (∪), Intersección (∩), Diferencia (-),
Producto Cartesiano (X).
- Reunión (α )
* Seleccionar (σ )
Por medio de esta operación se posibilita la selección de un subconjunto de tuplas de
una relación que corresponden a una condición (columna OPERADOR valor)determinada. El
grado (total de columnas de la Relación), se conserva.
Ejemplos:
PERSONA
La selección, permite extraer todas las filas (tuplas) que cumple una condición
determinada. Esta condición permite la utilización de los operadores de comparación:
=,>,<,>=,≠, además de los conectores lógicos "y" - "o":
Resultado:
Resultado:
Resultado:
Resultado:
* Proyectar (π )
Esta operación permite seleccionar algunas columnas de una relación.
Ejemplos:
Se construyen con base en la Relación anterior: PERSONA.
Resultado
Resultado:
Cedula Salario
71134534 1,600,000
23423445 1,300,000
12453535 1,700,000
75556743 1,200,000
43533322 1,350,000
78900456 1,500,000
• SELECT
• Operaciones Adicionales 1
• Operaciones Adicionales 2
• Operaciones Adicionales 3
• Operaciones Adicionales 4
• Operaciones Adicionales 5
• Operaciones Adicionales 6
• Tutorial Sql (.pdf)
• EJERCICIOS
PERSONAS
DEPENDIENTES
DEPARTAMENTOS
Codigo_Dep Nombre_Dep Cedula_Jefe
0 Gerencia 43890231
1 Teleinformatica 75556734
2 Desarrollo 23423445
3 Soporte Técnico 71134534
PROYECTOS
1. OPERACIÓN SELECT
La sintaxis básica de esta operación es:
Ejemplos:
a. Select básico. Se desea obtener la cédula y el nombre de todas las personas que
trabajan en la compañía.
Cedula Nombre
71134534 Juan
23423445 Ana María
12453535 Gloria
75556743 Pedro
43533322 Patricia
78900456 Carlos
SELECT nombre,primer_apellido,segundo_apellido,direccion,telefono
FROM personas
WHERE cedula = 12453535
Resultado/
SELECT cedula,nombre
FROM personas
WHERE primer_apellido = 'Betancur'
AND sexo = 'M'
Resultado/
Cedula Nombre
78900456 Carlos
Resultado/
e. Utilizando alias o sinónimos de trabajo a las tablas del Select. Estos se utilizan por
facilidad en el manejo de la instrucción. La misma consulta anterior:
SELECT d.*
FROM personas p, dependientes d
WHERE primer_apellido = 'Betancur'
AND sexo = 'M'
AND d.cedula = p.cedula
Resultado/
Resultado/
Salario
1,600,000
1,700,000
1,350,000
1,500,000
1,200,000
1,800,000
SELECT count(*)
FROM personas
Resultado/
9
SELECT count(*)
FROM proyectos
WHERE codigo_dep = 3
Resultado/
3
Resultado/
6
h. Cláusula WHERE compara sus campos comunmente con valores únicos, pero
tambien es posible comparar con un "conjunto" de valores. Esto es realizable a través
del operador IN. Ejemplo, se desea saber qué empleados están involucrados en los
proyectos 139001 o 139002.
SELECT personas.*
FROM personas, proyectos
WHERE (numero_proy = 139001 OR numero_proy =139002)
AND cod_dep = codigo_dep
SELECT personas.*
FROM personas, proyectos
WHERE numero_proy IN (139001,139002)
AND cod_dep = codigo_dep
Resultado/
PENDIENTE
SELECT personas.*
FROM personas
WHERE cedula_sup IN (select cedula
from personas
where primer_apellido = 'Betancur'
and segundo_apellido = 'Bermudez')
i.3 Mostrar el nombre de los empleados cuyo salario es mayor que el de todos los
empleados del departamento 3. Aquí se utiliza la utilización de la cláusula ALL:
SELECT *
FROM personas
WHERE salario IS NULL
k. Otra cláusula que es posible utilizar en el Select es EXIST, la cual ayuda a validar si
el resultado de una consulta anidada es vacio o no.
k.1 Seleccionar todos los empleados cuyo dependiente tenga la misma cedula, sexo y
nombre.
m.1 Mostrar el número y el nombre del proyecto en donde trabajen más de dos
empleados
o. En la cláusula Select también es posible realizar operaciones aritméticas '+', '-', '*',
con los campos de valor:
SELECT salario*1.18
FROM personas
WHERE salario < 1200000
p. Una cláusula más que podemos utilizar en la operación Select es la que me permite
dale un orden a las tuplas, ORDER BY, según el o los criterios indicados a través de
columnas.
SELECT *
FROM personas
ORDER BY nombre, primer_apellido, segundo_apellido
El anterior esquema describe una base de datos con información sobre viajes de líneas
aéreas. Cada VIAJE se identifica con un número de viaje, y consta de uno o más
TRAYECTO_VIAJE con num_trayecto 1, 2, 3, etc. Cada trayecto tiene horas y
terminales de salida y de llegada programados, y tiene muchos TRAYECTO_VIAJE,
uno por cada fecha en que tiene lugar el viaje. Se mantienen TARIFAS para cada
viaje. Para cada movimiento de trayecto, se mantiene RESERVA_ASIENTOS, el
transporte empleado en el trayecto y las horas de salida y llegada y los terminales
específicos. Un TRANSPORTE se identifica con id_transporte y es de un cierto
tipo_transporte. VIAJES AUTORIZADOS relaciona los tipo_transporte con los
terminales en los que puede aterrizar. Cada TERMINAL se identifica con un
cod_terminal.
1. Prepare una lista con los números de viaje y los días de todos los viajes o trayectos de
viaje que salen del terminal codigo ‘CA001’ y llegan al terminal código ‘BO001.
Solución 1:
SELECT num_viaje, num_trayecto,fecha
FROM viajes_realizados
WHERE cod_terminal_sale = 'CA001'
AND cod_terminal_llega = 'BO001';
Solución 2:
SELECT distinct numero, dias
FROM viajes_realizados, viajes
WHERE cod_terminal_sale = 'CA001'
AND cod_terminal_llega = 'BO001'
AND numero = num_viaje
2. Obtenga una lista con los números de viaje, códigos de terminal de salida, horas de
salida programadas, códigos de terminal de llegada, horas de llegada programadas y
días de todos los viajes o trayectos de viajes que salgan de algún terminal de la ciudad
de Santa Marta y lleguen a algún terminal de la ciudad de Buenaventura.
Solución 1:
SELECT tv.*, dias
FROM trayecto_viaje tv, terminales_transporte tt, viajes
WHERE (ciudad = 'Santa Marta' AND cod_terminal_sale = tt.cod_terminal)
AND (ciudad = 'Buenaventura' AND cod_terminal_llega = tt.cod_terminal)
AND (numero = num_viaje);
Solución 2:
SELECT tv.*, dias
FROM trayecto_viaje tv, viajes
WHERE cod_terminal_sale = (SELECT cod_terminal
FROM terminales_transporte
WHERE ciudad = 'Santa Marta')
AND cod_terminal_llega = (SELECT cod_terminal
FROM terminales_transporte
WHERE ciudad = 'Buenaventura')
AND numero = num_viaje;
3. Liste las diferentes tarifas que se aplicaron a los viajes que se realizaron entre los
terminales de Santa Marta y Medellín, en el año 1999.
Solución 1:
SELECT distinct cod_tarifa, monto
FROM viajes_realizados vr, tarifas ta, terminales_transporte
WHERE (ciudad = 'Santa Marta' AND cod_terminal_sale = cod_terminal)
AND (ciudad = 'Medellín' AND cod_terminal_llega = cod_terminal)
AND fecha between '01/01/00' and '31/12/99'
AND ta.num_viaje = vr.num_viaje;
Solución 2:
SELECT distinct cod_tarifa, monto
FROM viajes_realizados vr, tarifas ta, terminales_transporte
WHERE cod_terminal_sale = (SELECT cod_terminal
FROM terminales_transporte
WHERE ciudad = 'Santa Marta')
AND cod_terminal_llega = (SELECT cod_terminal
FROM terminales_transporte
WHERE ciudad = 'Medellín')
AND fecha between '01/01/00' and '31/12/99'
AND ta.num_viaje = vr.num_viaje;
4. Liste los terminales que tienen el mayor tráfico en un día (haga el ejemplo con
cualquier fecha).
5. Muestre los viajes con los correspondientes transportes, que tuvieron más de 50
pasajero con reservas.
Indice
1. Descomposición y Normalización
2. Dependencia
3. Normalización
4. Primera Forma Normal
5. Segunda Forma Normal
6. Tercera Forma Normal
7. Cuarta Forma Normal
1. Descomposición y Normalización
2. Dependencia
Significado :
Los individuos tienen muchos atributos que pueden ser de interés a diferentes
personas en diferentes momentos. Nuestro problema actual es con una sola
aplicación o conjunto de aplicaciones: solemne son de interés algunos de los
atributos.
Campo de aplicación
e = e (d) f = f(d)
o Total uno-uno-sinónimo
o Completa - subtupla
o Transitiva - múltiple.
Dependencia Total
• Su nombre
• Su número de empleado
Si los nombres de todos nuestros empleados son únicos, también pueden, ser
claves candidatas. Sin embargo puede existir alguna duplicación, dos personas
llamadas John Smith, por ejemplo. Dado que esta es una posibilidad, no puede
establecerse una dependencia total con respecto total con respecto al nombre.
Puede incorporarse a la firma un nuevo empleado y este puede tener el mismo
nombre que uno de nuestros empleados actuales.
California.
Estas dos formas de información sobre estado ilustran una dependencia total.
Debe notarse sin embargo que muchas tuplas pueden contener la misma
identificación de Estado, dado que muchos de nuestros clientes pueden
provenir de California. En consecuencia resulta claro que la dependencia total
no significa unicidad.
Dependencia Completa
independientes.
p = p (q,r)
Los pedidos describen en consecuencia una orden por medio de varias partes
diferentes, y para cada una distinta asociada. El sistema contable ve varios
pedidos diferentes. La misma parte puede aparecer en distintos pedidos y,
cuando ello sucede, puede estar asociadas distintas cantidades con la misma
parte.
Dependencia transitiva
S ----> T; S ----> V
Sin embargo, sería deseable encontrar una relación más restrictiva o definida.
S ----> T; T ---->
o alternativamente como
Reducción
Ejemplo
Llamemos
• S al curso
• T al departamento
• V a la escuela
Por lo tanto
S ----> T ----> V
3. Normalizacion
¿Qué es normalización?
Para que una relación esté en primera forma normal (1 FN), debe ser
solamente una relación propia, una matríz m por n, donde:
• Ninguna celda de la matriz está vacía;
Para que una relación sea normalizada en pasos adicionales, debe encontrarse
en la primera forma normal. Colocar los datos en la primera forma normal está
a cargo del diseñador de la aplicación. Estos datos se encuentran disponibles
de alguna manera inicialmente. Si la aplicación existe en forma manual, o ha
sido anteriormente computarizada pero no todavía como relación, el diseñador
reorganiza los datos de modo de conformar una matríz 1FN.
• Nombres de atributos.
saltsea texas
orden fecha
Pen-
Orde-despa-dien-
Nada chada te
17.38
Dado que una tupla debe tener un número fijo de componentes, necesitamos
una tupla en primera forma normal para cada parte de cada pedido. Sin
embargo, la información que se encuentra en la parte superior del formulario, y
que se llena a máquina, es la misma para todas las partes ordenadas más
abajo. Por lo tanto cada tupla consiste en una parte de datos que son variables
y datos del pedido que se duplican para cada parte ordenada.
Grafo de Dependencia
Una vez que los datos han sido puestos en primera forma normal, resulta
conveniente descomponer la relación en un número de relaciones más
pequeñas, cada una en forma normal superior, de modo de optimizar el
almacenamiento y usar su funciones. Para esto resulta necesario reconocer las
dependencias existentes. Un grafo exhibe los distintos tipos de dependencias
que existen, y enfatizan que hemos investigado completamente cada
dependencia.
Dependencia única
Dependencia total
Dependencia completa
Dependencia transitiva
Ejemplo
La línea de trazos que une PAYRT y HORAS indica que ambas participan en
una dependencia completa por la cual el receptor es PAYAMT, el valor pagado
para esta semana.
Una relación está en segunda forma normal (2FN) solamente si todos los
atributos son dependientes en forma completa de la clave.
R = (A,B,C,D,E,F,G,H,I,L,M,N,O,P,Q)
Descomposición
P' = (P,A,B,C,E,H,K)
Q' = (Q,F,G,J,N)
PQ = (P,Q,D,I,L,M,O)
Proyección
El próximo paso es proyectar la relación R sobre cada una de estas subtuplas
para formar tres nuevas relaciones, y en consecuencia.
PQ = proyectar R(PQ)
Las relaciones así formadas nos dan tres nuevas sub-relaciones. Una
subrelación es la relación que deriva de una relación mayor. Las subrelaciones
ilustradas en la figura están correlacionadas por medio de los componentes de
sus claves. La clave compuesta P y Q de la relación original R. es también la
clave de la sub-relación PQ. P y Q tienen a P y Q respectivamente como
claves. La línea de trazos en la figura indica que Q está correlacionada con PQ
por medio de la componente Q y P está correlacionada con PQ por medio de P.
Grafos
Efectos
Ejemplo de inventario
Arbol de Dependencia
P = proyectar PW(P)
W = proyectar PW(W)
Efecto
Descripción
Q ---> A ----> B
num dominio (Q)> num dominio (A) > num dominio (B)
Transitividad simple
Para la dependencia transitiva unilateral, la variable independiente apunta a la
variable dependiente, tal cual se presenta en el figura donde B depende de A.
El arco entre B y Q ha sido eliminando; la dependencia implícita de B respecto
de Q resulta obvia.
Descomposición
Q ---> A ----> B
Q ---> C
Q ---> A; Q ---> C
A ---> B
Los grados de Q' y A'. Aquí la componente A relaciona Q' con A, a es la clave
simple de A'. Si bien A no es la clave de Q' es le medio de relacionar un valor
de Q en Q' con un valor de B en A' y se llama por lo tanto la clave externa de Q'
. Para crear Q' y A' debemos utilizar las subtuplas generales Q' y A' denifidas
en consecuencia:
Q' = (Q,A,C)
Caso Compuesto
Las dependientes transitivas múltiples han sido investigadas y exhibidas.
Tenemos en consecuencia.
Q --> C
Q --> A --> B1
Q --> A --> B2
Q --> A --> B3
Aquí Q'', A'' y C'' aparecen como sub-árboles. Las mismas se relacionan por
medio de la clave externa de Q'' es decir A y C; esto se muestra mediante la
línea de puntos entre A y A y entre C y C. Nos podemos mover directamente
entre las dos figuras sin la intervención de pasos simbólicos, utilizando
solamente manipulaciones gráficas.
Descomposición Gráfica
Ejemplo de inventario
Ejemplo bancario
Esto funcionaría, pero hay una forma más simple de resolver el problema. El
valor de crédito disponible en la actualidad es simplemente la diferencia entre
la línea de crédito y el debido corriente. Todo lo que tenemos que hacer es
ejecutar una sustracción. La relación original no necesita contener DISP. dado
que éste se calcula simplemente durante el procesamiento. Por lo tanto
podemos sencillamente omitir Q.
Transitivas múltiples.
El resultado son nuevas sub-relaciones que han sido utilizadas para ahorra
espacio y permitir una más fácil actualización.