jueves, 13 de septiembre de 2012

EJERCICIOS DE FUNDAMENTOS DE BASE DE DATOS CAP. 2 UNIDAD II




2.1 Explíquense las diferencias entre los términos clave primaria, clave candidata y superclave

Respuesta:

Una superclave es un conjunto de uno o más atributos que, tomados colectivamente, permiten identificar de forma única una entidad en el conjunto de entidades. Una superclave puede contener atributos ajenos. Si K es una superclave, entonces también lo es cualquier superconjunto de K. Una superclave para la que ningún subconjunto propio es también superclave, se denomina clave candidata. Es posible que varios conjuntos diferentes de atributos puedan servir como claves candidatas. La clave primaria es una de las claves candidatas que se elige, por el diseñador de la base de datos, como el elemento principal para identificar las entidades dentro un conjunto de entidades.

2.2 Constrúyase un diagrama E-R para una compañía de seguros de coches cuyos clientes poseen uno o más coches. Cada coche tiene asociado un número de cero a cualquier valor que almacena el número de accidentes.

Respuesta:

Diagrama E-R para una compañía de seguros de coches.


2.3. Constrúyase un diagrama E-R para un hospital con un conjunto de pacientes y un conjunto de médicos. Asóciese con cada paciente un registro de las diferentes pruebas y exámenes realizados.

Respuesta:
  

Diagrama E-R para un hospital.


2.9 Explíquense las diferencias entre conjunto de entidades débiles y fuertes.

Respuesta:

Un conjunto de entidades fuertes tiene una clave primaria. Todas las tuplas del conjunto se distinguen por medio de esa clave. Un conjunto de entidades débiles no tiene clave primaria, a menos que se incluyan los atributos del conjunto de entidades fuertes del que depende. En un conjunto de entidades débiles las tuplas están divididas según su relación con las de la entidad fuerte. Las tuplas de cada división se






2.11. Defínase el concepto de agregación. Propónganse ejemplos para los que este concepto es útil.

Respuesta:






a.  Ejemplo 1 de diagrama E-R de agregación.

b. Ejemplo 2 de diagrama E-R de agregación.


La agregación es una abstracción a través de la cual las relaciones se tratan como entidades de nivel más alto. Así, la relación entre las entidades A y B se trata como si fuera una entidad C. Algunos ejemplos de esto son:

 a.    Empleados que trabajan por proyectos. Un empleado trabajando para un proyecto en particular utiliza diversa maquinaria.
b.    Los fabricantes tienen asociaciones con distribuidores para la distribución de productos. Cada asociación tiene especificado el conjunto de productos que se van a distribuir.


 2.12. Considérese el diagrama de la Figura 2.29, que modela una librería en línea.

a. Lístense los conjuntos de entidades y sus claves primarias.
b. Supóngase que la librería añade casetes de música y discos compactos a su colección. El mismo elemento musical puede estar presente en formato de casete o de disco compacto con diferentes precios.
Extiéndase el diagrama E-R para modelar esta adición, ignorando el efecto sobre las cestas de la compra.
c. Extiéndase ahora el diagrama E-R usando generalización para modelar el caso en que una cesta de la compra pueda contener cualquier combinación de libros, casetes de música o discos compactos.

2.16. Un diagrama E-R se puede ver como un grafo. ¿Qué significan los siguientes términos de estructura en un esquema de desarrollo?

a. El grafo es inconexo.
b. El grafo es acíclico.

Respuesta:

a.    Si un par de conjuntos de entidades están conectados por una línea en un diagrama E-R, los conjuntos de entidades están relacionados, aunque sea indirectamente. Un grafo desconectado implica que hay parejas de conjuntos de entidades que no están relacionadas entre sí. Si se divide el grafo en los componentes conectados se tiene, en efecto, una base de datos independiente.
b.   Como se ha indicado en la respuesta del apartado anterior, una conexión en el grafo entre un par de conjuntos de entidades indica una relación (posiblemente indirecta) entre ellos. Si hay un ciclo en el grafo, entonces cada par de conjuntos de entidades del ciclo están relacionadas entre sí en, al menos, dos maneras distintas. Si el diagrama E-R es acíclico hay sólo una conexión entre cada par de conjuntos de entidades y, por lo tanto, sólo una relación.













EJERCICIOS DE FUNDAMENTOS DE BASE DE DATOS CAP. 3 UNIDAD II



3.1. 
Diséñese una base de datos relacional para la oficina de registro de una universidad. La oficina conserva datos sobre cada curso, incluyendo el profesor, el número de estudiantes matriculados y la hora y el lugar de las clases. Por cada pareja estudiante-curso se guarda una calificación.

Respuesta:


Los atributos subrayados indican la clave primaria.


Estudiante (id-estudiante, nombre, programa)

Curso (número-curso, título, programa-estudios, créditos)
Ofertas-cursos (número-cursonúmero-secciónañosemestre, hora, aula)
Profesor (id-profesor, nombre, departamento, título)
Matrículas (id-estudiante, número-cursonúmero-secciónsemestreaño, calificación)
Enseña (número-curso, número-secciónsemestreañoid-profesor)
Requerimientos (curso-principalrequisitos-previos)



3.2. Descríbanse las diferencias de significado entre los términos relación esquema de la relación. Ilústrese la respuesta haciendo referencia a la solución propuesta para el Ejercicio 3.1.
Respuesta:


Un esquema de la relación es una definición de tipos y una relación es una instancia de ese esquema. Por ejemplo, estudiante (ss#, nombre) es un esquema de la relación y ss# nombre es una relación basada en ese esquema.


ss#
Nombre
123-45-6789
Tom Jones
456-78-9123
Joe Brown






3.3. Diséñese una base de datos relacional correspondiente al diagrama E-R de la Figura 3.38.

Respuesta:


El esquema de la base de datos relaciones se presenta a continuación.

Persona (id-conductor, nombre, dirección)
Coche (matrícula, año, modelo)
Accidente (número-informe, lugar, fecha)
Posee (id-conductormatrícula)
Participado (número-informe, id-conductor, matrícula, importe-daños)

3.4. En el Capítulo 2 se mostró la manera de representar los conjuntos de relaciones de varios a varios, de varios a uno, de uno a varios y de uno a uno. Explíquese la manera en que las claves primarias ayudan a representar estos conjuntos de relaciones en el modelo relacional.

Respuesta:


Supóngase que la clave primaria del esquema de la relación es {Ai1, Ai2,..., Ain} y que la clave primaria del esquema de la relación es {Bi1, Bi2,..., Bim}. Entonces una relación entre los dos conjuntos se puede representar como una tupla (Ai1, Ai2,..., Ain, Bi1, Bi2,..., Bim). En una relación de uno a uno, cada valor en {Ai1, Ai2,..., Ain} aparecerá en una tupla e igualmente para {Bi1, Bi2,..., Bim}. En una relación de varios a uno (por ejemplo de varios a un B), cada valor en {Ai1, Ai2,..., Ain} aparecerá una vez y cada valor en {Bi1, Bi2,..., Bin} puede aparecer varias veces. En una relación de varios a varios, los valores en ambos {Ai1, Ai2,..., Ain} {Bi1, Bi2,..., Bim} aparecerán varias veces. Sin embargo, en todos los casos anteriores {Ai1, Ai, ...,Ain ,Bi1, Bi, ...,Bim} es una clave primaria, por lo que ninguna tupla en (Aj, ...,Ajn Bk, ...,Bkm) aparecerá más de una vez.


3.5. Considérese la base de datos relacional de la Figura 3.39. Dese una expresión del álgebra relacional, otra del cálculo relacional de tuplas y una tercera del cálculo relacional de dominios para cada una de las consultas siguientes:

a.  Averiguar los nombres de todos los empleados que trabajan para el Banco Importante.
b.    Averiguar el nombre y la ciudad de residencia de todos los empleados que trabajan para el Banco Importante.
c.    Averiguar el nombre, la calle y la ciudad de residencia de todos los empleados que trabajan para el Banco Importante y ganan más de 2.000.000 de pesetas anuales.
d. Averiguar el nombre de todos los empleados de esta base de datos que viven en la misma ciudad que la compañía para la que trabajan.
e.    Averiguar el nombre de todos los empleados que viven en la misma ciudad y en la misma calle que sus jefes.
f.     Averiguar el nombre de todos los empleados de esta base de datos que no trabajan para el Banco Importante.
g.     Averiguar el nombre de todos los empleados que ganan más que cualquier empleado del Banco Pequeño.
h.    Supóngase que las compañías pueden estar instaladas en ciudades pequeñas. Hállense todas las compañías instaladas en cada ciudad en la que está instalado el Banco Pequeño.

Respuesta:


a.  Õnombre-persona (snombre-compañía = “Banco Importante” (trabaja))

b.  Õnombre-persona (empleado |x|
(snombre-compañía = “Banco Importante” (trabaja)))

c.  Õnombre-persona, calle, ciudad
 (s (nombre-compañía = “Banco Importante” ^ sueldo > 2.000.000)  
trabaja |x| empleado)

d.  Õnombre-persona (empleado |x| trabaja |x| compañía)

e.  Õnombre-persona ((empleado |x| jefe1
|x| (nombre-jefe = empleado2.nombre-persona ^empleado.calle = empleado2.calle
^empleado.ciudad = empleado2.ciudad) (Ƥempleado2 (empleado)))

f.  Las soluciones siguientes asumen que todas las personas trabajan para una compañía. Si se permite que aparezcan personas en la base de datos (por ejemplo en empleado) pero que no aparezcan en trabaja, el problema se complica. Más adelante se dan soluciones para este caso más realista.

Õnombre-persona (snombre-compañía ≠ “Banco Importante” (trabaja))

Si las personas no pueden trabajar para cualquier compañía:
Õnombre-persona (empleado) __ Õnombre-persona
 (s (nombre-compañía “Banco Importante”) (trabaja))

g.  Õnombre-persona (trabaja) __ Õtrabaja.nombre-persona (trabaja
|x| (trabaja.sueldo ≤ trabaja2.sueldo ^trabaja2.cpnmbre-compañía =“Banco Pequeño”)
Ƥtrabaja2 (trabaja)))

h.  Nota: El Banco Pequeño se incluirá en cada respuesta.
Õnombre-compañía (compañía ÷
(ÕCiudad (snombre-compañía = “Banco Pequeño” (compañía))))



3.7. Las operaciones de reunión externa amplían la operación reunión natural de manera que las tuplas de las relaciones participantes no se pierdan en el resultado de la reunión. Descríbase la manera en que la operación reunión zeta puede ampliarse para que las tuplas de la relación de la izquierda, las de la relación de la derecha o las de ambas relaciones no se pierdan en el resultado de una reunión zeta.

Respuesta:


a. La reunión zeta externa por la izquierda de r(R) y s(S) (]x|_ s) se puede definir como
(|x|_ s) _ ((r - ÕR(|x|_ s)) × (nulo, nulo,. . ., nulo))
La tupla de nulos es de tamaño igual al número de atributos en S.

b. La reunión zeta externa por la derecha de r(R) y s(S) (|x[_ s) se puede definir como
(|x|_ s) _ ((nulo, nulo . . . nulo× (s - Õs(|x|_ s)))
La tupla de nulos es de tamaño igual al número de atributos en R.

c. La reunión zeta externa completa de r(R) y s(S) (]x[_ s) se puede definir como
(|x|_ s) _ ((nulo, nulo,. . ., nulo× (s - Õs(|x|_ s))) _ ((r - ÕR(|x|_ s)) × (nulo, nulo,. . ., nulo))
La primera tupla de nulos es de tamaño igual al número de atributos en y la segunda es de tamaño igual al número de atributos en S.


3.8. Considérese la base de datos regional de la Figura 3.39. Dese una expresión del álgebra relacional para cada petición:

a.    Modificar la base de datos de manera que Santos viva ahora en Tres Cantos.
b.    Dar a todos los empleados del Banco Importante un aumento de sueldo del 10 por ciento.
c.     Dar a todos los jefes de la base de datos un aumento de sueldo del 10 por ciento.
d.    Dar a todos los jefes de la base de datos un aumento de sueldo del 10 por ciento, a menos que el sueldo resultante sea mayor que 100.000 _. En este caso, dar sólo un aumento del 3 por ciento.
e.    Borrar todas las tuplas de los empleados de Banco Pequeño de la relación trabajo.


Respuesta:


a. empleado Õnombre-persona,calle,“Tres Cantos”
(snombre-persona =“Santos”(empleado))
(empleado - snombre-persona =“Santos”(empleado))

b. trabaja Õnombre-persona,nombre-compañía, 1.1 * salario (
(s (nombre-compañía “Banco Importante”) (trabaja))
(trabaja s nombre-compañía “Banco Importante” (trabaja))




c. La sintaxis de actualización permite referenciar sólo a una relación sencilla. Dado que esta actualización requiere acceder a las dos relaciones a actualizar (trabaja) y jefe, se deben seguir varios pasos.
En primer lugar, identificar las tuplas de trabaja que se han se actualizar y almacenarlas en una relación temporal (t1) Después, crear una relación temporal (t2) que contenga las nuevas tuplas. Finalmente borrar las tuplas en t1, desde trabaja, e insertar las tuplas t2.

tÕtrabaja.nombre-persona, nombre-compañía, salario
(s trabaja.nombre-persona = nombre-jefe (trabaja × jefe))
t2 Õnombre-persona,nombre-compañía, 1.1 * salario (t1)
trabaja(trabaja - t1) _ t2

d. La misma situación surge aquí. Como antes, t1, contiene las tuplas que se han de actualizar y t2 contiene estas tuplas en su forma actualizada.

tÕtrabaja.nombre-persona, nombre-compañía, salario
(s trabaja.nombre-persona = nombre-jefe (trabaja × jefe))
t2  Õtrabaja.nombre-persona, nombre-compañía, salario*1.03
(s t1.salario * 1.1 > 100.000(t1))
tt2 _          Õtrabaja.nombre-persona, nombre-compañía, salario*1.1
s t1.salario * 1.1 _ 100.000(t1))
trabaja(trabaja - t1) __ t2

e. trabajatrabaja - s nombre-compañía “Banco Pequeño” (trabaja)


3.10. Considérese la base de datos relacional de la Figura 3.38. Dese una expresión del álgebra relacional para cada una de las consultas siguientes:

a.    Averiguar la compañía con mayor número de empleados.
b.    Averiguar la compañía con la nómina (suma de sueldos de sus empleados) más reducida.
c.     Averiguar las compañías cuyos empleados ganen un sueldo más elevado, en media, que el sueldo medio del Banco Importante.

Respuesta:

a. tnombre-compañía G count-distinct nombre-persona (trabaja)
tmax número-empleados(Ƥfuerza-compañía (nombre-compañía,número empleados)(t1))
Õnombre-compañía(Ƥft(nombre-compañía,número-empleados)(t1) |x| Ƥft(número-empleados)(t2))

b. t1nombre-compañía G sum sueldo (trabaja)
tmin nómina (Ƥnómina-compañía (nombre-compañía,nómina)(t1))
Õnombre-compañía(Ƥt(nombre-compañía,nómina)(t1) |x| Ƥt(nómina)(t2))

c. tnombre-compañía G avg sueldo (trabaja)
tsnombre-compañía “Banco Importante” (t1)
Õt3.nombre-compañía((Ƥt3(nombre-compañía,salario-medio)(t1))
| x| t3.salario-medio > banco-importante.salario-medio (Ƥbanco-importante(nombre-compañía,salario-medio)(t2)))


lunes, 10 de septiembre de 2012

Cuestionario de fundamentos de base de datos, cap 1


CUESTIONARIO


1.1.        ¿Cuáles son las cuatro diferencias principales entre un sistema de procesamiento de archivos y un SGBD?
           R= (SGBD) consiste en una colección de datos interrelacionados y una colección de programas para acceder a esos datos.
                      Los sistemas de bases de datos se diseñan para almacenar grandes cantidades de información.

1.2.        En este capítulo se han descrito las diferentes ventajas principales de un sistema gestor de bases de datos. ¿Cuáles son los dos inconvenientes?

          R= las caídas del sistema o los intentos de acceso sin autorización

1.3.        Explíquese la diferencia entre independencia de datos física y lógica.

            R=EN EL NIVEL FISICO: Describe cómo se almacenan realmente los datos el esquema físico describe el diseño físico en el nivel físico. Y EN EL NIVEL LOGICO: Describe qué datos se almacenan en la base de datos y qué relaciones existen entre esos datos.

1.4.        Lístense las cinco responsabilidades del sistema gestor de la base de datos. Para cada responsabilidad explíquense los problemas que ocurrirían si no se realizara esa función.

R=Redundancia e inconsistencia de datos, Dificultad en el acceso a los datos, Anomalías en el acceso concurrente, Aislamiento de datos, Problemas de integridad, Problemas de atomicidad.

1.5.        ¿Cuáles son las cinco funciones principales del administrador de la base de datos?

          R= Definición del esquema, Definición de la estructura y del método de acceso, Modificación del esquema y de la organización física, Concesión de autorización para el acceso a los Datos, Mantenimiento rutinario.

1.6.        Lístense siete lenguajes de programación que sean procedimentales y dos que sean no procedimentales. ¿Qué grupo es más fácil de aprender a usar? Explíquese la respuesta.

           R= Lenguaje de definición de datos, Lenguaje de manipulación de datos, el lenguaje
SQL, Cobol, C, C++ o Java

1.7.        Lístense los seis pasos principales que se deberían dar en la realización de una base de datos para una empresa particular.

R=

1.8. Considérese un array de enteros bidimensional de tamaño n × m que se va a usar en su lenguaje de programación preferido. Usando el array como ejemplo, ilústrese la diferencia (a) entre los tres niveles de abstracción y (b) entre esquema y ejemplares.