domingo, 22 de febrero de 2009
¿Como diseñar una base de datos relacional?
a) Identifique las entidades y los atributos correspondientes a cada una de las entidades,
indicando explícitamente cuáles serán las claves primarias de las distintas entidades.
b) Analice las relaciones existentes entre las distintas entidades y determine su cardinalidad.
c) Dibuje un diagrama entidad/relación que represente el modelo de datos definido por las
entidades y las relaciones identificadas en los apartados anteriores.
d) A partir del diagrama, obtenga el conjunto de tablas que nos permita implementar nuestro
modelo en un sistema gestor de bases de datos relacionales, indicando las claves primarias
de todas y cada una de las tablas de nuestra base de datos.
Ejersicio N° 1
considera que:
1. Los departamentos pueden estar en una sola facultad o ser interfacultativos,
agrupando en este caso catedras que pertenecen a facultades distintas.
2. Una catedra se encuentra en un unico departamento.
3. Una catedra pertenece a una sola facultad.
4. Un profesor esta siempre asignado a un unico departamento y adscrito a una o varias catedras, pudiendo cambiar de catedra, pero no de departamento. Interesa la fecha en que un profesor es adscrito a una catedra.
5. Existen areas de conocimiento, y todo departamento tendra una unica area de conocimiento.
Ejercicio N° 2
• Cada agencia tiene un titular propio y un conjunto de vendedores. Tanto el titular como los vendedores sólo pueden pertenecer a una agencia. Sobre las agencias interesa almacenar su dirección, teléfonos (que pueden ser varios), fax, etc. Además, cada agencia tiene asignada una zona de actuación que es única.
• Las agencias disponen de inmuebles tanto para alquilar como para vender (o ambas cosas), en el primer caso figurará el precio de alquiler y la fianza a depositar, mientras que en el segundo caso, además del precio de venta, se indica si el inmueble está o no hipotecado.
• Por otro lado, los inmuebles pueden ser locales comerciales, o pisos. En ambos casos se identifican por un código, interesando conocer el propietario, la dirección y la superficie en m2.
• Además, en el caso de pisos interesa conocer el número de habitaciones (incluyendo el salón), el número de cuartos de baño, el tipo de gas (natural, ciudad, butano), y si es interior o exterior. Para los locales comerciales se debe conocer si dispone de licencia de apertura.
• Un cliente puede acudir a varias agencias, en cada una se le asigna un vendedor, que es el encargado de seleccionar los inmuebles que cumplen las características deseadas, y en caso de estar interesado, el cliente debe dar una señal para reservar el inmueble (o los inmuebles) que desea.
Ejercicio N° 3
· La empresa organiza cursos internos de formación de los que se desea conocer elcódigo de curso, el nombre, una descripción, el número de horas de duración y elcoste del curso.
· Un curso puede tener como prerrequisito haber realizado otro(s) previamente, y, a suvez, la realización de un curso puede ser prerrequisito de otros. Un curso que esprerrequisito de otro puede serlo de forma obligatoria u opcional.
· Un mismo curso tiene diferentes ediciones, es decir, se imparte en distintos lugares,fechas y con diversos horarios (intensivo, mañana o tarde). En una misma fecha deinicio sólo puede impartirse una edición de un curso.
· Los cursos se imparten por personal de la propia empresa. Un curso puede tenervarios docentes pero una edición sólo tiene un profesor.
· De los empleados se desea almacenar su código de empleado, nombre y apellidos,dirección, teléfono, NIF, fecha de nacimiento, nacionalidad, sexo, firma y salario,así como si está o no capacitado para impartir cursos.
· Un mismo empleado puede ser docente en una edición de un curso y alumno en otraedición, pero nunca puede ser ambas cosas a la vez (en una misma edición de uncurso o lo imparte o lo recibe).
Ejercicio N° 4
• Se desea tener información acerca de cada corrida, identificada conjuntamente por un número de orden, la feria en la que se celebra y el año de celebración (por ejemplo: orden = 2, feria = San Isidro, año = 1990); las corridas que no se celebran durante una feria tienen 0 en el campo Feria y se numeran correlativamente dentro de ese año.
• En una determinada corrida actúan una serie de toreros (mínimo 1 y máximo 6) de los que se desea guardar su dni, nombre, apodo y fecha en que tomó la alternativa. Además se desea saber quién fue el torero (padrino) que le dio la alternativa en su día (un torero puede dar la alternativa a varios compañeros o a ninguno).
• En cada corrida un torero obtiene una serie de premios (número de orejas, de rabos y si salió por la puerta grande) de los que se desea mantener información.
• Cada torero puede tener un apoderado. A su vez, un apoderado lo puede ser de varios toreros. De él se desea saber su dni, nombre, dirección y teléfono.
• Una corrida se celebra en una plaza de toros de la que se desea saber su nombre (que se supone único), localidad, dirección y aforo. En una misma plaza se pueden celebrar varias corridas de toros.
• Cada toro pertenece a una ganadería determinada. De cada ganadería se quiere conocer su código, nombre, localidad, procedencia y antigüedad (fecha de creación).
• En cada corrida son estoqueados al menos 6 toros. Cada toro viene identificado por el código de la ganadería a la que pertenece, el año en que nació y un número de orden. Además se desea mantener información acerca de su nombre y color, así como del orden en que fue toreado.
viernes, 20 de febrero de 2009
Ejercicio Nª 5
Supongamos que se nos ha encargado el desarrollo de una aplicación que se encargue de
gestionar la flota de autobuses de una empresa de transporte urbano. El objetivo de la aplicación
es analizar el funcionamiento de las distintas líneas de autobús urbano para decidir cómo se
podrían modificar dichas líneas y prestar un mejor servicio al ciudadano. Para comparar
distintas alternativas, no sólo hemos de tener en cuenta los beneficios que las modificaciones
podrían suponer, sino también los costes asociados que pueden conllevar. Tras analizar el
problema, hemos obtenido la siguiente lista de requisitos:
· La compañía tiene una flota de autobuses de distintas características. Según el modelo de
autobús, éste tiene mayor o menor capacidad y su consumo de combustible es diferente.
· Para cada autobús se ha de mantener un parte de incidencias en el que queden registradas
las revisiones y reparaciones a las que ha sido sometido. En el parte han de figurar fecha,
coste y descripción, tanto de las revisiones y reparaciones.
· Cada línea de autobús consta de una serie de paradas. Las paradas están identificadas por el
nombre de la calle donde están situadas y un número (p.ej. Gran Vía 3).
· Cada día, los autobuses realizan varias veces los recorridos marcados por las distintas
líneas, para las cuales existe un horario oficial (el cual, desgraciadamente, no suele
cumplirse).
· En los autobuses se instalarán los dispositivos necesarios que permitan contar el número de
viajeros que suben y bajan en cada parada, así como controlar el cumplimiento de los
horarios.

Normalizacion
Las bases de datos relacionales se normalizan para:
*Evitar la redundancia de los datos.
*Evitar problemas de actualización de los datos en las tablas.
*Proteger la integridad de los datos.
En el modelo relacional es frecuente llamar tabla a una relación, aunque para que una tabla sea considerada como una relación tiene que cumplir con algunas restricciones:
*Cada columna debe tener su nombre único.
*No puede haber dos filas iguales. No se permiten los duplicados.
*Todos los datos en una columna deben ser del mismo tipo.
Primera Forma Normal
Podemos observar que el registro de código 1 si cumple la primera forma normal, cada campo del registro contiene un único dato, pero no ocurre así con los registros 2 y 3 ya que en el campo cursos contiene más de un dato cada uno. La solución en este caso es crear dos tablas del siguiente modo:
Como se puede comprobar ahora todos los registros de ambas tablas contienen valores únicos en sus campos, por lo tanto ambas tablas cumplen la primera forma normal.
Una vez normalizada la tabla en 1NF, podemos pasar a la segunda forma normal.
Segunda Forma Normal
Tomando como punto de partida que la clave de esta tabla está formada por los campos código de empleado y código de departamento, podemos decir que la tabla se encuentra en primera forma normal, por tanto vamos a estudiar la segunda:
1. El campo nombre no depende funcionalmente de toda la clave, sólo depende del código del empleado.
2. El campo departamento no depende funcionalmente de toda la clave, sólo del código del departamento.
3. El campo años si que depende funcionalmente de la clave ya que depende del código del empleado y del código del departamento (representa el número de años que cada empleado ha trabajado en cada departamento)
Por tanto, al no depender todos los campos de la totalidad de la clave la tabla no está en segunda forma normal, la solución es la siguiente:

Podemos observar que ahora si se encuentras las tres tabla en segunda forma normal, considerando que la tabla A tiene como índice el campo Código Empleado, la tabla B Código Departamento y la tabla C una clave compuesta por los campos Código Empleado y Código Departamento.
Tercera Forma Normal
Se dice que una tabla está en tercera forma normal si y solo si los campos de la tabla dependen únicamente de la clave, dicho en otras palabras los campos de las tablas no dependen unos de otros. Tomando como referencia el ejemplo anterior, supongamos que cada alumno sólo puede realizar un único curso a la vez y que deseamos guardar en que aula se imparte el curso. A voz de pronto podemos plantear la siguiente estructura:

Estudiemos la dependencia de cada campo con respecto a la clave código:
*Nombre depende directamente del código del alumno.
*Curso depende de igual modo del código del alumno.
*El aula, aunque en parte también depende del alumno, está mas ligado al curso que el alumno está realizando.
Por esta última razón se dice que la tabla no está en 3NF. La solución sería la siguiente:


