Beruflich Dokumente
Kultur Dokumente
UNIVERSIDAD NACIONAL
MAESTRÍA EN SIG Y TELEDETECCIÓN
Elaborado por
Dra. Elzbieta Malinowski G.
DEFINICIONES VARIAS
Base de datos
Colección de datos lógicamente relacionados que puede tener cualquier tamaño
y complejidad.
Ejemplos: la base de datos para el procesamiento de matrícula, las compras en
el supermercado, compras utilizando tarjetas de crédito, sistema de inventario,
figura 1.2 del libro de texto:
Dato
Hecho que puede ser recopilado y que tiene un significado específico.
Ejemplos: Nº telefónico, Nº cédula, dirección, nombre.
Catálogo
Conocido también como diccionario de datos, directorio de datos o metadatos.
Contiene información sobre los datos, como por ejemplo el tipo y formato de
almacenamiento de cada elemento, estructura de cada archivo, información
sobre derechos de acceso y tipos de usuario.
Ejemplo: Figura 1.3 del libro de texto.
Usuarios finales
• Casuales o esporádicos: Necesitan una información diferente cada vez
que acceden la base de datos.
Ejemplo: estudiantes del curso de base de datos.
• Paramétricos: Usan casi las mismas consultas cada vez que acceden la
BD (transacciones enlatadas).
Ejemplo: empleados bancarios, de aerolíneas, hoteles, etc.
• Avanzados: Conocen muy bien el DBMS e implementan aplicaciones que
les permitan satisfacer sus complejos requerimientos.
Ejemplo: ingenieros, científicos, analistas.
• Autónomos: mantienen bases de datos personales mediante la utilización
de paquetes de programas comerciales que cuentan con interfaces de
fácil uso.
Ejemplo: los usuarios de paquetes de impuestos que guardan sus datos
financieros para declarar la renta.
LOS 60’S
1961 Bachman diseña el primer DBMS Se forman las bases del modelo
generalizado -GE’s Integrated de datos para red desarrollado por
Data Store (IDS)- Se distribuye en CODASYL DBTG (Conference on
1964. Se popularizan los Data Systems Languages
diagramas de estructura de datos. Database Task Group)
1975 La Very Large Data Base Dio pie a la creación de otro foro
Foundation organizó la primera de discernimiento sobre la
conferencia internacional de investigación de base de datos.
VLDB.
• Proyectos de
Investigación en los 70’s:
System R (IBM), INGRES
(University of California, Berkeley),
System 2000 (University of Texas,
Austin).
• Lenguajes de Consultas
desarrollados en los 70’s:
SQUARE, SEQUEL(SQL), QBE,
QUEL.
Los 80’s
Se desarrollaron DBMS para Permitió a los usuarios de PC
computadoras personales definir y manipular los datos.
(DBASE, PARADOX, etc.) Carecían de multivistas
/multiacceso y existía aislamiento
entre programas y datos.
Los 90’s
Demanda de las capacidades de DBMS con características para
los DBMS para usarlas en nuevas datos espaciales, temporales y
aplicaciones. multimedia, incorporando
capacidades activas y deductivas.
Aparecen los DBMS comerciales
orientados a objetos.
Los 2000’ Demanda de usar los datos para Aparecen nuevos componentes en
convertirlos en la información útil DBMS capaces de manejar en
para la empresa. forma especial los almacenes de
datos.
Modelo de Datos
Conjunto de conceptos usados para describir la estructura de la BD (tipos de
datos, relaciones, y restricciones). Además contiene un conjunto de operaciones
básicas para especificar consultas y actualizaciones sobre la base de datos.
Esquema de la BD (intensión)
Descripción de la BD que incluye su estructura (elementos, grupos de elementos
y relaciones entre ellos), tipos de datos y restricciones.
Ejemplo: Figura 2.1 del libro de texto:
NIVELES DE ABSTRACCIÓN
La arquitectura de las BDs es conocida como arquitectura de tres niveles (o
esquemas). Esta arquitectura fue propuesta por ANSI (American National
Standards Institute, Instituto Americano Nacional de Estándares) y SPARC
(Standard Planning and Requirements Committee, Comité de Requisitos y
Planificación de Estándares) (ANSI/SPARC).
2. Nivel conceptual
Describe la estructura (elementos, relaciones, operaciones de usuarios y
restricciones) de la BD para una comunidad de usuarios, omitiendo los
detalles físicos de almacenamiento. Se usan los modelos conceptuales (por
ejemplo, modelo entidad-relación, orientado a objetos, semántico) o modelos
Los tres niveles representan distintas descripciones de los datos. Los datos
realmente sólo existen en el nivel físico de la BD. La mayoría de los DBMS
comerciales no tiene esta separación de niveles tan clara.
Ejemplo:
Ejemplos:
4. UPDATE EMPLEADO
SET SALARIO = 100000
WHERE CEDULA = ‘8-876-543’;
Ejemplos:
Desventajas:
• Sobrecarga del servidor.
• Demasiado tráfico en la red.
1
El modelo de red representa los datos como “tipos de registros” y sólo tiene un tipo de relación, 1:N,
llamada “tipo conjunto”. Este modelo tiene un lenguaje record-at-a-time que debe incluirse en un lenguaje
de programación huésped (e.g., COBOL). Ejemplos de DBMSs basados en modelos de datos de red:
IDMS, DMS 1100, IMAGE, VAX-DBMS y SUPRA.
2
El modelo jerárquico representa los datos en estructuras jerárquicas tipo árbol. Cada jerarquía representa
registros relacionados. El DML jerárquico más popular fue DL/1 de IMS (IBM). Ejemplos de DBMS
basados en modelos de datos jerárquicos: IMS, System 2K y TDMS.
2. Diseño conceptual
Se crear el esquema conceptual usando un modelo de datos de alto nivel.
Dicho esquema describe detalladamente tipos de entidades, relaciones entre
ellas y restricciones. Paralelamente se especifican las operaciones de usuario
como transacciones de alto nivel.
4. Diseño físico
Se especifica la estructura de almacenamiento de los archivos, su organización,
índices, y rutas de acceso. Paralelamente se diseñan e implementan los
programas de aplicación correspondientes a las transacciones de alto nivel.
Ejemplo
La base de datos para una compañía, que mantiene información sobre los
empleados, los departamentos y los proyectos de la compañía.
Diseño conceptual
El esquema conceptual se puede visualizar por medio del diagrama Entidad-
Relación (ER), como se observa en la siguiente figura (figura 3.2 del libro de
texto). Esta figura se explicará gradualmente, conforme se vayan presentando
los conceptos del modelo ER.
Tipo de entidad
Define una colección de entidades que tienen las mismas características. Se
representa en el diagrama ER como un rectángulo con el nombre del tipo de
entidad en su interior.
Ejemplos:
• Empleado, Departamento y Proyecto de la BD COMPAÑÍA.
• Automóvil, Estudiante, Curso, Supermercado.
Atributo
Propiedad que describe a la entidad (o relación). Los atributos se representan en
el diagrama ER como óvalos con el nombre del atributo en su interior.
Ejemplos:
• número de cédula
• nombre
• número de teléfono
Dominio
Tipo y rango de los valores que se pueden asignar a cada atributo. Es un tipo de
restricción.
Ejemplos:
• Dominio de salario: número real entre 230,000 y 950,000.
• Dominio de edad: número entero entre 18 y 65 años.
Esquema (Intención)
Es la descripción, por medio de un tipo de entidad, de un conjunto de entidades
que comparten su estructura.
TIPOS DE ATRIBUTOS
Atributos simples (atómicos)
Son aquellos que no pueden ser divididos en atributos más simples (o subpartes
con significado propio).
Ejemplos:
• Atributos Sexo y Salario de la entidad EMPLEADO en el esquema ER de
la BD COMPAÑIA .
• Número de teléfono, número de hijos de una persona.
Atributos compuestos
Son aquellos que pueden ser divididos en subpartes que representan atributos
más simples (o atómicos) con significado independiente. Un atributo se define
compuesto cuando el usuario a veces se refiere al atributo como una unidad y a
veces se refiere a los componentes individuales del atributo.
Ejemplos:
• El atributo Nombre de la entidad EMPLEADO en el esquema ER de la BD
COMPAÑIA; compuesto por NombreP, Apellido1, Apellido2.
• Un atributo Dirección puede estar compuesto por el nombre y número de
calle, la ciudad, la provincia, y el código postal como presentado en la
figura 3.4 del libro de texto
Atributos monovalor
Tienen un solo valor para una entidad específica.
Ejemplos:
• Sexo y salario en el modelo ER de la BD COMPAÑIA.
Atributos multivalor
Pueden tener un conjunto de valores para la misma entidad en la misma
instancia del tiempo. Pueden tener límites inferior y superior para el número de
valores permitidos por entidad. Se representan en el diagrama ER como óvalos
de doble línea.
Ejemplos:
• Ubicación de la entidad DEPARTAMENTO en el esquema ER de la BD
COMPAÑIA (atributo LUGARES), donde pueden existen varios lugares
para el mismo departamento.
• Grado universitario si la persona tiene varios.
• Color de un auto pintado de rojo, azul y blanco (figura 3.7 del libro del
texto).
La condición que define si un atributo puede tener uno o más valores se llama
cardinalidad del atributo.
Atributos derivados
Su valor puede determinarse a partir de otro atributo o derivarse de entidades
relacionadas.
Ejemplos:
• Número de empleados de la entidad DEPARTAMENTO en el esquema
ER de la BD COMPAÑIA (se deriva de la relación con la entidad
EMPLEADO).
• Edad (se calcula a partir del atributo Fecha de nacimiento).
Ejemplos:
• Altura y peso de una persona (valor existe pero lo desconocemos)
• Número de apartamento en una dirección (no aplica para personas que
viven en casas).
• Número de teléfono de una persona (no sabemos si existe o no).
Ejemplos:
• Nombre + dirección de una persona
• Número de cédula de una persona
• Número de placa de un vehículo
Ejemplos:
• Número de cédula de una persona.
• Número de placa de un carro.
• Número de seguridad social
Ejemplo:
• Juan trabaja para el Departamento de Contabilidad.
Tipo de relación
Describe una colección de relaciones del mismo tipo.
Ejemplo:
• PERTENECE_A (un Empleado pertenece a un Departamento) en el
esquema ER de la BD de COMAÑÍA.
Conjunto de relaciones
Es la colección de todas las relaciones (instancias) de un tipo de relación de la
BD en un instante dado del tiempo.
Grado de la relación
Es el número de tipos de entidades que participan en la relación.
• Relación binaria (de grado 2): participan dos tipos de entidades.
Ejemplo: tipo de relación PERTENECE_A en la BD COMAÑÍA
• Relación n-aria (de grado n): participan más de tres tipos de entidades
(poco usada en bases de datos operacionales/transaccionales; muy
común en almacenes de datos).
Relación recursiva
Es un tipo de relación donde el mismo tipo de entidad participa más de una vez
con distintos roles. Un rol es el papel que juega la entidad en la relación, y es
esencial para distinguir cada participación.
Ejemplo:
La relación SUPERVISA, donde la entidad EMPLEADO participa dos veces: una
vez bajo con rol de Supervisor y otra vez con rol de Supervisado.
Ejemplo: El tipo de entidad Licencia de Conducir (con varios atributos) que tiene
su propio identificador (su número), pero su existencia puede depender del otro
tipo de entidad, por ejemplo, Persona.
Relación identificadora
Es un tipo de relación que asocia un tipo de entidad débil con su respectivo tipo
de entidad fuerte. También se conoce como relación débil. Se representa en el
diagrama ER como un rombo de doble línea.
Ejemplo:
El tipo de relación DEPENDIENTES_DE en el esquema ER de la BD
COMPAÑÍA.
3
Esta definición y la siguiente difieren de las definiciones que da el libro de texto.
RESTRICCIONES ESTRUCTURALES
Los tipos de relaciones típicamente tienen ciertas restricciones que limitan las
posibles combinaciones de entidades que pueden participar en las instancias de
relación. Existen dos tipos de restricciones:
• Razones de cardinalidad
• Participación
Una a Una (1:1) Una entidad de A puede asociarse sólo con una entidad de
B y viceversa
Ejemplo:
Ejemplo:
Muchas-a-Una (N:1) Una entidad de A puede estar asociada con una sola
entidad de B, pero una entidad de B puede estar
asociada con varias entidades de A.
Ejemplo:
Ejemplo:
Total: todas las entidades del conjunto de entidades tienen que participar
en la relación. También se conoce como dependencia de
existencia. Se representa en el diagrama ER con una doble línea.
Ejemplo:
En el esquema ER de COMPAÑÍA, el tipo de entidad EMPLEADO tiene
participación total en el tipo de relación PERTENECE_A, lo que significa
que todo empleado debe trabajar para un departamento.
Ejemplo:
En el esquema ER de COMPAÑÍA, el tipo de entidad EMPLEADO tiene
participación parcial en el tipo de relación DIRIGE, lo que significa que
algunos empleados son gerentes de departamento (lo dirigen), pero no
todos.
2. Cada una de los estudiantes debe escoger algún ejemplo visto anteriormente
con los tipos de entidades y tipos de relaciones y especificar las restricciones
estructurales en él.
Los atributos de los tipos de relación 1:1 pueden migrar hacia uno de los tipos
de entidad participantes, preferiblemente a la que tiene la participación total.
Ejemplo:
En el esquema ER de COMPAÑÍA, la relación DIRIGE con su atributo FechaInic.
Los atributos de los tipos de relación 1:N pueden migrar sólo hacia la entidad
que participa en el lado N de la relación.
Ejemplo:
En el esquema ER de COMPAÑÍA, si la relación PERTENECE_A tuviera un
atributo FechaInicio, este atributo podría migrar hacia la relación EMPLEADO.
Los atributos de los tipos de relación N:M tienen que ser especificados como
atributos de la relación y no pueden migrar hacia ninguna de las entidades
participantes.
Ejemplo:
En el esquema ER de COMPAÑÍA, la relación TRABAJA_EN con su atributo
Horas.
o identificadora
a.
RELACIONES TERNARIAS
Las relaciones ternarias representan situaciones donde es indispensable la
aparición simultánea de las tres entidades en la relación. A menudo resulta difícil
decidir si una cierta relación se debe representar como una relación ternaria o si
debe descomponer en varias relaciones binarias. Esta decisión debe basarse en
la semántica de la situación que se está modelando. En general, un tipo de
relación ternaria representa distinta información que tres tipos de relación
binaria. Por ejemplo, el siguiente tipo de relación ternaria
Suponga que cada proyecto sólo usa un proveedor por componente. Esto se
puede representar fácilmente usando el tipo de relación ternaria SUMINISTRAR.
Por ejemplo, las instancias de relación {d1, p1, c1}, {d2, p1, c2} y {d2, p2, c1}
indican que los dos proveedores d1 y d2 suministran el componente c1, pero lo
hacen a diferentes proyectos (p1 y p2) y aunque pueden suministrar al mismo
proyecto (p1), ofrecen diferentes componentes (c1 y c2). De esta manera la
restricción semántica de un solo proveedor por componente por proyecto se
satisface.
ESPECIALIZACION Y GENERALIZACION
Con frecuencia un tipo de entidad tiene subgrupos de entidades significativos
que deben ser modelados explícitamente (por ejemplo, las entidades Empleado
pueden agruparse en secretaria, técnico, ingeniero, gerente, entre otros. Estos
subgrupos se llaman subclases y el tipo de entidad se llama superclase. A la
relación entre la superclase y una de sus subclases se le llama
superclase/subclase o simplemente clase/subclase (también conocida como
ISA o ES-UNA).
Especialización
Proceso de definir un conjunto de subclases de un tipo de entidad (top-down).
El proceso de especialización:
• Define el conjunto de subclases de una entidad.
• Asocia atributos específicos con cada subclase.
• Establece relaciones específicas adicionales entre cada subclase y otras
entidades.
Ejemplo de diferentes especializaciones (figura 4.1 del libro de texto con las
modificaciones de representación):
ST
DP
DT
Generalización
El proceso inverso de la especialización es la generalización. Es el proceso de
definir una clase generalizada (superclase) a partir de tipos de entidades dadas
(bottom-up). La generalización se realiza eliminando las diferencias entre varios
tipos de entidades e identificando sus rasgos comunes.
Ejemplo de diferentes especializaciones (figura 4.3 del libro de texto con las
modificaciones de representación):
DT
DEFINICIONES
Atributo (columna o campo)
Es un encabezado de columna, que describe el significado de los valores de la
columna.
Dominio
Es un conjunto de valores atómicos definido para cada atributo. Se denota D o
dom(A) donde A es un atributo. Un dominio tiene una definición lógica (que
describe su rango) y un tipo de datos o un formato.
Ejemplos:
• dom (EDAD) = [0,100], número entero (int)
• dom(SALARIO) = [10000.00,5000000.00], número real (float)
• dom(NOMBRE) = cadena de caracteres (string)
• dom(TELEF) = cadena de 8 dígitos, formato: dddd-dddd
MÁS FORMALMENTE
La definición formal de relación (o estado de relación) se basa en el producto
cartesiano de conjuntos. En particular, el producto cartesiano D1 x D2 de dos
conjuntos de valores D1 y D2 se define como el conjunto de todos los pares
ordenados (v1, v2) donde v1 ∈ D1 y v2 ∈ D2.
Ejemplo:
Si D1 = {2,4} y D2 = {1,3,5}, entonces D1 x D2 = {(2,1), (2,3), (2,5), (4,1), (4,3),
(4,5)}
Ejemplo:
r(R) = {(2,1), (4,3)} es una relación sobre los dominios de atributo D1 y D2
definidos en el ejemplo anterior.
Resumen
Dado el esquema de relación R (A1, A2, ..., An) con dominios de atributo dom(A1),
dom(A2),..., dom(An):
• R(A1, A2, …, An) es el esquema de la relación R de grado n.
• R es el nombre de la relación.
• A1, A2, …, An son los atributos de la relación.
Valores atómicos:
Todo valor en una tupla es atómico. Esto significa que los atributos multivalor y
compuestos no son permitidos.
Valores nulos:
Existe un valor especial llamado null que puede usarse cuando el valor del
atributo no se conoce o no aplica para una tupla.
MÁS DEFINICIONES
Llave primaria de una relación
Es la mínima cantidad de atributos que permite en forma única cada tupla de la
relación, o sea, dos tuplas cualesquiera tendrán una combinación de valores
distintos para esos atributos. La llave elige el diseñador de la BD como forma
principal de identificar a las tuplas de la relación.
Restricción de llave
Todas las tuplas de una relación deben ser distintas (por la definición de relación
como conjunto). Esto implica que ninguna combinación de dos tuplas tendrá los
mismos valores para todos los atributos.
Ejemplos:
• El salario de un empleado no debe exceder el salario de su supervisor
• El número máximo de horas que un empleado puede trabajar a la semana
es 40.
• Opción 8C - Una sola relación con un atributo de tipo: Crear una relación
simple L con atributos Attrs(L) = {k, a1, …, an} ∪ Attrs(S1) ∪ … ∪ Attrs(Sm) ∪
{t} donde k es la llave primaria de L, y t es un tipo de atributo que indica la
subclase a la cual cada tupla pertenece. Funciona bien para
especializaciones cuyas subclases son disjuntas. Puede potencialmente
generar un gran número de valores nulos.
Ejemplo: la figura 7.5c del libro de texto
• Opción 8D – Una sola relación con varios atributos de tipo: Crear una
relación simple L con atributos Attrs(L) = {k, a1, …, an} ∪ Attrs(S1) ∪ … ∪
Attrs(Sm) ∪ {t1, t2, …, tm} donde k es la llave primaria de L y cada ti (con 1 ≤ i
≤ m) es un atributo booleano que indica si una tupla pertenece a la subclase
Si. Funciona bien para especializaciones cuyas subclases son solapadas.
Ejemplo: las figuras 4.5 (modificada) y 7.5d del libro de texto
Ejemplo:
Los siguientes son ejemplos de diseños pobres con atributos combinados de
varios tipos de entidades o relaciones (la figura 10.3 del libro de texto).
EMP_DPTO
NOMBREE CED FECHAN DIRECCION NUMEROD NOMBRED CEDGTED
EMP_PROY
CED NUMEROP HORAS NOMBREE NOMBREP LUGARP
GUIA 1:
Diseñe un esquema relacional cuyo significado sea fácil de explicar; en particular
no combine atributos de diferentes tipos de entidades o de tipos de relaciones.
Una de las metas del diseño es minimizar el espacio para guardar las relaciones.
El agrupamiento de atributos en esquemas de relación influye directamente en la
cantidad de espacio necesario para guardar la información (ver ejemplo anterior
de la relación EMP_DEPT y las relaciones EMPLEADO y DEPARTAMENTO de
la BD COMPAÑIA con respecto a la repetición de la información).
• Anomalías de borrado:
Al borrar el último empleado de un departamento también borraramos el
departamento porque no podemos mantener la información del
departamento con un valor nulo (de empleado) en la llave primaria.
• Anomalías de modificación:
Si cambiamos el valor de algunos de los atributos de un departamento,
tenemos que cambiarlo en todas las tuplas que representan empleados
de ese departamento, para asegurarnos la consistencia de los datos.
GUIA 2:
Diseñe la base de datos de forma que no ocurran anomalías de actualización,
esto es, de inserción, borrado y modificación.
Ejemplo
Si sólo el 10% de los empleados tienen oficinas individuales, no se justificará
incluir un atributo NUM_OFICINA en la relación EMPLEADO, más bien,
podríamos crear una relación OFICINAS_EMPS (CED, NUM_OFICINA) que
contenga exclusivamente tuplas para los empleados con oficina individual.
GUIA 3:
Hasta donde sea posible evite poner atributos cuyos valores puedan ser nulos.
Si los valores nulos son inevitables, asegúrese que sean usados sólo en casos
excepcionales y no sean aplicados a la mayoría de las tuplas de la relación.
Ejemplo
Considere las siguientes extensiones de relación:
EMP_PLOC:
NOMBRE LUGARP
Juan Zapote
Juan San Pedro
María Desamparados
María Zapote
Ana Zapote
EMP_PROY1:
CED NUMEROP HORAS NOMBREP LUGARP
1-111-111 1 12 Invest1 Zapote
1-111-111 2 15 Invest2 San Pedro
2-222-222 3 10 Invest3 Desamparados
2-222-222 1 11 Invest1 Zapote
3-333-333 1 18 Invest1 Zapote
Si quisiéramos unir (join) las dos tablas, tendríamos que usar el único atributo
común a las dos, que es LUGARP (ubicación del proyecto). La tabla resultante
sería:
GUIA 4:
Diseñe los esquemas de relación de manera que la operación “join” entre las
relaciones se realice sobre parejas de llave primaria y llave externa. Así se
garantiza que no se produzcan nuevas tuplas incorrectas o se pierdan algunas
correctas.
Las anteriores son guías informales para un buen diseño y pueden detectarse
sin herramientas adicionales de análisis.
Existe una guía más formal para el diseño de bases de datos relacionales: el
proceso de normalización, que usa como base las dependencias funcionales.
Este proceso define con mayor precisión qué tan bueno o malo es un esquema
de relación.
DEPENDENCIAS FUNCIONALES
Dependencias funcionales (DF) es el concepto más importante en el diseño de
esquemas relacionales y sirve de base al proceso de normalización, es cual
construye BDs relacionales sin anomalías de actualización.
Es decir, dada una relación universal (con todos los atributos) R (A1, A2,..., An), el
atributo Ak es funcionalmente dependiente del atributo Ai (AiAk), si y solo si
cada valor de Ak en R tiene asociado exactamente un valor de Ai en R (en
cualquier instancia).
En otras palabras:
Dada una relación R, el atributo Ak es funcionalmente dependiente del atributo Ai
si para todas las parejas t1 y t2 de las tuplas donde t1[Ai] = t2[Ai], también es
cierto que t1[Ak] = t2[Ak]. Esto implica que si existe la dependencia funcional
AiAk y si dos tuplas en R tienen el mismo valor del atributo Ai, también tienen
que tener el mismo valor para el atributo Ak. Se dice que Ai determina de manera
única los valores de Ak o que hay una dependencia funcional de Ai a Ak, o que Ak
depende funcionalmente de Ai.
Ejemplo
(a) EMP_DPTO
(b) EMP_PROY
EL PROCESO DE NORMALIZACION
El proceso de normalización fue propuesto por E. Codd (1972) y consiste en
pasar el esquema de relación por una serie de transformaciones para llegar a
alguna de las formas normales. Durante este proceso la relación se descompone
en varias relaciones más pequeñas que poseen las propiedades deseadas,
según la forma normal. En general, el objetivo de la normalización es minimizar
la redundancia (duplicación innecesaria de datos) y evitar las anomalías de
actualización.
(a) EMP_PROY
CED NUMEROP HORAS NOMBREE NOMBREP LUGARP
fd1
fd2
fd3
Ejemplo 3
CLIENTE
NumCliente NumInv Fecha NomCliente CiudadCliente PrecioEntrega PrecioUnitario Cantidad
fd1
fd2
fd3
fd4
|___________
Problemas:
• Redundancia de los datos
• Anomalías de inserción, borrado y modificación (especifique cuáles)
Ejemplo
En la tabla EMP_PROY en Ejemplo 2 anterior {CED, NUMEROP} → HORAS es
una DF total porque ni {CED} → HORAS ni {NUMEROP} → HORAS son válidas.
Sin embargo, la DF {CED, NUMEROP} → NOMBREE es parcial porque {CED}
→ NOMBREE.
Definición
Una relación está en 2FN si está en 1FN y cada atributo no-primo de la relación
es total y funcionalmente dependiente de cada llave candidata (cuando sólo hay
una llave candidata, ésta se convierte en la llave primaria y entonces los
atributos no-primos deben depender total y funcionalmente de la llave primaria).
tabla 3:
NUMEROP NOMBREP, LUGARP
CLIENTE:
tabla 1:
NumCliente NomCliente, CiudadCliente, PrecioEntrega
|__________
tabla 2:
NumInv PrecioUnitario
tabla 3:
{ NumCliente, NumInv, Fecha } Cantidad
Problemas:
•Todavía pueden existir problemas de redundancia de datos y
actualizaciones.
Ejemplos
• La relación EMP_PROY no tiene problemas.
• La relación CLIENTE tiene problemas de redundancia, anomalías de
borrar, insertar y modificar. Por ejemplo, no se puede insertar el precio de
entrega si no hay un cliente que compre algo o si se borra el último cliente
desaparece la información de precio de entrega.
3FN es más estricta que 2FN, es decir, si una relación está en 3FN también está
en 2FN, pero no viceversa.
(a) EMP_DPTO
(b) CLIENTE
tabla b1:
NumCliente NomCliente, CiudadCliente
tabla b2:
CiudadCliente PrecioEntrega
R1
R2 R3 R4
R2 R5 R6 R4
• Shapefile de distritos
• Shapefile de cantones
• Shapefile de salud
• Shapefile de colegios
SQL es un lenguaje que cuenta con sentencias para crear, consultar y actualizar
las BDs relacionales, por lo tanto se comporta como DDL y como DML. Además,
tiene sentencias para definir vistas en la BD, especificar aspectos de seguridad y
autorización, definir las restricciones de integridad referencial, entre otros. SQL
usa las siguientes convenciones para referirse a elementos del modelo
relacional:
Aunque las tablas son la unidad básica de manejo de datos, existen otras
estructuras en la cuales las tablas están “incrustadas” como se presenta en la
siguiente figura.
Base de datos
Catálogo
Esquema
Tablas y vistas
Tuplas y columnas
Ejemplo
SELECT NOMBRE
FROM EMPLEADO;
A esta opción se puede añadir la condición WHERE que indica la condición quen
deben cumplir algunos valores en los atributos para recuperar las tuplas:
Para escribir las consultas se debe analizar primero cuáles tablas contiente los
atributos que usuario necesita desplegar.
SELECT NSS
FROM EMPLEADO;
SELECT *
FROM EMPLEADO
WHERE ND=5;
EMPLEADO
NOMBRE IN APELLIDO NSS FECHAN DIRECCION SE SALA NSS ND
IC XO RIO SUPER
José B Silva 123456789 09-ENE-55 Fresnos 731, M 30000 333445555 5
Higueras, MX
Federico T Vizcarr 333445555 08-DIC-45 Valle 638, M 40000 888665555 5
Higueras, MX
Ramón K Nieto 666884444 15-SEP-52 Espiga 875, M 38000 333445555 5
Heras, MX
Josefa A Esparza 453453453 31-JUL-62 Rosas 5631, F 25000 333445555 5
Higueras, MX
SELECT SALARIO
FROM EMPLEADO;
Salario
30000
40000
25000
43000
38000
25000
25000
55000
SQL no elimina las tuplas repetidas en el resultado de una consulta. Para
eliminarlas se debe usar la opción DISTINCT.
Salario
30000
40000
25000
43000
38000
55000
6. Recuperar todos los empleados del departamento 5 cuyo salario está entre
30000 y 40000.
SELECT *
FROM EMPLEADO
WHERE (SALARIO BETWEEN 30000 AND 40000) AND ND = 5
Se puede notar que se obtuvo todas las combinaciones posibles entre las
tuplas de las dos tablas (producto cartesiano), pero se perdió la información
en cual departamento trabaja cada empleado. Para obtener la respuesta
correcta la cláusula WHERE debe tener la condición de igualdad entre la
llave primaria de la tabla padre y su correspondiente llave foránea en la tabla
hija. Esta operación tiene nombre de JOIN y es la más importante operación
en bases de datos relacionales.
No existe límite de tablas para hacer las operaciones de join. Sin embargo,
más tablas para unirlos, mayor tiempo de ejecución de la consulta
12. Preparar una lista con todos los nombres de los proyectos en los que
participa el empleado ‘Silva’ como trabajador
SELECT P.NOMBREP
FROM TRABAJA_EN T, EMPLEADO E, PROYECTO P
WHERE E.APELLIDO = ‘Silva’
AND T.NSSE = E.NSS
AND T.NUMP = P.NUMEROP
SELECT P.NOMBREP
FROM PROYECTO P
WHERE P.NUMEROP
IN (SELECT T.NUMP
FROM TRABAJA_EN T, EMPLEADO E
WHERE T.NSSE=E.NSS AND E.APELLIDO= ´Silva´)
SELECT P.NOMBREP
FROM PROYECTO P
WHERE P.NUMEROP IN (1,2)
13. Preparar una lista con todos los nombres de los proyectos en los que
participa el empleado ‘Silva’, sea como trabajador o como gerente del
departamento que controla ese proyecto.
SELECT P.NOMBREP
FROM TRABAJA_EN T, EMPLEADO E, PROYECTO P
WHERE E.APELLIDO = ‘Silva’
AND T.NSSE = E.NSS
AND T.NUMP = P.NUMEROP
UNION
(SELECT P.NOMBREP
FROM PROYECTO P, DEPARTAMENTO D, EMPLEADO E
WHERE P.NUMD = D.NUMEROD
AND D.NSSGTE = E.NSS
AND E.APELLIDO = ´Silva`)
14. Recupere los nombres de cada empleado que tiene una persona
dependiente de él con el mismo nombre y sexo.
NOT TRUE
TRUE FALSE
FALSE TRUE
UNKNOWN UNKNOWN
18. Recupere los nombres y direcciones de todos los empleados que trabajan
para el departamento “Investigación”. Es la misma consulta que presentada
en el punto 8, escrita ahora usando tablas concatenadas:
SQL permite usar las funciones de agrupación de valores: SUM, MAX, MIN,
AVG y COUNT. La última devuelve el número de tuplas o valores específicos
en una consulta. Estas funciones se pueden usar en las cláusulas SELECT y
HAVING (la veremos más tarde).
23. Recupere los nombres de los empleados que tienen dos o más
dependientes.
25. Para cada proyecto recupere el número del proyecto, el nombre del proyecto
y el número de empleados que trabajan en el proyecto.
26. Para cada proyecto en el que trabajan más de dos empleados recupere el
número del proyecto, el nombre del proyecto y el número de empleados que
trabajan en él.
ORDENAMIENTO
27. Recupere los nombres de los empleados y los proyectos en los cuales
trabajan, ordenados por departamento y dentro de cada departamento
ordenados alfabéticamente por apellido y nombre
y aceptar la configuración física dada por defecto. Esto permite tener la base de
datos al nivel conceptual y archivos físicos que guardan los datos tanto para las
consultas de los usuarios como para recuperar el sistema en caso de falla.
seguido por las definiciones de las tablas, vistas, dominios y otros objetos. No
todos los DBMSs incluyen la opción de crear esquemas (ejemplos de esquemas
Anexo 1).
• Marca de tiempo
o TIMESTAMP incluye los campos de DATE y TIME y
adicionalmente 5 posiciones para las fracciones decimales de
segundos.
Restricciones de tabla
BORRAR LA TABLA
Ejemplo
MODIFICAR LA TABLA
OPERACIONES DE ACTUALIZACIÓN
INSERT
1. Inserte todos los datos de un empleado específico
Cuando se insertan valores para sólo algunos atributos, los atributos deben
especificarse.
3. Creación de una tabla nueva y carga con los valores de otra tabla:
DELETE
1. DELETE FROM EMPLEADO
WHERE APELLIDO = ’Martinez’
UPDATE
1. Cambie el lugar y el número del departamento que controla proyecto Nº 10
UPDATE PROYECTO
SET LUGARP = ‘Belén’, NUMD = 5
WHERE NUMEROP = 10;
UPDATE EMPLEADO
SET SALARIO = SALARIO * 1.1
WHERE ND IN (SELECT NUMEROD
FROM DEPARTAMENTO
WHERE NOMBRED = ‘Investigación’);
VISTAS
Una vista es una tabla que se deriva de otras tablas. Estas otras tablas pueden
ser tablas o vistas definidas previamente. Una vista puede representar la tabla
virtual, eso es no existe en formato físico o puede ser representada por medios
de tablas físicas cuando se crean vistas materializadas.
CREAR VISTA:
CONSULTAR VISTA:
ACTUALIZAR VISTA:
Las vistas virtuales definidas usando múltiples tablas (join), agrupando tuplas o
usando las funciones normalmente no se pueden actualizar.
BORRAR VISTA:
Debido a que todo el dato solicitado por la aplicación debe ser transferido desde
el disco a la memoria principal, este tiempo debería ser minimizado. Para
lograrlo, se debe considerar como los datos están guardados en el disco, en
otras palabras, la organización física de los registros. Si dos registros son
frecuentemente accedidos juntos, deberían estar colocados cerca en el disco.
Otro aspecto a considerar es contar con los elementos necesarios para disminuir
el tiempo de búsqueda de registro de interés, en otras palabras, contar con la
existencia de los índices.
ORGANIZACIÓN DE ARCHIVOS
Los archivos pueden ser organizados de diferente forma. Para el propósito de
este curso, nos enfocamos a dos tipos: archivo secuencial y ordenado.
Características:
Insertar
Operación muy eficiente. Se copia el último bloque del archivo en el buffer, se
inserta el nuevo registro y se reescribe el bloque de nuevo al disco. La dirección
del último bloque se guarda en el encabezado del archivo (file header).
Buscar
Operación muy costosa pues requiere una búsqueda lineal del archivo (scan).
En promedio se necesitan leer b/2 bloques para un archivo de b bloques.
Borrar
Operación muy costosa. Primero se necesita encontrar el registro a borrar. Una
vez encontrado, se pone una marca en el registro para indicar que fue borrado.
Es necesario reorganizar el archivo periódicamente para reutilizar el espacio
ocupado por los registros borrados.
Ordenar
Operación muy costosa para archivos grandes. En estos casos se aplican
técnicas de ordenamiento externo, como por ejemplo merge externo.
Modificar
Operación costosa debido a la necesidad de buscar el elemento para su
modificación.
2. ARCHIVO ORDENADO
Características:
Insertar
Operación muy costosa pues debe mantener el archivo ordenado, y en promedio
se deben mover (leer y reescribir) b/2 bloques para un archivo de b bloques
cada vez que se inserta un nuevo registro. Algunas soluciones posibles son:
• Reservar espacios sin usar en cada bloque.
• Crear un archivo temporal no ordenado de desbordamiento (overflow).
Las búsquedas se hacen usando búsqueda binaria en el archivo “master”
(ordenado) y búsqueda lineal en el archivo de desbordamiento.
Periódicamente se necesita mezclar el archivo de overflow con el master,
durante una reorganización.
Buscar
• Buscar un registro basado en la llave de ordenamiento es muy eficiente
(por ejemplo, usando búsqueda binaria solo se requieren leer log2 b
bloques para un archivo que contiene b bloques).
• Buscar con las condiciones de <, >, =, ≤, ≥, son también muy eficientes ya
que el ordenamiento físico de los registros implica que todos los registros
que satisfacen la condición están contiguos en el archivo.
• Encontrar el siguiente registro en el orden no requiere normalmente
accesar otros bloques (a menos que sea el último registro del bloque).
• Buscar por un campo que no es el campo de ordenamiento se convierte
en acceso secuencial.
Borrar
Requiere reorganizaciones periódicas.
Modificar
Operación muy costosa por razones de reorganización.
Índice primario
Índice secundario
Este índice se usa para acceso ordenado a los registros de un archivo con
respecto a un campo que no fue el que usó para ordenar físicamente el archivo.
El campo de indexación puede ser un campo llave o no. Puede haber muchos
índices secundarios (sobre distintos campos de indexación) para un mismo
archivo. La estructura del índice secundario tiene una entrada por cada registro
que se encuentra en el archivo de datos, por lo tanto este índice es denso:
ÍNDICES MULTINIVELES
Ejemplo:
Aunque las transacciones pueden incluir varias operaciones sobre los datos, de
nuestro interés son READ y WRITE, que permiten, respectivamente, leer los
datos desde la BD y escribirlos.
Ejemplos:
READ(A); READ(A);
A = A - N; A = A + M;
WRITE(A); WRITE(A);
READ(B);
B = B + N;
WRITE(B);
read(X) write(X)
1. Encuentra la dirección de X en la 1. Encuentra la dirección del bloque
base de datos. que contiene X.
2. Copia del disco a a memoria 2. Si el bloque que contiene X no se
principal el bloque que contiene X. encuentra en la memoria principal, lo
copia desde el disco a la memoria (o
sea, ejecuta una especie de operación
read internamente).
3. Modifica su valor.
4. Guarda el bloque modificado al
disco (actualiza la BD en disco).
Ejemplo:
T1 T2
READ(X);
T
i X = X - N;
e READ(X);
m X = X + M;
p WRITE(X);
o
READ(Y);
WRITE(X);
Y = Y + N;
WRITE(Y);
2. Dirty read (lectura sucia): una transacción lee el valor de la otra mientras la
última aborta su ejecución; existe la dependencia write – read entre las dos
transacciones.
Ejemplo:
T1 T2
READ(X);
T X = X - N;
i WRITE(X);
e
m
READ(X);
p X = X + M;
o WRITE(X);
READ(Y);
abort
T1 T2
READ(X);
T PRINT(X);
i READ(X);
e
m
X = X + M;
p WRITE(X);
o READ(X);
PRINT(X);
Ejemplo:
T1 T2
SELECT * FROM Table1 UPDATE Table1 SET column2 = 10
WHERE column1 = 5 SET column1 = 5
WHERE column1 = 8
Cada transacción que ocupa leer un dato o escribir sobre él debe solicitar al
sistema de control de concurrencia de la DBMS un candado adecuado. Solo los
candados S son compatibles, o sea, dos o más transacciones pueden tener el
candado S sobre el mismo dato (pueden leer el mismo dato). Si una de ellas
tiene candado X (escribe sobre el dato), ningún otro candado se puede adquirir
sobre este dato
ADQUIRIDO
MODO Ninguno S X
SOLICITADO
S + + -
+ compatible
X + - -
Ejemplo:
T1 T2
SLOCK(Y); SLOCK(X);
READ(Y); READ(X);
UNLOCK(Y); UNLOCK(X);
XLOCK(X); XLOCK(Y);
READ(X); READ(Y);
X = X + Y; Y = Y + X;
WRITE(X); WRITE(Y);
UNLOCK(X); UNLOCK(Y);
T1 T2
SLOCK(Y);
READ(Y);
UNLOCK(Y);
SLOCK(X);
READ(X);
UNLOCK(X);
XLOCK(Y);
READ(Y);
; Y = Y + X;
WRITE(Y);
UNLOCK(Y);
XLOCK(X);
READ(X);
X = X +Y;
WRITE(X);
UNLOCK(X);
Sistema de recuperación
El control de concurrencia no es suficiente para asegurar la consistencia en la
base de datos debido a que en un sistema real pueden ocurrir diferentes tipos de
fallos:
1. Fallos de la computadora: Ocurre un error de hardware o software
durante la ejecución de la transacción. Así el contenido de la memoria
principal se puede perder.
4. Fallo del disco: Partes del disco donde se pierden datos por causa de las
fallas físicas.
Los errores tipo 1, 2 y 3 ocurren más a menudo que los problemas 5 y 6. La idea
principal es mantener suficiente información para recuperar el sistema de los
fallos tipo 1-3. De esto se encarga el sistema de recuperación.
Ejemplo:
[T1, begin]
[T1, read, D, 5]
[T1, write, D, 5, 20]
[T1, commit]
[T2, begin]
[T2, read, B, 2]
[T2, write, B, 2, 10]
[T2, read, D, 20]
[T2, write, D, 20, 25]
[T2, commit]
ANEXO 1
EJEMPLOS DE ESQUEMAS
http://www.microsoft.com/downloads/details.aspx?familyid=0f6e0bcf-a1b5-4760-
8d79-67970f93d5ff&displaylang=en
o desde
http://www.codeplex.com/MSFTDBProdSamples/Wiki/View.aspx?title=%20AdvW
orks2005Diagram&referringTitle=AWSchemaDiag