PPT1:
Bases de datos:
• Definicion de base de datos
• Es una coleccion de datos relacionados
• Es una coleccion de archivos diseñados para servir a múltiples
aplicaciones
• Es un dato que representa hechos conocidos que pueden
registrarse y que tienen un resultado implícito.
• Propiedades implicitas de una BD
• Una BD representa aspectos del mundo real a veces denominado
universo de discurso
• Es una coleccion coherente de datos con significados inherentes.
Un conjunto aleatorio de datos no puede considerarse una BD. Osea,
los datos deben tener cierta lógica.
• Una BD se diseña, construye y completa de datos para un
proposito especifico. Esta destinada a un grupo de usuarios concretos
y tiene algunas aplicaciones preconcebidas en las cuales estan
interesados los usuarios.
Conclusion
• La definicion de una BD consiste en especificar los tipos de datos, las
estructuras y restricciones de los mismos.
• La construccion de la BD es el proceso de almacenar datos concretos en
algun dispositivo de almacenamiento bajo la gestion del DBMS.
• La manipulacion de bd incluye funciones tales como consultar la BD para
recuperar datos especificos, actualizar los datos existentes, reflejar
cambios producidos, etc.
Conceptos basicos
• Abstracciones:
• Vision: ve solo los datos de interes (muchas vistas para la misma
BD) a traves de programas de aplicacion.
• Conceptual: Que datos se almacenan en la BD y que relaciones
existen entre ellas.
• Fisico: describe como se almacenan realmente los datos (archivos
y hard)
• Modelos de datos: Coleccion de herramientas conceptuales para
describir datos, relaciones entre ellos, sem;antica asociada a los datos y
restricciones de consistencia.
• Modelos:
• Basado en objetos (vision, conceptual) estructura flexible,
especifican restricciones explicitamente.
Modelo de entidad-relacion.
Modelo orientado a objetos
• Basado en registros (conceptual, fisico) la BD se estructura en
registros de formato fijo. Se dispone de lenguaje asociado para
expresar consultas (relacional, jerarquico, red)
• Fisico de datos (fisico) Describen los datos en el nivel mas bajo.
• Independencia de datos : Capacidad de modificar esquemas sin alterar
otro nivel.
• Fisico, modificar el esquema fisico sin provocar que los
programas de aplicacion tengan que reescribirsa. Generalmente,
para mejorar el funcionamiento
• Logico, Modificar el esquema conceptual.
• Categorias de soft de procesamiento de datos:
• Sin independencia de datos (S.O., transferenncia a un sector
particular)
• Independencia fisica (leer un registro de un archivo, SO)
• Independencia logica parcial (leer siguiente registro de un
archivo)
• Independencia logica y fisica (leer siguiente registro de un tipo
particular, DBMS)
• Independencia geografica (BDs distribuidas)
PPT3
La memoria primaria (RAM) es rapida y de simple acceso, pero su uso tiene
algunas desventajas respecto al almacenamiento secundario:
• Capacidad limitada
• Mayor Costo
• Es volatil
• Almacenamiento secundario: Necesita mas tiempo para tener acceso a
los datos que en RAM.
• Su acceso es tan lento que es imprescindible enviar y recuperar
datos con inteligencia
• Al buscar un dato, se espera encontrarlo en el primer intento (o en
pocos)
• Si se buscan varios datos, se pretendera traer todos juntos de una
sola vez.
• La informacion esta organizada en archivos.
• HW de almacenamiento secundario
Discos: Almacenamiento:
• Un solo registro por sector: tiene como ventaja que
cualquier registro se recupera con solo recuperar un sector,
pero tiene la desventaja que puede quedar espacio del
sector sin usar.
• El principio de un registro en un sector y el final en
otro: Tiene como ventaja que no quedara espacio
desperdiciado, pero por otro lado es necesario mas de un
acceso a sectores en lugar de solo uno.
Cintas: es el medio mas economico, estable en diferentes
condiciones ambientales y faciles de transportar.
• Viaje de un byte.
• Administrador de archivos: conjunto de programas del S.O. que
tratan aspectos relacionados con archivos y dispositivos de E/S
En las capas superiores, establece si las caracteristicas del
archivo son compatibles con la operacion deseada.
En capas inferiores determina donde se guarda el dato
(clindro, sector, etc). Si el sector esta ubicado en RAM, se utiliza,
sino debera traerse previamente.
• Buffers de E/S: Agilizan la E/S de datos. Manejar buffers implica
trabajar con grandes grupos de datos en RAM, para reducir el acceso
a almacenamiento secundario.
• Procesador de E/S: dispositivo utilizado para la transmision desde
o hacia el almacenamiento externo, independiente de la CPU
• Controlador de disco: es el encargado de controlar las operaciones
del disco como colocarse en la pista, sector y transferir los datos.
• Que sucede al escribir un byte en el disco desde un programa:
El programa pide al S.O. escribir el contenido de una
variable en un archivo
El S.O. transfiere el trabajo al administrador de archivos.
El Administrador busca el archivo en su tabla de archivos y
verifica las caracteristicas
El Adm de archivos obtiene de la FAT la ubicacion fisica del
sector del archivo donde se guardara el byte.
El adm se asegura que el sector del archivo esta en un
buffer y graba el dato donde va dentro del sector del buffer.
El adm da instrucciones al procesador de E/S (donde esta el
byte en RAM y en que parte del disco se debera almacenar)
El procesador de E/S encuentra el momento para transmitir
el dato a disco, la cpu se libera.
El procesador de E/S envia el dato al controlador del disco
(con la direccion de escritura)
El controlador prepara la escritura y transfiere bit por bit en
la superficie del disco.
• Archivos - Tres aspectos:
• Tecnicas de acceso. Veremos su evolucion, necesidades y
características.
• Independencia: fisica y logica
• Redundancia de datos: conceptos de normalizacion,.
• Caracteristicas de estructura de archivos:
• Secuencia de bytes
No puede determinar facilmente comienzo y fin de cada
dato
• Campos
Unidad logicamente significativa mas pequeña de un
archivo. Permite separar la información.
Identidad de campos: variantes, pro y contras.
• Longitud predecible (longitud fija, desperdicio de
espacio, si el tamaño es pequeño, al agrandarlo se podria
desperdicar mas espacio)
• Indicador de longitud. Al principio de cada campo
• Delimitador al final de cada campo (caracter especial
no usado como dato)
• Registros
Conjunto de campos agrupados que definen un elemento
del archivo.
Organizacion:
• Longitud predecible (cant de bytes o cantidad de
campos)
• Indicador de longitud (al comienzo, indica la cantidad
de bytes que contiene)
• Segundo archivo (mantiene la info de la direccion del
byte de inicio de cada registro)
• Delimitador (caracter especial no usado como dato)
• Llave o clave: Se concibe al registro como la cantidad de informacion
que se lee o escribe.
• Objetivo: extraer solo un registro especifico en vez del archivo
completo
• Es conveniente identificar un registro con una clave que se base
en el contenido del mismo.
• Permite la identificacion del registro:
Univoca / primaria
Secundaria (generalmente no identifican un unico registro)
• Forma canonica: Forma estandar para una llave puede derivarse a
partir de reglas bien definidas.
Representacion unica para la llave, ajustada a la regla.
Ej. Llave solo con letras mayusculas y sin espacios al final
Al introducir un registro nuevo, se forma una llave canonica
para ese registro y despues se la busca en el archivo. Si ya
existe, se debe modificar los campos de la llave para que sea
unica.
Performance
• Estudio de performance
• Punto de partida para futuras evaluaciones
• Costo: Acceso a disco, Num de comparaciones.
• Caso promedio
• En el caso secuencial
• Mejor caso: leer 1 registro, el peor caso leer n registros
• Promedio n/2 comparaciones
• Supongamos que hay 1000 registros, buscar uno en particular en
el peor caso seria 1000, el mejor cero (podria estar cargado en
memoria)
• Es O(n) porque depende de la cantidad de registros.
• Lectura de bloques de registros. Mejora el acceso a disco peron no
varian las comparaciones. Sigue siendo O(n), pero ahorra tiempo ya
que disminuye el Num de desplazamiento del brazo del disco.
• Acceso directo: Modo de acceso que permite saltar a un registro preciso,
requiere una sola lectura para traer el dato O(1). Debe necesariamente
conocerse el lugar donde comienza el registro requerido.
• Numero relativo al registro (NRR) Indica la posicion relativa con
respecto al principio del archivo.
Con registros de longitud variable (la lectura sigue siendo
secuencial , O(n) )
Con registros de longitud fija, posibilita el acceso directo, se
traduce el NRR calculando la distancia en bytes para acceder el
registro buscado.
• Registro encabezado: Mantiene informacion general de un archivo
(cantidad de registros, tamaño de registros, tipo de delimitador, etc)
El acceso directo es preferible solo cuando se necesitan pocos registros
especificos, pero este metodo no siempre es el mas apropiado para la
extraccion de informacion, por ejemplo en un proceso de pago de cheques
para todos los empleados, obligatoriamente se procesaran todos los
registros, es mas practico recorrerlo secuencial.
• Archivos Serie: archivo donde cada registro es accesible solo luego de
procesar su antecesor, simples de acceder
• Archivo Secuencial: Archivo donde los registros son accesibles en orden
de alguna clave.
Tipos de archivos
• Estaticos: Pocos cambios
• Pueden actualizarse en procesamiento por lotes
• No necesita de estructuras adicionales para agilizar los cambios.
• Volatiles: Sometido a operaciones frecuentes:
• Agregar / Borrar / Actualizar
• Su organizacion debe facilitar cambios rápidos
• Necesita estructuras adicionales para mejorar los tiempos de
acceso.
Eliminacion:
• Cualquier estrategia de eliminacion de registros debe proveer una forma
de reconocerlos una vez eliminados (ej, colocar una marca de "Eliminado")
• Con este criterio se puede deshacer la eliminacion facilmente
• Como reutilizar el espacio de los eliminadoS?
• Los programas que usan archivos deben incluir cierta logica para ignorar
los registros eliminados.
• Compactacion:
• Con espacio suficiente, la forma mas simple es copiar todo a
excepcion de los registros eliminados -> baja fisica
• Frecuencia: tiempo o dependiendo de la necesidad de espacio.
• Hay situaciones en que se necesita reutilizar espacion de los
registros eliminados lo antes posible
• Veremos el analisis de recuperacion dinamica del
almacenamiento.
• Aprovechamiento de espacio:
• Registros de longitud fija -> Es necesario garantizar:
Marcas especiales en los registros borrados (ej un asterisco
al principio del registro borrado -> Baja logica)
Recuperacion del espacio para su reutilizacion cuando se
agreguen registros
• Busqueda secuencial -> usa las marcas de borrado.
• Para agregar, se busca el primer registro
eliminado. Si no existe se llega al final del archivo y se
agrega ahi.
• Es muy lento para operaciones frecuentes.
• Es necesario
• Una forma de saber de inmediato si hay
lugares vacios en el archivo
• Una forma de saltar directamente a unos de
esos lugares en caso de existir.
Recuperacion de espacio con lista o pilas (header)
• Lista encadenada de registros disponibles
• Al insertar un registro nuevo en un archivo de
registros con longitud fija, cualquier registro disponible es
bueno.
• La lista no necesita tener un orden particular, ya que
todos los registros son de longitud fija y todos los espacios
libres son iguales.
• Se utiliza el NRR como direccion de enlace entre
nodos
• Para la lista de elementos (en realidad una pila) se
utiliza -1 indicando que no hay mas lugares libres para la
utilizacion.
• Considerar la lista como una pila implica una minima
reorganizacion al agregar o quitar elementos
• El NRR que indica el primer registro de la pila de
disponibles, esta en un registro encabezado del archivo (si
hubiera un -1 indicaria que la lista o pila esta vacia)
• EJ: alfa beta delta *6 gamma *-1 epsilon
El encabezado tiene como proximo a insertar en pos 4.
borro beta
alfa *4 delta *6 Gamma *-1 Epsilon
Ahora el encabezado tiene como proximo a insertar en pos
2. si inserto un dato, vuelve a quedar como en el primer
estado, con el encabezado con proximoa insertar en pos 4.
• Recuperacion de espacio con registros de longitud variable:
Marca de borrado al igual que en registro de longitud fija
El problema de estos registros es que no se puede colocar
en cualquier lugar, para poder ponerlo, debe caber
obligatoriamente.
Lista, no se puede usar NRR como enlace, se usa un campo
binario que explicitamente indica en enlace (conviene que
tambien indique el tamaño).
Cada registro indica en su inicio la cantidad de bytes.
Reutilizacion: Buscar el registro borrado de tamaño
adecuado (Lo suficientemente grande)
Como se necesita buscar, no se puede organizar la lista de
disponibles como una pila.
El tamaño adecuado del primer registro borrado a utilizar ->
Origina fragmentacion,
• Fragmentacion Interna: Ocurre cuando se desperdicia
espacio de un registro, se le asigna el lugar peron no lo
ocupa totalmente. Se define un long y no se utiliza
totalmente.
• Ocurre con registros de longitud fija, salco que los
datos reales sean de longitud fija.
• No existe en registros de longitud variable, cuando
se escribe el archivo por primera vez, si existe si se
elimina un registro y se reemplaza por uno mas corto.
• Solucion: El "Residuo" una vez ocupado el espacio
libre, pasa a ser un nuevo registro libre. Si este es muy
chico no se podra ocupar -> Fragmentacion externa.
• Fragmentacion Externa: Ocurrre cuando el espacio que no
se usa es demasiado pequeño para ocuparse.
• Soluciones:
• Unir espacios libres pequeños adyacentes para
generar un espacio disponible mayor.
• Minimizar la fragmentacion eligiendo el
espacio mas adecuado en cada caso.
• Estrategias de colocacion:
Primer ajuste: Se selecciona la primer entrada de la lista de
disponibles que pueda almacenar al registro y se le asigna el
mismo.
• Minimiza la busqueda.
• No se preocupa por la exactitud del ajuste.
• Mas rapido
Mejor ajuste: Elige la entrada que mas se aproxime al
tamaño del registro y se le asigna completa.
• Exige busqueda.
• Genera fragmentacion interna
Peor ajuste: Selecciona la entrada mas grande para el
registro y se le asigna solo el espacio necesario.El resto queda
libre para otro registro.
• Genera fragmentacion externa.
Busqueda:
• El costo de la busqueda de informacion se puede medir en:
• Numero de comparaciones. Operaciones en memoria, se puede
mejorar con algoritmos mas eficientes.
• Numero de accesos. Operaciones en disco.
• Busqueda de un registro
• Es mas rapido si conocemos el NRR porque podemos acceder
directamente
• Secuencial, debe buscarse desde el principio
• Trataremos de incorporar el uso de claves.
• Busqueda binaria.
• Supongamos un archivo ordenado por clave y Registros de
longitud fija
• La busqueda consiste en partir el archivo a la mitad y comparar la
clave (puedo acceder al medio por tener longitud fija)
• Si N es el numero de registros, la performance sera del orden de
Log2N
• Se mejora la performance de la busqueda secuencial
• Acota el espacio para encontrar informacion tiene un costo por
mantener el archivo ordenado.
• Primera solucion:
Llevar el archivo a RAM (vector) y ordenar.
Por que ordenar en RAM y no en disco directamente.
• El numero de corrimientos implica accesos a disco
(muy costoso)
• Primer paso, llevar las llaves a forma canonica.
• Algoritmos de ordenacion se pueden encontrar en
bibliografia, aparece una variante interesante
• Segunda solucion
No llevar todo el archivo a RAM, solo llevar la clave.
• Esto permite clasificar archivos mas grandes
• Tercera solucion
Cuando el archivo de datos no entra en RAM, ni tampoco
solo las claves.
Se parte el archivo, se ordena cada parte y se juntan las
partes ordenadas.
Ventajas:
• Permite clasificar archivos grandes
• Lectura de cada particion es siempre secuencial
• Lectura de cada particion en orden, escritura en un
nuevo archivo (ambas secuencialeS)
El tamaño lo define el tamaño de la RAM
Indices:
• Definiciones
• Herramienta: para encontrar registros en un archivo. Consiste en
un campo clave (busqueda) y uno de referencia que indica donde
encontrar el registro dentro del archivo de datos.
• Tabla: que opera con un procedimiento que acepta informacion
acerca de ciertos valores de atributos como la entrada (clave) y
provee como salida informacion que permite la rapida localizacion del
registro con esos atributos.
• Estructura de datos (clave,direccion) usada para decrementar el
tiempo de acceso a un archivo.
• Equivale a un indice de un libro, la forma mas sencilla de implementarlo
es con un arbol, y su caracteristica fundamental es que permite que se
ordene sin que realmente el archivo se reacomode.
• Operaciones basicas en un archivo indizado:
• Indice en memoria: Busqueda binaria + rapida, comparada con
archivos clasificados.
• Crear los archivos: el indice y el archivo de datos se crean vacios,
solo con registro cabecera.
• Cargar el indice en memoria: Se supone que cabe, ya que es lo
suficientemente pequeño. Se almacena en un arreglo.
• Agregar nuevos registros: implica al agregar al archivo de datos y
al archivo de indicess. En el archivo de datos,lo copia al final, se debe
saber el NRR (en fija) o la distancia en bytes (en variable) para el
indice. El Indice se ordena con cada nuevo elemento en forma
canónica (en memoria), setea el flag anterior.
• Eliminar un registro: En el archivo de datos, se utiliza cualquiera
de las tecnicas vistas para reutilizar el espacio. En el archivo de
indices, o se borra la entrada o se marca como borrado.
• Reescritura del archivo de indice: Uno de los cambios posibles
puede ser cambiar un flag en el registro cabecera cuando la copia del
indice esta en memoria principal, todos los programas deberian
revisar el flag antes de utilizarlo. Si el flag esta activo, el programa
sabra que el indice no esta actualizado. Si un programa detecta el
indice desactualizado, se debe acceder a un procedimiento para su
reconstruccion.
• Actualizacion de registros: si esta operacion se realizara sin
modificar la clave, si el registro no cambia de longitud, se almacena
en la misma posicion fisica y el indice no se toca. Si en cambio el
registro cambia de longitud (y se agranda), se reubica en el archivo
de datos y por lo tamnto se debe guardar en el indice la nueva
posicion. En cambio si la accion se realizara para modificar la clave,
significaria que hubo un cambio en el archivo de datos e implicaria
reorganizar el archivo de indices (el nuevo valor quiza haya dejado la
estructura desordenada).
• Las ventajas de usar indices son que se almacenan en memoria
principal, permite la busqueda binaria y el mantenimiento es menos
costoso.
• Indices grandes para entrar en memoria:
• Acceso y mantenimiento del indice: Almacen secundario
Ventajas:
• Posibilita la busqueda binaria en un archivo con
registros de longitud variable.
• La reorganizacion y el mantenimiento es menos
costoso que hacer estas tareas sobre el archivo de datos
directamente (sigue siendo mas pequeños que el archivo
de datos)
Desventajas:
• El numero de desplazamietos (para busqueda binaria
en disco)
• Reacomodo del indice debido a la adicion o borrado
de registros.
• Soluciones:
Organizacion por dispersion (hashing), prioriza la velocidad
de acceso
Uso de arboles
Niveles de indices: Indices de indices: permiten almacenar
indices mas grandes.
Indices secundarios:
• No seria natural solicitar un dato por clave
• En su lugar se usa un campo mas facil de recordar (ej buscar una cacion
por titulo o por compositor)
• Este campo es un campo que pertenece a una clave secundaria con la
llave primaia
• Las claves secundarias se pueden repetir.
• Acceso primero por la clave secundaria (se obtiene la clave primaria) y
luego por la llave primaria (en el indice primario)
• Operaciones:
• Eliminacion de registros: Asi el indice primario sirve como una
especie de buffer de proteccion que aisla los indices secundarios de
los cambios del archivo de datos.
Beneficio: No hay reacomodo por cada borrado.
Costo: se sigue ocupando espacio. Esto no implica
problema si el archivo es poco volatil, porque en cambio, si lo es
muy volatil, se podrian programar borrados fisicos de los indices
secundarios.
Si el indice secundario referencia directamente al archivo de datos,
un reacomodamiento fisico implicaria reacomodar el indice primario y
en este caso secundarios tambien (pueden ser varios)
• Actualizacion: Si lo que cambia es la llave secundaria, Se debe
reacomodar el indice secundario y puede ser relativamente costoso.
En cambio, si lo que cambia es la llave primaria, Implica que se
cambie la referencia en el registro de indice secundario, y en el caso
que existan registros repetidos, se debera reclasificar localmente en
el indice secundario.
• Consulta: mejora en gran medida el tiempo de respuestas.
• El problema que implica la repeticion de informacion. El archivo de
indices se debe reacomodar con cada adicion, aunque se ingrese una
clave secundaria ya existente, dado que existe un segundo orden por la
clave primaria. Misma clave, varias ocurrencias, en distintos registros
hace que se desperdicie espacio y hay menor posibilidad que el indice
quepa en memoria.
Soluciones:
• Arreglo: Clave+ vector de punteros con ocurrencias.
Al agregar un nuevo registro de una clave existente no se
debe reacomodar nada, solo reacomoda el vector de
ocurrencias.
Al agregar un nuevo registro de una clave nueva, se genera
un arreglo con la clave y un elemento en el vector de punteros.
Problema, la eleccion del tamaño del vector.
• Tamaño fijo
• Puede haber casos en que sea insuficiente.
• Puede haber casos en que sobre espacio, provocando
fragmentacion interna.
• Mejora: Clave + lista de punteros con ocurrencias
Listas invertidas: Archivos en los que una clave secundaria lleva a un conjunto
de una o mas claves primarias, es una lista de referencias de claves primarias.
De esta forma no se pierde el espacio (ya que no hay reservas) y si se agrega
un elemento a la lista, no es necesaria una reorganizacion completa.
• Organizacion fisica:
• Archivos secundarios
• Marcas o referencias
• Operaciones:
• Agregar un nuevo consiste en agregar concurrencias en la lista
invertida.
• Idem Borrar
• Modificaciones dependiendo el caso.
• Ventajas:
• El unico reacomodamiento en el archivo indice se produce al
agregar o cambiar un nombre, aunque igualmente es menos costoso,
ya que el indice es mas pequeño.
• Borrar o añadir grabaciones para un compositor, solo implica
cambiar el archivo de listas
• Como el reacomodamiento es a bajo costo, se pdria almacenar el
archivo indice en memoria secundaria, liberando RAM
• Desventaja:
• El archivo de listas es conveniente que este en memoria principal,
porque podria haber muchos desplazamientos en disco y es costoso
si hay muchos indices secundarios.
Arboles
Los problemas de usar indices son que a indices grandes, debe irse a
memoria secundaria y el acceso es lento, en el caso de una busqueda
binaria, se requieren demasiados desplazamientos y ademas es necesario
un metodo para mantener los indices ordenados.
• Arboles Binarios
o Arbol grado 2
o Cada nodo tiene de 0 a 2 descendientes directos (hijo izquierdo y
derecho)
o Aplicacion: expresiones aritmeticas, arboles de decision,
busqueda ABB
o En algunos casos se exige que el arbol sea completo, es decir que
todo nodo interno tenga sus dos descendientes.
o Como se almacena?
• Archivo con registro de longitud fija
• La informacion en el archivo no esta fisicamente ordenada
o Insercion
• Solo ligar al nodo apropiado (no reorganizar)
• Se va buscando en profundidad hasta donde deba
insertarse comparando a izq y derecha en que lugar queda bien
ordenado.
o Arbol balanceado: si la altura de la trayectoria mas corta hacia
una hoja no difiere de la trayectoria de la altura mas grande.
o Inconveniente, los arboles binarios, se desbalancean muy
facilmente, las busquedas pueden ser costosas. L a solucion es que se
vaya ordenando a medida que recibe las claves.
• Arboles AVL
o Arbol binario balanceado en altura. L a diferencia maxima de
altura entre cualquiera de dos subarboles que comparten la raiz es 1.
• Se llama arbol balanceado en altura o arbol BA(1).
• Las inserciones y eliminaciones se efectuan con un minimo
de acceso.
• Miembro de una clase mas general de arboles balanceados
en altura BA(K): donde la maxima diferencia de altura es K.
• Garantizan un cierto nivel minimo de desempeño de
busqueda.
• La estructura debe ser respetada, al insertar nuevos nodos,
se realizan rotaciones restringidas en un area local del arbol.
• Como son arboles binarios, con muchos niveles, son muy
profundos.
• En un arbol binario completamente balanceado el peor caso
de busqueda para encontrar una clave (considerando n claves
posibles) busca en Log2(n+1) niveles del arbol.
• En un arbol AVL, el peor caso de busqueda podria buscar en
1.44 log2(N+2) niveles del arbol.
• Para 1.000.000 de claves, un completamente balanceado
requiere desplazamiento de 20 niveles.
• En un arbol AVL el Num maximo de niveles a buscar es 28.
• Esto es bueno para almacenar en memoria principal.
• En almacenamiento secundario es deseable a lo sumo 5 o 6
desplazamientos, 20 o 28 es inaceptable.
• Volviendo a los dos problemas iniciales,
La busqueda binaria requiere demasiados
desplazamientos
Mantener un indice en orden es costoso:
• Arboles B
o Hasta ahora uno de los problemas era la eleccion de la raiz del
arbol y el otro era mantenerlo siempre balanceado. Los arboles B, son
construidos desde la BASE hacia arriba, la raiz emerge con la
construccion.
o Arboles B Balanceados. Son arboles multicamino con una
construccion especial en forma ascendente que permite mantenerlo
balanceado a bajo costo.
o Propiedades de un arbol B de orden M:
• Orden: Cantidad maxima de punteros por nodo
• Cantidad de punteros es igual a la cantidad de claves + 1.
• Ningun nodo tiene mas de M hijos.
• Cada nodo (menos la raiz y los terminales) tienen como
minimo M/2 hijos.
• La raiz tiene como minimo dos hijos o ninguno.
• Todos los nodos terminales estan a igual nivel
• Nodos no terminales no K hijos contienen K-1 Nodos. Los
nodos terminales tienen como minimo M/2 - 1 nodos y como
maximo M-1 nodos.
o Estructura:
• Archivo con registros de longitud fija
• Cada registro tiene una pagina o nodo
• En pascal seria:
PaginaAB = Record
Cant_claves: integer;
Claves: array[1..maxllaves] of Char;
Hijos: array[1.maxhijos] of integer;
End
o Definicion de nodo adyacente hermano: Dos nodos son
adyacentes hermanos si tienen el mismo padre y son apuntados por
punteros adyacentes en el padre.
o OPERACIONES
• Busqueda: Comienza buscando la clave en el nodo actual, si
no la localiza, toma el puntero correspondiente entre las claves
existentes. Si no es puntero nulo, se toma ese nodo y se llama
recursivamente. Si es un puntero nulo, el elemento no se
encuentra en el arbol.
• Insercion (creacion): Comienza con una busqueda que llega
hasta el nivel hoja, despues de encontrar el lugar de insercion en
el nivel hoja, hace el trabajo de insercion, division y promocion
continua en forma ascendente desde abajo. Si el registro tiene
lugar en el nodo hja ( o terminal) se inserta. Si en cambio no
tuviese lugar, produce overflow, el nodo se divide, se reparten los
elementos y se produce una promocion a un nivel superior,
generandose una nueva raiz.
• Eliminacion. El mejor caso es cuando el borrado de un item
no produce un underflow, en ese caso solo se reacomodan los
nodos internamente, en cambio en el peor caso, se produce un
underflow que implica que se tenga que recurrir a dos posibles
soluciones:
Redistribucion: Se transladan las claves a un nodo
adyacente hermano (en caso que este tenga suficiente
espacio)
Concatenacion: Si un nodo adyacente hermano esta
al minimo, no tiene espacio y no se puede redistribuir, se
concatena con un nodo adyacente disminuyendo el numero
de nodos, y en algunos casos la altura del arbol.
o La redistribucion podria posponer la creacion de paginas nuevas,
pueden crearse arboles mas eficientes en terminos de utilizacion de
espacio.
• Arboles B* (B Estrella, B Asterisco o B Especial)
o La condicion que lo distingue del B es que cada nodo (excepto la
raiz) esta lleno por lo menos en 2/3 partes
o Propiedades (arbol orden M)
• Cada pagina tiene como maximo M descendientes
• Cada pagina, menos la raiz y las hojas, tienen al menso
[(2M-1)/3] descendientes
• La raiz tiene como minimo dos hijos o ninguno.
• Todas las paginas que no son hoja, si tiene K descendientes
contiene K-1 Claves.
• Una pagina hoja contiene por lo menos [(2M-1)/3]-1 claves
y no mas de M-1.
o Operaciones:
• Busqueda y borrado similar a Arbol B
• Insercion. (Division e incorpora Redistribucion)
Tres casos posibles:
• Derecha: redistribuir con nodo adyacente
hermano de la derecha ( o izquierda si es el ultimo)
• Izquierda o derecha: Si el nodo de la derecha
esta lleno o no se puede redistribuir, se busca el de la
izquierda.
• Izquierda y derecha: Busca llenar los tres
nodos, estos tendran un 2/3 parte llena.
• Manejo de paginas en buffers
o El objetivo es minimizar el numero de accesos a disco
o Transferir la raiz a RAM ahorra un acceso asegurado.
o Almacenar la raiz y las paginas solicitadas en un Buffer de paginas
en RAM
o Tecnicas de paginado: Estrategias de reemplazo LRU (Least
recently used)
• Arboles +
o Archivos secuenciales Indizados
• Permiten una mejor recorrida por algun tipo de orden.
• Indizado (ordenado por alguna clave)
• Secuencial (accede secuencialmente al archivo devolviendo
los registros en orden de la clave)
• Hasta ahora de los metodos disjuntos se opta por
recuperacion rapida (arbol) y recuperacion ordenada (secuencial)
pero se debe encontrar una solucion que agrupe ambos casos.
o Los arboles B+ son una mejora sobre los arboles B en los que se
conserva la propiedad de acceso aleatorio rapido pero permitiendo un
recorrido secuencial rapido.
o El arbol esta compuesto por dos partes:
• Indices (nodos interiores)
• Secuencia: paginas hojas enlazadas secuencialmente en las
que se repiten las claves anteriores.
o Todas las claves se encuentran en las hojas, duplicandose en la
raiz y nodos interiores, aquellas necesarias para definir los caminos de
las busquedas)
o Las hojas estan vinculadas entre si, obteniendose de ese modo
una trayectoria secuencial para recorrer las claves del arbol.
o Ocupan mas espacio que los arboles B, ya que algunas claves se
encuentran mas de una vez en el arbol.
o Las claves de la pagina raiz e interiores son usadas unicamente
como indice para las busquedas.
o Propiedades:
• Cada pagina tiene maximo M descendientes
• Cada pagina tiene, menos la raiz y las hojas, entre [M/2] y
M hijos.
• La raiz tiene al menos dos descendientes (o ninguno)
• Todas las hojas aparecen en nivel igual.
• Una paginaque no sea hoja, si tiene K descendientes,
contiene K-1 claves.
• Los nodos terminales representan un conjunto de datos y
son linkeados juntos.
• Los nodos NO terminales no contienen datos, sino punteros
a los datos (en las hojas)
o Operaciones:
• Busqueda: La busqueda no debe detenerse cuando se
encuentre la clave en la raiz o nodo interior, sino que debe seguir
en la pagina apuntada por la rama derecha de dicha clave.
• Insercion: El proceso de insercion es similar a de los arboles
B, excepto cuando se quiere insertar una clave en donde la
pagina se encuentra llena, en tal caso, esta se divide tambien en
otras dos, pero ahora la primera contendra m/2 claves y la
segunda 1+m/2 y lo que subira al padre sera una copia de la
clave central.
• Eliminacion: Este proceso es mas simple que en los arboles
B porque todas las claves se encuentran en las hojas. Si al
eliminar la clave, la cantidad de claves es mayor o igual a M/2, el
proceso concluye (las claves de la raiz o odos internos no se
modifican porque siguen siendo un separador valido entre las
claves de las paginas descendientes) pero si al eliminar la clave,
la cantidad de claves queda menor a M/2, es necesaria una fusion
y redistribucion de las mismas en la hoja y en los indices.
Hashing (Dispersion)
Hashing
• Definiciones
o Tecnica para generar una direccion base unica para una clave
dada. La dispersion se usa cuando se requiere acceso rapido a una
clave.
o Tecnica que convierte la clave del registro en un numero
aleatorio, el que sirve despues para determinar donde se almacena el
registro.
o Tecnica de almacenamiento y recuperacion que usa una funcion
de hash para mapear registros en direccion de almacenamiento
• Atributos:
o No requiere almacenamiento adicional (indice)
o Facilita la insercion y eliminacion rapida de registros
o Encuentra registros con muy pocos accesos al disco en promedio
(generalmente, menos de dos)
• Costo
o No se puede usar registros de longitud variable
o No hay orden fisico de datos
o No se permiten claves duplicadas
• Para determinar una direccion
o La clave se convierte en un numero casi aleatorio
o El numero se convierte en una direccion en memoria
o El registro se guarda en esa direccion
o Si la direccion esta ocupada, hay overflow y se trata de una forma
especial
• Parametros que afectan la eficiencia
o Tamaño del espacio de almacenamiento
o Densidad delempaquetamiento
o Funcion de Hash
o Metodo de tratamiento de desbordes
• Funcion de hash
o Caja negra que a partir de una clase se obtiene la direccion donde
debe estar el registro
o Diferencia con indices:
• Dispersion: no hay relacion aparente entre clave y direccion
• Dos claves distintas pueden transformarse en iguales
direcciones (colisiones), en ese caso son claves sinonimos.
o Colision:
• Situacion en la que un registro es asignado a una direccion
ya ocupada (no tiene suficiente espacio para ser almacenado)
• A las claves que por dispersion se convierten en la misma
direccion, se las llama sinonimos
• Se presentan como soluciones por ejemplo, algoritmos de
dispersion sin colisiones (perfectos) que son imposibles de
conseguir, o el almacenamiento de los registros de alguna forma
diferente, esparcir…
o Soluciones para coliciones:
• Esparcir registros: Buscar metodos que distribuyan los
registros de la forma mas aleatoria posible entre las direcciones
disponibles.
• Usar memoria adicional: Distribuir pocos registros en
muchas direcciones puede disminuir las chances de overflow,
pero desperdicia mucho espacio
• Colocar mas de un registro por direccion:
Direcciones con N claves.
Mejoras notables
Las direcciones que pueden almacenar varios
registros en esta forma son compartimentos.
o Algoritmos simples para dispersion:
• Condiciones:
Repartir registros en forma uniforme en el espacio de
direcciones disponible.
Aleatoria (las claves osn independientes, no influyen
una sobre la otra)
• Tres pasos:
Representar la llave en forma numerica (en caso que
no lo sea)
Aplicar funcion
Relacionar el numero resultante con el espacio
disponible
o Funciones de dispersion
• Centros cuadrados: La clave se multiplica por si misma y
tomando los digitos centrales al cuadrado, posteriormente se
ajusta al espacio disponible
• Division: La clave se divide por un numero
aproximadamente igual al numero de direcciones (numero primo,
pues tiende a distribuir los residuos en forma mas eficiente)
• Desplazamiento: los digitos externos de ambos extremos se
corren hacia adentro, se suman y se ajusta al espacio disponible.
• Plegado: Los digitos externos se pliegan, suman y adaptan
al espacio de direcciones.
• Analisis de digitos: Se analizan las claves para eliminar
posibles repeticiones en la misma
• Conversion de raiz: la base del numero se modifica y en la
serie de digitos resultante se suprimen los digitos de orden
mayor. Ej para direcciones 0-99, se ingresa la clave 453,
base11(453)=382, 382 mod 99 = 85
• Division polinominca: cada digito clave se toma como
coeficiente de polinomio, se divide por polinomio fijo, el
coeficiente del resto se toma como direccion.
o La mejor forma de escoger cual usar es tomar algunas claves y
aplicarla a los diferentes algoritmos y luego elegir el que se comporte
de mejor manera. Por lo general los que mejor se comportan son el de
division, o en caso de las claves mas largas el de plegado.
o Tamaño de los compartimientos de memoria:
• Pueden tener mas de un registro
• A mayor tamaño
Menor colision
Mayor fragmentacion
Busqueda mas lenta dentro del compartimiento.
• Es necesario decidir cuanto espacio se esta dispuesto a
desperdiciar para reducir el numero de colisiones. Es deseable
tener el menor numero de colisiones posible pero no a expensas,
por ejemplo de que un archivo use dos discos en lugar de uno…
o Densidad de empaquetamiento: Proporcion de espacio del archivo
asignado que en realidad almacena registros.
DE = numero de registros en archivo / Capacidad total
Es la medida de la cantidad de espacio que se usa en el archivo.
No importa el tamaño real del archivo ni su espacio de direcciones. Lo
importante son los tamaños relativos de los dos, que estan dados por
la densidad de empaquetamiento.
A menor densidad, tendremos menos overflow, pero mayor
desperdicio de espacio.
o Estimacion del overflow:
• Sean los siguientes datos:
N: numero de compartimentos; C: capacidad de los
compartimentos; K: Numero de registros en el arch.
DE = K / (C * N)
Probabilidad de que un compartimento reciba Y Registros esta
definida por una distribucion de probabilidades de Poisson de Y
o En conclusion, si la DE es del 50% y cada dureccion puede
almacenar solo un registro, puede esperarse que el 21% de los
registros sean almacenados en un lugar que no sea su direccion base.
o Una posible solucion es que cada compartimento guarde mas de
un registro.
• En estas condiciones, podemos definir que si h(k1)=h(k2),
k1 <> k2, (antes definicion de colision) ahora decimos que ambos
datos se albergan en un mismo compartimento.
• Redefinimos colision como el momento en que un
compartimento queda lleno.
• Aplicando poison, vemos que a mas capacidad de los
compartimentos (y por lo tanto menos direcciones en memoria),
la saturacion decrece. Entonces, como se determina el tamaño de
los compartimentos; en primer lugar depende del SO, del tamaño
del buffer y el tiempo de acceso. Puede suceder que si el tamaño
del compartimento, eltiempo de recuperacion sea mucho mas
lento (y ya dejaria de ser O(1))
o Metodos de tratamiento de colisiones.
• Saturacion progresiva: Cuando se completa una direccion
de memoria, se busca en las siguientes direcciones en secuencia
hasta encontrar una vacia.
La busqueda comenzaria en la direccion base y continua
buscando en localidades sucesivas hasta encontrarlo, puede
haber circularidad. Si se llegara a encontrar una direccion vacia
se puede suponer que la clave buscada no esta en el archivo o si
el archivo esta lleno, la busqueda vuelve a donde comenzo.
En caso de la eliminacion, no debe permitirse que el espacio
liberado por la eliminacion obstaculice las busquedas posteriores
y al mismo tiempo que debe ser posible utilizar el espacio
liberado para adiciones posteriores, el problema es que la
busqueda finaliza al encontrar una direccion vacia, por eso no es
conveniente dejar direcciones vacias, que terminen la busqueda
por saturacion en forma inapropiada. Es por esto que se necesita
liberar el espacio marcandolo solamente de alguna forma, de esta
forma, el espacio liberado no rompe la secuencia de busquedas,
el espacio disponible puede ser utilizado por adiciones posteriores
y en caso de que el siguiente registro siguiente este vacio, no
seria necesario marcarlo.
Este metodo tiende a agrupar en zonas contiguas… las busquedas
largas con DE que tienden a 1. La solucion seria almacenar los
registros de overflow en zonas no relacionadas. La gran ventaja
de este metodo es la gran simplicidad que tiene.
• Dispersion Doble: Cuando sucede una colision se aplica una
segunda funcion de dispersion a la clave para producir un
numero, el cual se suma a la direccion original tantas veces como
sea necesario hasta encontrar una direccion vacia (con espacio).
Entre sus caracteristicas, se evita el acumulamiento, los registros
no quedan "locales" sino que tienden a esparcirse en el archivo,
aumenta el T.A.P. a los registros, Se deberia conseguir
compartimentos de saturacion con direccion al mismo cilindro de
disco, ya que el cambio de cilindro requiere un costoso
movimiento de la cabeza lectora/grabadora.
• Saturacion progresiva encadenada: intenta evitar los
problemas por acumulacion de registros. Funciona igual que la
saturacion progresiva, excepto que las claves sinonimos se
enlazan por apuntadores (no ocupando necesariamente
posiciones contiguas), cada direccion base contiene un numero
que indica el lugar del siguiente registro con la misma direccion
base, el siguiente registro contiene a la vez un puntero al
siguiente registro con la misma direccion base y asi
sucesivamente. Si bien mejora la cantidad de accesos a los
registros, debe agregarse un campo de enlace a cada registro,
por lo cual requiere mas espacio de almacenamiento.
• Saturacion progresiva con encadenamiento en areas
separadas: Al conjunto de direcciones base se le llama area
principal de datos, al conjunto de direcciones en saturacion se la
llama area de saturacion. Cuando se agrega un registro nuevo si
hay lugar en direccion base se almacena ahi, sino se mueve al
archivo de saturacion (en un area separada) donde se agrega a la
lista enlazada que comienza en la direccion base. Se mejora el
tratamiento de inserciones y eliminaciones. Si el area de
saturacion separada esta en un cilindro diferente al de la
direccion base, toda busqueda de registro en saturacion
impllicara un movimiento de cabeza muy costoso. Conviene que
se utilice cuando la DE sea mayor a uno, es decir que haya mas
registros que las direcciones base.
• Hash asistido por tabla . Es una variante del
encadenamiento. Tiene una tabla en memoria con una entrada
por cada compartimento del archivo. Si bien las inserciones son
lentas, se gana velocidad en lasrecuperaciones, las claves se
convierten en dos elementos, una para la direccion de los
compartimentos y la otr es la secuenca de K-Bits. En la tabla, el
valor maximo de secuencia que obtuvo en el compartimento
(comienza en el infinito).
Es un buen metodo de recuperacion, un acceso, sirve cuando se
recupera mas que lo que se inserta. En el caso de las inserciones,
si hay compartimento con lugar, queda el elemento. En el caso
que el compartimento este lleno, se hace la lista de insercion..
o Para una tecnica buena, necesitamos un numero de direcciones
fijas virtualmente imposible.
o El archivo se llena por lo tanto saturacion excesiva, requiere
redispersar, una nueva funcion y muchos cambios.
o La solucion seria reorganizara las tablas sin mover muchos
registros. Existen tecnicas que asumen bloques fisicos ue pueden
utilizarse o liberarse.
o Cada tecnnica tieen soluciones que derivan en nuevos problemas.
• Partir el compartimento cuando se llena
• Reacomodar registros entre compartimento viejo y nuevo
• Minimizar accesos a compartimentos durante la
recuperacion
• Borrar registros del archivos
o Alternativas: Hash virtual, dinamico u extensible. Hash Extensible:
Adapta el resultado de la funcion de hash de acuerdo al numero de
registros que tenga el archivo y de los compartimentos necesarios
para su almacenamiento. La funcion genera una secuencia de bits
(normalmente 32) y evita mantener areas de desbordamiento y hacer
busquedas con dos lecturas.
• Como trabaja? Se utilizan solo los bits necesarios de
acuerdo a cada instancia del archivo. Los bits tomados forman la
direccion del compartimiento que se utilizara. Si se intentara
inserta a un compartimento lleno, deben reubicarse todos los
registros alli contenidos entre el compartimento viejo y el nuevo.
Para ello se toma un bit mas. La tabla tendra tantas entradas
como 2^I siendo I el numero de bits actuales para el sistema.
Modelado de Datos
• Sistema de informacion: Conjunto de actividades que regulan la
distribucion y compartimiento de la informacion y el almacenamiento de los
datos relevantes para su administracion
• Base de datos: Cualquier conjunto "Grande"de datos estructurados,
almacenados en una computadora
o Escenciales para la supervivencia de la organizacion
o Los datos estructurados constituyen un recurso esencial.
• DBMS: Paquete de software para la gestion de la BD, Especialmente para
almacenar, manipular y recupera datos en un computador.
• Abstraccion: proceso mental aplicado al seleccionar algunas
caracteristicas de un conjunto de objetos y excluir otras
• Diseño de la BD. Tres fases
o Diseño conceptual:
• Representacion abstracta
• Proposito: describir el contenido de informacion de la BD,
mas que las estructuras de almacenamiento.
• Esquema conceptual: descripcion de alto nivel de la
estructura de la BD, independiente del DBMS que la manipula.
• Modelo conceptual: Lenguaje usado para describir
esquemas conceptuales
• Especificacion de requerimientos + Diseño conceptual ->
esquema conceptual de la BD
• Mecanismos de abstraccion :
Clasificacion: Define un concepto como una clase de
objetos de la realidad con propidades comunes
(ES_MIEMBRO_DE)
• Arbol de un nivel que tiene como raiz la clase y
como hoja los elementos de la clase
• Cada elemento hoja es miembro de cada
elemento de la raiz
• Cada elemento puede ser miembro de varias
clases.
La clasificacion es el procedimiento que se utiliza cuando
partiendo de elementos individuales de informacion se
identifican tipos de campos o atributo.
Agregacion: Define una clase nueva a partir de otras que
representen sus partes componentes (ES_PARTE_DE)
• Arbol de un nivel en el cual todos los nodos son
clases (la raiz representa la clase creada por agregacion
de las clases representadas por las hojas)
Reune tipos de campos relacionados en grupos, como por
ejemplo tipos de registros.
Generalizacion: Define una relacion de subconjunto entre
los elementos de 2 o + clases (ES_UN)
• Se representa con un arbol de un nivel, en el que
todos los nodos son clases con clase generica como raiz
y las clases subconjuntos como hojas.
• Todas las abstracciones definidas para la clase
generica son heredadas por las clases subconjunt.
• Propiedades de cobertura:
Total, si cada elemento de la clase generica
corresponde al menos a un elemento delas clases
subconjunto
Parcial, si existe algun elementoo de laclase
generica que no corresponde a ningun elemento de
las clases subconjunto
Exclusiva, si cada elemento de la clase
generica corresponde a lo sumo a un elemento de
las clases subconjunto
Superpuesta, Si existe algun elemento de la
clase generica que corresponde a los elementos de
dos o mas clases subconjunto diferentes.
• Modelo de datos
Conceptos que pueden utilizarse para describir
un conjunto de datos y operaciones para
manipularlos
Dos modelos
• Conceptual: Instrumento para
representar la realidad a un nivel alto de
abstraccion
• Cualqidades que debe tener:
• Expresividad, rico enc onceptos
-> posibilita una representacion mas
extensa de la realidad
• Simplicidad, facil de entender
• Minimalidad, cada concepto tiene
significado distinto,, ningun
concepto puede expresarse
mediante otros conceptos,.
• Formalidad, cada concepto tiene
una sola interpretacion precisa y
bien definida.
o Diseño logico:
• Representacion en computadora
• Esquema conceptual + diseño logico -> Esquema logico de
la BD
• Esquema logico: descripcion de la estructura de la BD que
puede procesar un DBMS
• Modelo Logico: Lenguaje usado para especificar esquemas
logicos. Los mas usados: relacional, de redes, jerarquicos.
• Depende de la clase de modelo de datos usado por el
DBMS, pero no del DBMS usado (se efectua de igual forma para
todos los DBMS relacionales porque todos usan el modelo
relacional).
• Pasaje de esquema conceptual a esquema logico:
Desiciones a tomar:
• Sobre datos derivados: tiene como ventaa que
no se necesita calcular el valor. Reduce el numero de
accesos a la BD. Pero tiene la desventaja que el
procesamiento adicional para mantener los datos
derivados y se requiere mas espacios en el disco.
• Eliminacion de jerarquias de generalizacion:
• Los modelos logicos no permiten
representarlas.
• Se deben representar usando solo
entidades e interrelaciones
• Eliminacion de atributos de cardinalidad
mayor que 1.
• Se debe cuidar de indicarla herencia de
atributos y se debe captar la interrelacion implicita
"ES_UN". Existen tres casos a tener en cuenta:
• Caso 1: Integrar la jerarquia de
generalizacion a una sola entidad uniendo los
atributos de las subentidades y añadiendo
estos atributos a la de la superentidad. Es una
solucion simple, pero genera valores nulos en
los atributos, es aplicable a cualquier caso de
jerarquia de generalizacion.
• Caso 2: Eliminar la supernetidad
pero retener las subentidades. Tiene como
desventaja que se deben repetir los atributos
y operaciones de la superentidad, es decir que
se crearia redundancia no deseable. Es
aplicabl en el caso de cobertura total exclusiva
y es mala en cobertura superpuesta o parcial.
• Caso 3: Retener todas las
entidades y establecer explicitamente las
interrelaciones entre las superentidades y
subentidades: Es el caso mas general y
aplicable, proporciona redundancia inherente
a nivel conceptual, al representar la relacion
"ES_UN" de la jerarquia a traves de una
interrelacion explicita.
• Particion de entidades: para acceso simultaneo
con frecuencia (horizontal para entidades; vertical para
atributos)
• Particion de interrelaciones: En situaciones de
relaciones de uno a muchos y de muchos a muchos.
• Fusion de entidades e interrelaciones:
Normalizacion y cardinalidad.
El diseño logico en el modelo relacional.
• Restricciones:
• De clave: Especifican las claves
candidatas de cada tabla
• De integridad de entidades: ningun
valor de clave primaria puede ser nulo.
• De integridad referenciales: se
especifica entre dos relaciones.
• Correspondencia E-I <=> Modelo relacional.
• Eliminacion de identificadores externos,
no usados en el modelo relacional
• Eliminacion de atributos compuestos
• Considerar todos sus
componentes como atributos individuales
• Considerar el atributo compuesto
entero como un atributo.
• Eliminacion de atributos polivalentes
• Transformar cada entidad en una
relacion.
• Transformacion de interrelaciones:
• Uno a uno:
• Integracion de una relacion
binaria (se unifica la tabla):
• Misma clave
primaria en las dos entidades
• Clave distinta, se
toma una como clave.
• Relaciones individuales
(una con participacion parcial)
• Relaciones individuales:
ambas con participacion parcial
• Uno a muchos:
• Participacion parcial
• Con valores nulos
• Sin valores nulos
• Participacion total.
• Muchos a muchos
• N-Arias
• Recursivas.
• Dependencia funcional: Dado un atributo B de
una entidad o interrelacion, este es funcionalmente
dependiente de otro A (A -> B), si para cualquier valor
dado del atributo A existe un valor simple asociado en el
atributo B. Siempre existe entre los atributos no clave
respecto del clave.
Si se da el valor de un atributo se puede obtener o
buscar el valor de otro. Ej: Si se conoce el valor del DNI
se puede hallar el nombre de un cliente. En este caso el
nombre es funcionalmente dependiente del DNI. Las
claves son atributos que forman dependencias
funcionales hacia los no claves.
• Anomalias de actualizacion:
• Insercion
• Eliminacion
• Actualizacion
• Integridad referencial
• Que es clave? Un conjunto de atributos que
identifica inevocamente cada entidad del conjunto
de entidades
• Identificador
• Claves
Primarias
Candidatas
• Tipos de dependencias:
• Parcial: Un atributo B (no clave) depende
de un subconjunto de A (clave)
• Transitiva: Un atributo B (no clave)
depende de otro C (clave)
• Boyce Codd: Un atributo B (clave o parte
de clave) depende de un atributo no clave.
• Multivaluada: dada una relacion R con
atributos A,B,C, decimos que existe una
dependencia entre A y B multivaluada en R , si
y solo si el conjunto de valores de B que
concuerda con el par A,C en R depende solo
del valor de A pero no del C. Una dependencia
multivaluada existe cuando un atriburo puede
determinar mas de un valor para otro atributo.
• Normalizacion:
• Proceso formal para decidir que atributos deben agruparse
en un entidad/relacion.
• Progresiva deteccion y elimminacion de dependencias no
deseadas.
• Existen politicas partidarias de realizarla sobre el modelo
entidad relacion y otras que lo hacen sobre el modelo
relacional.
• Problemas de mala normalizacion (o normalizacion
inexistente)
Anomalias de actualizacion
Anomalias de insercion
Anomalias de borrado
• Formas normales:
Primera forma normal: Todos los atributos tienen
cardinalidad 0 o 1.
Segunda forma normal: Una tabla esta 2NF si esta en
1NF y ademas no existen dependencias parciales.
Tercera forma normal: Una tabla esta en 3NF si esta
en 2NF y ademas no existen dependencias transitivas.
Forma Normal Boyce Codd: Una tabla esta en BCNF si
esta en 3NF y no existen dependencias de Boyce Codd.
Otra definicio seria ue para todasl als dependencias de
la forma X->Y; X->Y es trivial (Y esta incluido o es igual
a X) o X es superclave de Y (Superclave, es decir,
conjunto de atributos que incluye la clave )
Cuarta forma normal: Una tabla esta en 4NF si esta
en BCFN y ademas no existen dependencias
multivaluadas.
Quinta forma normal o Forma de Dominio Clave: Una
tabla esta en 5FN si cada restriccion es una
consecuencia logica de la definicion de las claves y
dominios.
o Diseño fisico
• Es donde se determina estructuras de almacenamiento
fisico
• Describe las estructuras de almacenamiento y metodos
usados para tener acceso efectivo a los datos
• Esquema logico + Diseño fisico -> esquema fisico
• Esquema fisico: descripcion de la implantacion de una BD
en memoria secundaria.
• Se adapta a un DBMS Especifico
• Hay una retroalimentacion entre el diseño fisico y el logico
(desiciones tomadas durante el diseño fisico para mejorar el
rendimiento pueden afectar el esquema logico)
• Completo el diseño fisico, los esquemas logico y fisico se
expresan usando el lenguaje de definicion de datos del DBMS ->
Nace la BD operacional.
•
Modelado de Datos
• Sistema de informacion: Conjunto de actividades que regulan la
distribucion y compartimiento de la informacion y el almacenamiento de los
datos relevantes para su administracion
• Base de datos: Cualquier conjunto "Grande"de datos estructurados,
almacenados en una computadora
o Escenciales para la supervivencia de la organizacion
o Los datos estructurados constituyen un recurso esencial.
• DBMS: Paquete de software para la gestion de la BD, Especialmente para
almacenar, manipular y recupera datos en un computador.
• Abstraccion: proceso mental aplicado al seleccionar algunas
caracteristicas de un conjunto de objetos y excluir otras
• Diseño de la BD. Tres fases
o Diseño conceptual:
• Representacion abstracta
• Proposito: describir el contenido de informacion de la BD,
mas que las estructuras de almacenamiento.
• Esquema conceptual: descripcion de alto nivel de la
estructura de la BD, independiente del DBMS que la manipula.
• Modelo conceptual: Lenguaje usado para describir
esquemas conceptuales
• Especificacion de requerimientos + Diseño conceptual ->
esquema conceptual de la BD
• Mecanismos de abstraccion :
Clasificacion: Define un concepto como una clase de
objetos de la realidad con propidades comunes
(ES_MIEMBRO_DE)
• Arbol de un nivel que tiene como raiz la clase y
como hoja los elementos de la clase
• Cada elemento hoja es miembro de cada
elemento de la raiz
• Cada elemento puede ser miembro de varias
clases.
La clasificacion es el procedimiento que se utiliza cuando
partiendo de elementos individuales de informacion se
identifican tipos de campos o atributo.
Agregacion: Define una clase nueva a partir de otras que
representen sus partes componentes (ES_PARTE_DE)
• Arbol de un nivel en el cual todos los nodos son
clases (la raiz representa la clase creada por agregacion
de las clases representadas por las hojas)
Reune tipos de campos relacionados en grupos, como por
ejemplo tipos de registros.
Generalizacion: Define una relacion de subconjunto entre
los elementos de 2 o + clases (ES_UN)
• Se representa con un arbol de un nivel, en el que
todos los nodos son clases con clase generica como raiz
y las clases subconjuntos como hojas.
• Todas las abstracciones definidas para la clase
generica son heredadas por las clases subconjunt.
• Propiedades de cobertura:
Total, si cada elemento de la clase generica
corresponde al menos a un elemento delas clases
subconjunto
Parcial, si existe algun elementoo de laclase
generica que no corresponde a ningun elemento de
las clases subconjunto
Exclusiva, si cada elemento de la clase
generica corresponde a lo sumo a un elemento de
las clases subconjunto
Superpuesta, Si existe algun elemento de la
clase generica que corresponde a los elementos de
dos o mas clases subconjunto diferentes.
• Modelo de datos
Conceptos que pueden utilizarse para describir
un conjunto de datos y operaciones para
manipularlos
Dos modelos
• Conceptual: Instrumento para
representar la realidad a un nivel alto de
abstraccion
• Cualqidades que debe tener:
• Expresividad, rico enc onceptos
-> posibilita una representacion mas
extensa de la realidad
• Simplicidad, facil de entender
• Minimalidad, cada concepto tiene
significado distinto,, ningun
concepto puede expresarse
mediante otros conceptos,.
• Formalidad, cada concepto tiene
una sola interpretacion precisa y
bien definida.
o Diseño logico:
• Representacion en computadora
• Esquema conceptual + diseño logico -> Esquema logico de
la BD
• Esquema logico: descripcion de la estructura de la BD que
puede procesar un DBMS
• Modelo Logico: Lenguaje usado para especificar esquemas
logicos. Los mas usados: relacional, de redes, jerarquicos.
• Depende de la clase de modelo de datos usado por el
DBMS, pero no del DBMS usado (se efectua de igual forma para
todos los DBMS relacionales porque todos usan el modelo
relacional).
• Pasaje de esquema conceptual a esquema logico:
Desiciones a tomar:
• Sobre datos derivados: tiene como ventaa que
no se necesita calcular el valor. Reduce el numero de
accesos a la BD. Pero tiene la desventaja que el
procesamiento adicional para mantener los datos
derivados y se requiere mas espacios en el disco.
• Eliminacion de jerarquias de generalizacion:
• Los modelos logicos no permiten
representarlas.
• Se deben representar usando solo
entidades e interrelaciones
• Eliminacion de atributos de cardinalidad
mayor que 1.
• Se debe cuidar de indicarla herencia de
atributos y se debe captar la interrelacion implicita
"ES_UN". Existen tres casos a tener en cuenta:
• Caso 1: Integrar la jerarquia de
generalizacion a una sola entidad uniendo los
atributos de las subentidades y añadiendo
estos atributos a la de la superentidad. Es una
solucion simple, pero genera valores nulos en
los atributos, es aplicable a cualquier caso de
jerarquia de generalizacion.
• Caso 2: Eliminar la supernetidad
pero retener las subentidades. Tiene como
desventaja que se deben repetir los atributos
y operaciones de la superentidad, es decir que
se crearia redundancia no deseable. Es
aplicabl en el caso de cobertura total exclusiva
y es mala en cobertura superpuesta o parcial.
• Caso 3: Retener todas las
entidades y establecer explicitamente las
interrelaciones entre las superentidades y
subentidades: Es el caso mas general y
aplicable, proporciona redundancia inherente
a nivel conceptual, al representar la relacion
"ES_UN" de la jerarquia a traves de una
interrelacion explicita.
• Particion de entidades: para acceso simultaneo
con frecuencia (horizontal para entidades; vertical para
atributos)
• Particion de interrelaciones: En situaciones de
relaciones de uno a muchos y de muchos a muchos.
• Fusion de entidades e interrelaciones:
Normalizacion y cardinalidad.
El diseño logico en el modelo relacional.
• Restricciones:
• De clave: Especifican las claves
candidatas de cada tabla
• De integridad de entidades: ningun
valor de clave primaria puede ser nulo.
• De integridad referenciales: se
especifica entre dos relaciones.
• Correspondencia E-I <=> Modelo relacional.
• Eliminacion de identificadores externos,
no usados en el modelo relacional
• Eliminacion de atributos compuestos
• Considerar todos sus
componentes como atributos individuales
• Considerar el atributo compuesto
entero como un atributo.
• Eliminacion de atributos polivalentes
• Transformar cada entidad en una
relacion.
• Transformacion de interrelaciones:
• Uno a uno:
• Integracion de una relacion
binaria (se unifica la tabla):
• Misma clave
primaria en las dos entidades
• Clave distinta, se
toma una como clave.
• Relaciones individuales
(una con participacion parcial)
• Relaciones individuales:
ambas con participacion parcial
• Uno a muchos:
• Participacion parcial
• Con valores nulos
• Sin valores nulos
• Participacion total.
• Muchos a muchos
• N-Arias
• Recursivas.
• Dependencia funcional: Dado un atributo B de
una entidad o interrelacion, este es funcionalmente
dependiente de otro A (A -> B), si para cualquier valor
dado del atributo A existe un valor simple asociado en el
atributo B. Siempre existe entre los atributos no clave
respecto del clave.
Si se da el valor de un atributo se puede obtener o
buscar el valor de otro. Ej: Si se conoce el valor del DNI
se puede hallar el nombre de un cliente. En este caso el
nombre es funcionalmente dependiente del DNI. Las
claves son atributos que forman dependencias
funcionales hacia los no claves.
• Anomalias de actualizacion:
• Insercion
• Eliminacion
• Actualizacion
• Integridad referencial
• Que es clave? Un conjunto de atributos que
identifica inevocamente cada entidad del conjunto
de entidades
• Identificador
• Claves
Primarias
Candidatas
• Tipos de dependencias:
• Parcial: Un atributo B (no clave) depende
de un subconjunto de A (clave)
• Transitiva: Un atributo B (no clave)
depende de otro C (clave)
• Boyce Codd: Un atributo B (clave o parte
de clave) depende de un atributo no clave.
• Multivaluada: dada una relacion R con
atributos A,B,C, decimos que existe una
dependencia entre A y B multivaluada en R , si
y solo si el conjunto de valores de B que
concuerda con el par A,C en R depende solo
del valor de A pero no del C. Una dependencia
multivaluada existe cuando un atriburo puede
determinar mas de un valor para otro atributo.
• Normalizacion:
• Proceso formal para decidir que atributos deben agruparse
en un entidad/relacion.
• Progresiva deteccion y elimminacion de dependencias no
deseadas.
• Existen politicas partidarias de realizarla sobre el modelo
entidad relacion y otras que lo hacen sobre el modelo
relacional.
• Problemas de mala normalizacion (o normalizacion
inexistente)
Anomalias de actualizacion
Anomalias de insercion
Anomalias de borrado
• Formas normales:
Primera forma normal: Todos los atributos tienen
cardinalidad 0 o 1.
Segunda forma normal: Una tabla esta 2NF si esta en
1NF y ademas no existen dependencias parciales.
Tercera forma normal: Una tabla esta en 3NF si esta
en 2NF y ademas no existen dependencias transitivas.
Forma Normal Boyce Codd: Una tabla esta en BCNF si
esta en 3NF y no existen dependencias de Boyce Codd.
Otra definicio seria ue para todasl als dependencias de
la forma X->Y; X->Y es trivial (Y esta incluido o es igual
a X) o X es superclave de Y (Superclave, es decir,
conjunto de atributos que incluye la clave )
Cuarta forma normal: Una tabla esta en 4NF si esta
en BCFN y ademas no existen dependencias
multivaluadas.
Quinta forma normal o Forma de Dominio Clave: Una
tabla esta en 5FN si cada restriccion es una
consecuencia logica de la definicion de las claves y
dominios.
o Diseño fisico
• Es donde se determina estructuras de almacenamiento
fisico
• Describe las estructuras de almacenamiento y metodos
usados para tener acceso efectivo a los datos
• Esquema logico + Diseño fisico -> esquema fisico
• Esquema fisico: descripcion de la implantacion de una BD
en memoria secundaria.
• Se adapta a un DBMS Especifico
• Hay una retroalimentacion entre el diseño fisico y el logico
(desiciones tomadas durante el diseño fisico para mejorar el
rendimiento pueden afectar el esquema logico)
• Completo el diseño fisico, los esquemas logico y fisico se
expresan usando el lenguaje de definicion de datos del DBMS ->
Nace la BD operacional.
•
Optimizacion de consultas
Componentes del "Costo" de ejecucion de una consulta:
o Costo de acceso a almacenamiento secundario -> Buscar, leer y escribir
bloques de datos que residen en disco.
o Costo de almacenamiento - > Costo de almacenar archivos intermedio
que genera una estrategia de ejecucion
o Costo de computo -> Costo de realizar operaciones.
o Costo de comunicacion -> Costo de enviar la consulta y los resultados (si
es un sistema distribuido)
Interpretacion de consultas
Dada una consulta hay varios metodos para llegar a la respuesta.
• Optimizacion lógica: Expresiones equivalentes:
• Algebra relacional: Procedural, existe una secuencia de resolucion
-> se puede encontrar una expresion mas eficiente de otra.
• Operaciones:
Seleccion: hacerla lo antes posible:
Cambiar ðp1^p2(e) por ðp1(ðp2(e)), es decir, descomponer
la condicion.
Lo mismo para la proyeccion y para el producto natural.
• Estimacion del costo de las consultas:
La eleccion de la estrategia impacta contra las estadisticas.
• Numero de tuplas en la relacion (NR)
• Tamaño en bytes de la tupla (SR)
• Numero de valores distintos en la relacion r para un
atributo V(a,r)
Costo de las consultas:
• Producto cartesiano: rxt
• # tuplas nr * nt
• # bytes en cada tupla = sr + st
• Seleccion ðp(r)
• # tuplas = nr / V(A,r) se supone distribucion
• # bytes x tuplas = sr.
• Optimizacion fisica:
• Generar "Buenos" Indices
• Costo de acceso por indices
Indice -> Mas rapido, existe ordenamiento.
Costo adicional -> acceso al indice
Calculo de tiempo: Depende de la organizacion y
caracteristicas.
• Generar "Buenos"clusters (criterios para agrupar informacion ->
se puede "clusterizar" por tablas, atributos o relacionadas.
• Procesadores paralelos
• Redes: Separar el trabajo en distintas computadoras.
Transacciones
• Transaccion: Secuencia d eoperaciones que forman una unica unidad
logica de trabajo.
• Una transaccion se hace o no se hace, no se puede quedar a medias.
o Si termina, sus efectos quedan en la BD
o Si se anula, sus efectos no quedan en la BD
• Propiedades ACID
o Atomicidad: Una transaccion debe ser una unidad atomica de
trabajo o todas las operaciones de la transaccion se ejecutan o no lo
hacen ninguna de ellas.
o Consistencia: La ejecucion aislada de la transaccion conserva la
consistencia de la BD. Lleva la BD de un estado consistente a otro
consistente.
o Aislamiento (Isolation): Cada transaccion ignora el resto de las
transacciones que se ejecutan concurrentemente en el sistema actua
cada una como unica.
o Durabilidad: Una transaccion terminada con exito realiza cambios
permanentes en la BD. Incluso si hay fallos en el sistema.
• Estados de una transaccion:
o Activa: Estado inicial, estado normal durante la ejecucion.
o Parcialmente cometida: despues de ejecutarse la ultima
instruccion
o Fallada: Luego de descubrir que no puede seguir la ejecucion
normal.
o Abortada: Despues de haber retrocedido la transaccion y
reestablecido la BD al estado anterior al comienzo de la transaccion
o Cometida: Tras completarse con exito , se ha cometido
parcialmente y se garantiza que nunca abortara.
Activa
Fallada
Abortada
Activa
Fallada
Abortada
Conclusiones:
• La necesidad de sistemas de informacion que permitan
generar consultas, reportes y analisis para la toma de decisiones
es cada dia mas apremiante para las empresas que quieren
competir exitosamente en el mercado
• La Implantacion de un DW surge como la solucion a las
necesidades antes mencionadas
• No siempre en las organizaciones existe una conciencia real
de la potencialidad que tiene encubierta en los datos
transaccionales generados cotidianamente.
• Se debe tener en cuenta que un DW no es un producto que
se compra, debe ser planificado cuidadosamente de acuerdo a
cada organizacion y construido a tal efecto.
• Las organizaciones de tecnologia informatica pueden o no
tener todas las cualidades tecnicas necesarias, pero no
implementaran un proyecto de DW exitoso sin que logren que la
unidad de negocios se involucre.
• Cuando se diseña un DW hay que tener en laro que se esta
convirtiendo la informacion generada en forma cotidiana en
conocimiento para la organizacion.
• Pensar en un DW como una simple liberacion de los datos
corporativos seria un error, el valor real de un DW recien se
descubre cuando lo utiliza alguien que puede encontrar detalles
importantes en los datos y marcar las diferencias.