Z = X
Mientras Z cambie:
recorrer todos los Ri haciendo: Z = [ Z ∪ ((Z ∩ Ri)+ ∩ Ri) ]
La X+(clausura de X) es el conjunto de atributos que dependen de X. Si todos los atributos de una relacion dependen de X, entonces X es superclave. Para que un grupo de dependencias sea equivalente a otro, sus clausuras deben ser equivalentes.
Xc=X
Mientras Xc cambie,
para cada df (A→B), si A ⊆ Xc ⇒ Xc = Xc ∪ B
El recubrimiento minimal es un grupo de dependencias equivalente al original, pero lo mas simplificado posible.
Propiedades:
1FN ← 2FN ← 3FN ← FNBC ← 4FN ← FNPJ (5FN) Nos orientan a conseguir descomposiciones que cumplan una serie de normas
X multidetermina a Y (X→→Y) cuando para cada valor de X existe un conjunto de valores de Y y ese conjunto es independiente de los restantes atributos (R-XY). Las dependencias funcionales son un caso particular de las dmv's. Condiciones:
NOTA: Encontrar dmv's a un esquema puede generar NUEVAS df's al esquema (ver axioma 5).
^
X→→Y =>
XW→→YV^
Y→→Z =>
X→→(Z-Y)=>
X→→Y^
∃ W/ WnY=0 ^
∃ ZcY ^
W→Z =>
X→Z^
X→→Z =>
X→→YZ^
YW→→Z =>
XW→→(Z-YW)^
XY→→Z =>
X→→(Z-Y)
Similar al concepto de clausura para un conjunto de atributos.
Si C es un conjunto CERRADO de atributos no vacios, cualquier conjunto de atributos multideterminado por C puede ser obtenido mediante operaciones de conjuntos sobre los subconjuntos de atributos que forman la Base de Dependencias de C
T=R-X
Mientras T cambie,
si ∃ V⊆T ^ Y→→Z ^ V∩Y=0 => V=[(V-Z),(V∩Z)]
Son dmv's que no existen en un esquema original R, pero que son satisfechas en una determinada descomposición del mismo.
Son un caso más general de dependencias. Las dmvs son un caso particular de estas.
Se definen como |x|[R1,….,Rk] como una descomposición de R tal que cualquier instancia r(R) es la junta sin pérdida de sus proyecciones Ri.
Una dmv x→>y sobre R se puede extresar como la dj |x|[XY, X(R-XY)] ya que por una propiedad de las dmvs r(R) satisface la dmv x→>y si y solo si r se puede descomponer sin pérdida de información en los esquemas XY y X(R-XY).
Existe un algoritmo derivado de la tableau de Chase para determinar si una dj (dependencia de junta) es implicada por un conjunto determinado de otras dj.
Se utilizan Buffers en memoria principal debido al costo en tiempos de acceder a memoria estable. Es transparente a los modulos que requieren bloques y utilizan politicas de reemplazo de información en sus buffers debido a que la memoria principal es acotada.
El Hashing dinámico es al estático lo que el Arbol B es al índice secuencial. FALTA índices multiples, IMPORTANTE. Revisar el resto del cap por que esto esta muy pobre
* Comunicaciones (no tenemos en cuenta BD distribuidas) * Accesos a memoria secundaria * Tiempo de procesador (generalmente desreciado frente al anterior)
Mediante equivalencias algebraicas, transformar las consultas para realizar lo antes posible:
Comentar algo…
Evitan la necesidad de guardar en memoria secundaria los resultados parciales.
Método: [(T1,L1→T2),L1→T3],L1→T4 y luego lo mismo con L2…LN[T=Tabla, L=Linea]
(propiedades que un SGBD garantiza a las transacciones que ejecuta)
Cuando la ejecución de un conjunto de transacciones (E) que intercala las operaciones de cada transacción en forma conveniente, es equivalente a alguna ejecución en serie de las transacciones de E, decimos que E es Serializable. Lo importante es que toda ejecución serializable preserva la consistencia de la BD, es decir, las transacciones devolveran resultados validos, mas alla de que el resultado de las transacciones sea distinto segun el orden de ejecución.
Para determinar si un conjunto de transacciones son serializables, generamos un grafo de precedencia, ubicando a las transacciones como nodos y enlazando arcos entre ellas cuando haya conflictos en los protocolos de cierre al intentar acceder a los datos (por ejemplo, cuando se quiera escribir un dato que otra transacción tambien quiere escribir o leer). Si logramos dibujar (de alguna manera) un grafo aciclico, podremos orientar todos los arcos de izquierda a derecha, obteniendo una ejecución serial equivalente.
(y los fenomenos que pueden aparecer)
Nivel de Aislamiento | Fenomenos que pueden aparecer | Tipo de acceso |
---|---|---|
Read Uncommited | F1, F2, F3 | Solo Lectura |
Read Commited | F2, F3 | Solo Lectura |
Repeateble Read | F3 | Solo Lectura |
Serializable | Ninguno | Lectura / Escritura |
Se utlizan copias de respaldo en unidades de cinta, pero demanda mucho tiempo. Mas reciente es la utilizacion de RAID replicando discos uno a uno o en conjuntos de mas de 3 utilizando paridad de datos. Si un disco dejara de funcionar, la BD puede seguir funcionando, mientras se le reemplaza el disco dañado por uno nuevo y se reconstruye la paridad en background