Vous êtes sur la page 1sur 3

Ba ses de Da t os

Ejercicio de Normalizacin
Profesora: Andrea Rodrguez andrea@udec.cl Ayudante: Gonzalo Hidalgo hidalgog@gmail.com

ENUNCIADO
Se tiene la siguiente especificacin de Bases de Datos. Analice si el siguiente modelo relacional representa el problema y estudie su normalizacin. Si es necesario, ajustelo para que cumpla los requerimientos establecidos. Se desea fabricar el mdelo de una base de datos que almacene informacin sobre un ejrcito de soldados. El ejercito esta formado por batallones, los cuales son liderados por un capitn. En cada batalln hay un grupo determinado de soldados, y esta asignado a una zona particular (base terrestre). Cada soldado tiene su rut, sus nombres y apellidos, su direccin, ciudad y tiempo de permanencia en el batalln. Cada soldado puede tener una labor especfica, como doctor, artillero, mecnico, ingeniero, infantera, etc. El rango de capitn puede considerarse una labor. El ejercito completo esta liderado por un grupo de generales, que tambin pueden ser capitanes de un batalln (en caso de que ese batalln no disponga de uno). Existen armeras, que almacenan todas las armas y equipamiento disponible; cada batalln tiene su propia armera y se almacena la cantidad asignada a cada batalln, adems de vehculos existentes, como tanques, jeeps y camiones de carga, entre otros. Del equipamiento interesa saber la cantidad asignada a cada batalln, el tipo de equipamiento (rifles, granadas, lanza misiles, etc.) y la cantidad de municiones asignada, lo mismo para los vehculos. Cabe destacar que las armeras estan ubicadas en cada base terrestre. Un soldado no puede pertenecer a dos distintos batallones y un capitan no puede liderar ms de uno. Para las bases terrestres, se necesita saber el nombre de la base, la ubicacin fsica (coordenadas terrestres), y la capacidad mxima de soldados. Cada vehculo tiene una descripcin, modelo, patente y capacidad mxima de pasajeros; las armas tienen un nmero de modelo, tipo de municin, municin mxima y peso fsico.
M O D ELO REL A CIO N AL

vehiculo( patente, modelo, descripcin, capacidad, nombre_armeria, ubicacin ) soldado( rut_soldado, nombres, apellidos, direccion, ciudad, permanencia, tipo_oficio ) arma( id_arma, modelo, tipo_municin, municin_mxima, peso, cantidad, nombre_armeria, ubicacin ) esta_en( nombre_batallon, rut_soldado, nombre_base, ubicacin, cantidad ) equipo_arma( id_arma, nombre_batallon ) equipo_vehiculo( patente, nombre_batallon ) batallon( nombre_batallon, rut_capitan, cantidad_soldados ) base( nombre_base, ubicacin, capacidad )

DESARROLLO
Antes de comenzar a analizar la normalizacin del modelo relacional, hay que ver si se cumplen todos los requerimientos establecidos. No esta establecido quienes son los generales que lideran el ejercito completo. Una solucin a esto podra ser agregar una atributo es_general con valores TRUE o FALSE, a la entidad soldado. No se especifica la cantidad de armas asignada a cada batalln. La solucin a esto es agregar el atributo cantidad a las entidades equipo_arma. Si dejamos nombre_batallon como clave primaria en la entidad esta_en estaramos dejando que los soldados puedan pertenecer a varios batallones, lo cual no est permitido. No se especifica a que base esta asignado un batalln. Para ello basta agregar el atributo nombre_base a la entidad batallon. Con los arreglos anteriores, el modelo relacional queda como sigue:
M O D ELO REL A CIO N AL 2

base( nombre_base, ubicacin, capacidad ) soldado( rut_soldado, nombres, apellidos, direccion, ciudad, permanencia, tipo_oficio, es_general ) batallon( nombre_batallon, rut_capitan, cantidad_soldados, nombre_base ) esta_en( nombre_batallon, rut_soldado, nombre_base, ubicacin, cantidad ) arma( id_arma, modelo, tipo_municin, municin_mxima, peso, cantidad, nombre_armeria, ubicacin ) vehiculo( patente, modelo, descripcin, capacidad, nombre_armeria, ubicacin ) equipo_arma( id_arma, nombre_batallon, cantidad ) equipo_vehiculo( patente, nombre_batallon )

ESTUDIO DE LA NORMALIZACION
PRIMERA FORMA NORMAL (1NF)
El atributo descripcion de la entidad vehiculo puede ser NULO perfectamente si consideramos que no todos los vehculos poseen una descripcin. Una solucin sera eliminar el atributo o agregar una entidad extra descripcin, con cardinalidad 1,1 con vehculo. El atributo permanencia de la entidad soldado es ambiguo. Es mejor eliminar ese atributo y agregar dos atributos: fecha_ingreso y fecha_egreso (o simplemente fecha_egreso si es que no interesa saber cuando fue qu entr al batallon)

SEGUNDA FORMA NORMAL (2NF)


Los atributos ubicacin de las entidades vehiculo y arma estan repitiendo informacin para cada arma que pertenece a una misma armeria. Como cada armera esta ubicado en cada base, se puede eliminar dichos atributos. Tambin se tiene que agregar el atributo nombre_armeria a la entidad base. Si se asigna dicho atributo como clave primaria, se estaran permitiendo varias armerias por base, lo cual no se conoce en el enunciado. Si ese no fuese el caso, se puede cambiar el atributo nombre_armeria por nombre_base para dar ms consistencia en el modelo.

Los atributos nombre_base y ubicacin de la entidad esta_en repiten informacin sobre la base, por lo que no son necesarios, considerando que esta informacin se puede obtener de las dems entidades. El atributo rut_capitan de la entidad batallon podra dar ambiguedades si se considera capitan como un tipo de oficio (atributo tipo_oficio de la entidad soldado). Lo mejor es no considerar capitn como un oficio y asignar nicamente el cargo por el atributo rut_capitan.

TERCERA FORMA NORMAL (3NF)


Dependiendo de cmo se especifice el atributo direccion en la entidad soldado, se podra obviar el atributo ciudad. Sin embargo, esto slo depende del comportamiento de los datos. El atributo cantidad de la entidad esta_en no es necesario porque se puede calcular la cantidad de soldados que pertenecen a un batalln con una consulta, lo mismo para el atributo cantidad_soldados de la entidad batallon. Con todo lo antes mencionado, el mdelo relacional quedara como sigue.
M O D ELO REL A CIO N AL 3

base( nombre_base, ubicacin, capacidad, nombre_armeria ) soldado( rut_soldado, nombres, apellidos, direccion, ciudad, fecha_ingreso, fecha_egreso, tipo_oficio, es_general ) batallon( nombre_batallon, rut_capitan, nombre_base ) esta_en( rut_soldado, nombre_batallon ) arma( id_arma, nombre_armeria, cantidad, modelo, tipo_municin, municin_mxima, peso ) vehiculo( patente, nombre_armeria, modelo, capacidad ) equipo_arma( id_arma, nombre_batallon, cantidad ) equipo_vehiculo( patente, nombre_batallon, cantidad )

EJERCICIOS COMPLEMENTARIOS
Discutir y analizar como se podran implementar las siguientes agregaciones. Mantener el estado actual de normalizacin y estudiar si el modelo relacional esta en cuarta forma normal o BCNF. Agregar el tipo de oficio conductor y guardar la lista de conductores de vehculos junto con sus respectivas patentes. Un conductor slo puede conducir un vehculo. Agregar ms rangos y mantener una relacin de subordinados, como almirantes, tenientes, coroneles, oficiales, etc. Guardar los aos de experiencia de los soldados. Para un soldado con un rango alto, guardar todos los aos de trayectoria hasta el momento actual. Adems, guardar los datos de ingreso y egreso a cada batalln que ha sido asignado. Un batalln puede ser comandado por varios capitanes. Guardar ms informacin sobre las bases, como por ejemplo, cuales de ellas poseen armamento nuclear, pista de aterrizaje, hospital y centro de comunicaciones, entre otros. Almacenar el equipamiento que se le asigna a cada soldado, y no a un batalln en gneral. Guardar que especificamente esta portando un soldado cualesquiera. Guardar la posicin de las tres bases ms cercanas a una en particular. Cualquier error o duda hacerla al correo hidalgog@gmail.com .