miércoles, 29 de agosto de 2012

Ejemplo de normalizacion de 1FN hasta 4FN

Efectúe la normalización del conjunto de datos propuesto en relación al caso presentado a continuación; explique cada paso y muestre el conjunto de relaciones resultante. 

No olvide subrayar la clave primaria en cada relación. 

HOSPEDAJES RURALES 

La Dirección de Turismo de la Región Lima desea guardar información sobre los alojamientos rurales que existen en su territorio. Para ello decide crear una base de datos que recoja las siguientes consideraciones: 

· Un alojamiento rural se identifica con código, tiene un nombre y una dirección. 

· En cada alojamiento trabajan una serie de personas que se identifican con un código de empleado, único en todo el sistema. Se requiere conocer además su nombre completo, dirección y DNI. Aunque en un alojamiento trabajen varias personas, cada persona solamente puede trabajar en un alojamiento. 

· Los alojamientos se alquilan por habitaciones, y se desea conocer cuántas habitaciones componen cada alojamiento, de qué tipo (individuales, dobles, triples) es cada una, si posee baño propio y su precio. 

· Algunos de estos alojamientos organizan actividades multiaventura para sus huéspedes (caminatas, ciclismo de montaña, canotaje, etc.). Estas actividades se identifican con un código único. Es de interés saber el nombre de la actividad, la descripción y el nivel de dificultad, el cual es propio de la actividad (es decir, la dificultad no depende del alojamiento que la organice). 

· Estas actividades se realizan uno o más días a la semana en cada alojamiento. Por ejemplo, en el alojamiento L005 hay canotaje los miércoles, sábado y domingo; en el alojamiento L042 hay canotaje martes, sábado y domingo, y ciclismo de montaña los lunes, miércoles y viernes. 

· Los alojamientos registran a sus huéspedes asignándoles un código de identificación (único en cada alojamiento), y registrando su nombre completo y su nacionalidad. Se debe conocer además todas las ocasiones en que se hospedó cada huésped, guardando la información la habitación que ocupó y del período de hospedaje en términos de la fecha de llegada y de salida del alojamiento. Esto es muy importante puesto que hay personas que regresan muchas veces al mismo alojamiento, en sus vacaciones o aprovechando fines de semana largos.



Elemento de dato
Definición
#_Telefono
Número de Teléfono del alojamiento
$_Habitacion
Costo de alquiler de la habitación
C_Actividad
Código de identificación de la actividad
C_Alojamiento
Código de identificación del alojamiento
C_DNIEmpleado
DNI del empleado
C_Empleado
Código de identificación del empleado
C_Habitacion
Código de identificación de la habitación dentro del alojamiento al que pertenece
C_Huesped
Código de identificación del huésped dentro del alojamiento
D_FinHospedaje
Fecha en que el huésped se retira del alojamiento
D_IniHospedaje
Fecha en que el huésped llega al alojamiento
F_Baño
Indicador de si la habitación cuenta con baño incorporado
N_Actividad
Nombre de la actividad (ciclismo de montaña, canotaje, etc.)
N_Alojamiento
Nombre del alojamiento
N_DiaSemana
Día de la semana en que se realiza una actividad en un alojamiento
N_Dificultad
Grado de dificultad de la actividad
N_Empleado
Nombre y apellidos del empleado
N_Huesped
Nombre y apellidos del huésped
N_Nacionalidad
Nacionalidad del huésped
N_TipoHabitacion
Nombre del tipo de habitación (simple, doble, triple)
T_Actividad
Descripción de la actividad
T_DirecAlojamiento
Dirección del alojamiento
T_DirecEmpleado
Dirección del empleado
Paso #1 - Armar el diagrama de dependencias y definir la PK:



























Determinantes: (C_Actividad, C_Alojamiento, C_Empleado, C_Habitacion, C_Huesped, D_IniHospedaje)
Atributo en DMV no soportado por el conjunto de determinantes: N_DiaSemana
(C_Empleado) determina C_Alojamiento
(C_Alojamiento, C_Huesped, D_IniHospedaje) determinan C_Habitacion
è PK: (C_Actividad, C_Empleado, C_Huesped, D_IniHospedaje, N_DiaSemana)
R:      (C_Alojamiento, C_ActividadC_Empleado, C_Habitacion, C_Huesped, #_Telefono, $_Habitacion, C_DNIEmpleado, D_FinHospedaje, D_IniHospedaje, F_Baño, N_Actividad, N_Alojamiento, N_DiaSemana, N_Dificultad, N_Empleado, N_Huesped, N_Nacionalidad, N_TipoHabitacion, T_Actividad, T_DirecAlojamiento, T_DirecEmpleado)
Paso #2 -  Trabajamos las DMV:
Actividad en Alojamiento: (C_AlojamientoC_ActividadN_DiaSemana)

Paso #3 -  Armar relaciones donde haya DFC:
Actividad: (C_Actividad, N_Actividad, N_Dificultad, T_Actividad)
Empleado: (C_Empleado, C_Alojamiento, C_DNIEmpleado, N_Empleado, T_DirecEmpleado, N_Alojamiento, #_Telefono, T_DirecAlojamiento)
Huésped: (C_AlojamientoC_Huesped, N_Huesped, N_Nacionalidad)
Hospedaje: (C_AlojamientoC_HuespedD_IniHospedaje, D_FinHospedaje, C_Habitacion)
Habitación: (C_AlojamientoC_Habitacion, $_Habitacion, N_TipoHabitacion, F_Baño)

Paso #4 – Despejar las DT que hubiera:
Empleado (1): (C_Empleado, C_Alojamiento, C_DNIEmpleado, N_Empleado, T_DirecEmpleado)
Alojamiento: (C_Alojamiento, N_Alojamiento, #_Telefono, T_DirecAlojamiento)

Conjunto Solución: {Actividad en Alojamiento, Actividad, Empleado (1), Alojamiento, Huésped, Hospedaje, Habitación}







domingo, 26 de agosto de 2012

Cuarta forma normal (4FN)

Una tabla está en 4NF si y solo si esta en Tercera forma normal o en BCNF (Cualquiera de ambas) y no posee dependencias multivaluadas no triviales. La definición de la 4NF confía en la noción de una dependencia multivaluada.

Una tabla con una dependencia multivaluada es una donde la existencia de dos o más relaciones independientes muchos a muchos causa redundancia; y es esta redundancia la que es suprimida por la cuarta forma normal.

Ejemplos:













Tercera forma normal (3FN)


Una tabla está en 3NF si y solo si las dos condiciones siguientes se mantienen:
  • La tabla está en la segunda forma normal (2NF)
  • Ningún atributo no-primario de la tabla es dependiente transitivamente de una clave primaria

Un atributo no-primario es un atributo que no pertenece a ninguna clave candidata. Una dependencia transitiva es una dependencia funcional X → Z en la cual Z no es inmediatamente dependiente de X, pero sí de un tercer conjunto de atributos Y, que a su vez depende de X. Es decir, X → Z por virtud de X → Y e Y → Z.

Ejemplos:







Segunda forma normal (2FN)


Una tabla que está en la primera forma normal (1NF) debe satisfacer criterios adicionales para calificar para la segunda forma normal: 
Una tabla 1NF está en 2NF si y solo si, dada una clave primaria y cualquier atributo que no sea un constituyente de la clave primaria, el atributo no clave depende de toda la clave primaria en vez de solo una parte de ella.

Ejemplos:












     

Primera forma normal (1FN)


Una tabla está en 1FN si y solo si es "isomorfa a alguna relación", lo que significa, específicamente, que satisface las siguientes cinco condiciones

1. No hay orden de arriba-a-abajo en las filas.

2. No hay orden de izquierda-a-derecha en las columnas.

3. No hay filas duplicadas.

4. Cada intersección de fila-y-columna contiene exactamente un valor del dominio aplicable (y nada más).

5. Todas las columnas son regulares [es decir, las filas no tienen componentes como IDs de fila, IDs de objeto, o timestamps ocultos].


Ejemplos: