martes, 18 de abril de 2017

OPERACIONES EN ABB


 OPERACIONES EN ABB

Las operaciones que se pueden realizar en ABB es parecido al que realizamos sobre otras estructuras de datos, agregando alguna otra propiedad de los árboles.  Estas operaciones son:  • Buscar  un elemento • Insertar   un elemento • Eliminar un elemento 
 
Búsqueda de un elemento • Partiendo siempre del nodo raíz, se evalúa cada nodo descartando los subárboles que no contienen el valor o elemento buscado. • Si el árbol está vacío, el elemento no está en el árbol, entonces termina la búsqueda.  • Si el valor del nodo (dato(p)) es menor que el elemento buscado, continúa la búsqueda en árbol (subárbol) derecho.  • Si el valor del nodo (dato(p)) es mayor que el elemento buscado, continúa la búsqueda en el árbol (subárbol) izquierdo.  • Si el valor del nodo es igual al elemento buscado, termina la búsqueda con éxito.  *Observación: En los nodos hojas, la izquierda y la derecha, apuntan a NULO 
 




EJERCICIOS RESUELTOS DE BASE DE DATOS II consultas union

Ej 2.
-
Una oficina gubernamental desea construir un complejo habitacional, para lo cual elaboro la
siguiente Base de Datos:

TRAMO (c_ciudadA, c_ciudadB, Distancia)
CIUDADES (c_ciudad, nombre, cant_escuelas, cant_fabricas)

Para decidir donde instalarlo, desea conocer los siguientes datos:

a) Las ciudades alcanzables desde la ciudad con mayor cantidad de fabricas, recorriendo no más
de dos tramos, c/u de los cuales no puede tener mas de 10km de longitud.
SELECT CB.Nombre
FROM CIUDADES CA, TRAMO T, CIUDADES CB
WHERE CA.Cant_Fabricas = (SELECT MAX(Cant_Fabricas)
FROM CIUDADES
)
AND T.Distancia <= 10
AND T.C_CiudadA = CA.C_Ciudad
AND CB.C_Ciudad = T.C_CiudadB
AND CB.C_Ciudad <> CA.C_Ciudad

UNION

SELECT CB.Nombre
FROM CIUDADES CA, TRAMO T1, TRAMO T2, CIUDADES CB
WHERE CA.Cant_Fabricas = (SELECT MAX(Cant_Fabricas)
FROM CIUDADES
)
AND T1.Distancia <= 10
AND T2.Distancia <= 10
AND T1.C_CiudadA = CA.C_Ciudad
AND T1.C_CiudadB = T2.C_CiudadA
AND CB.C_Ciudad = T2.C_CiudadB
AND CB.C_Ciudad <> CA.C_Ciudad;

b) Las ciudades con mas de 10 fabricas que estén conectadas con todas las demás en forma
directa, siempre que ningún tramo supere los 50km.

SELECT DISTINCT C_Ciudad, C.Nombre
FROM CIUDADES AS C, TRAMO AS T
WHERE C.Cant_Fabricas > 10 AND
C.C_Ciudad = T.C_CiudadA AND
T.Distancia < 50
GROUP BY C.C_CIUDAD,
C.Nombre
HAVING COUNT(C.C_Ciudad) = (SELECT COUNT (C1.C_CIUDAD)-FROM CIUDADES C1);

c) Los pares de ciudades, de la forma (ciudad1, ciudad2), que son alcanzables a través de, a lo
sumo, otra ciudad, llámese a esta, ciudad3 (esto es, encontrar los caminos ciudad1-ciudad3-ciudad2).

SELECT CA.Nombre, CB.Nombre
FROM CIUDADES AS CA, TRAMO AS T1, TRAMO AS T2, CIUDADES AS CB
WHERE T1.C_CiudadA = CA.C_Ciudad
AND T1.C_CiudadB = T2.C_CiudadA
AND CB.C_Ciudad = T2.C_CiudadB
AND CB.C_Ciudad <> CA.C_Ciudad;



EJERCICIOS RESUELTOS DE BASE DE DATOS I consultas anidadas

EJERCICIOS RESUELTOS DE BASE DE DATOS  


Sea la siguiente BD:

PROVEEDORES (nro_p, nom_p, categoria, ciud_p)
ITEMS (nro_i, descripcion_i, ciud_i)
PEDIDOS (nro_p, nro_c, nro_i, cantidad, precio)
CLIENTES (nro_c, nom_c, ciud_c)


a) Listar los proveedores de Córdoba
SELECT Nro_P,
Nom_P
FROM PROVEEDORES
WHERE CIUD_P = 'CORDOBA';

b) Listar los proveedores que proveen el ítem 1
SELECT P.Nro_P, P.Nom_P
FROM ITEMS AS I, PEDIDOS AS PD, PROVEEDORES AS P
WHERE I.Descripcion_I = 'I1'
AND PD.Nro_I = I.Nro_I
AND P.Nro_P = PD.Nro_P;

c) Listar los clientes que solicitan ítems provistos por el proveedor 1
SELECT C.NRO_C, C.Nom_C
FROM CLIENTES AS C, PEDIDOS AS PD, PROVEEDORES AS P
WHERE P.Nom_P = 'P1'
AND PD.Nro_P = P.Nro_P
AND C.Nro_C = PD.Nro_C;

ENTRADAS POPULARES