Introducción
Para la normalización se
deba de realizar un análisis de las dependencias funcionales entre los
diferentes atributos para así poder
reducir las complejas vistas de usuario a un conjunto de pequeñas y
estables estructuras de datos.
Las estructuras de los datos
normalizados son más flexibles, estables, y más fáciles de mantener, que las no
normalizadas.
Las relaciones no
normalizadas son las que contienen
Desarrollo
1FN (Primera forma normal)
Es una relación que contiene sólo valores simples o
atómicos en la intersección de cada fila y columna. Esto es, una relación
normalizada no contiene grupos repetitivos.
• Para la 1FN separamos la relación no normalizada en dos
entidades, uno conformada con los grupos no repetitivos y la otra con los
grupos repetitivos.
– Reporte
(codalum,nomalu,espec,codcur,denomin,nomdoc,ofic,secc)
– Alumno (codalum,nomalu,espec)
CursoAlumno (codalum+codcur, denomin,nomdoc,ofic,secc)
2FN(Segunda forma normal)
• Para eliminar las
anomalías de la 1FN, debemos remover las dependencias funcionales parciales.
• Una relación está en
segunda forma normal si esta en 1FN y toda dependencia funcional parcial ha
sido removida.
• Para convertir una
relación con dependencias parciales a 2da forma normal (2FN), creamos dos
nuevas relaciones, una con atributos que son totalmente dependientes de la
clave primaria y la otra con atributos que son parcialmente dependientes de la
clave.
3FN (Tercera forma normal)
• Una relación está en 3ra.
Forma normal (3FN) si esta en 2FN y no contiene dependencias transitivas.
• Esto es, cada atributo no
clave es totalmente dependiente de la clave primaria y no existen dependencias
transitivas (“ocultas”).
Dependencias
• La razón de las anomalías es que varios de los atributos
no clave son dependientes sólo de parte de la clave primaria (de algunos
atributos) y no de la cave primaria total.
• Los atributos no clave que dependen de la clave
primaria son totalmente dependientes los otros son sólo parcialmente
dependientes.
Diagramas
1. Constrúyase un diagrama ER para una compañía de seguros de
coches cuyos clientes poseen uno o más coches cada uno o más coches. Cada coche
tiene asociado un valor que va de cero al número de accidentes registrados.
1FN
|
2FN
|
3FN
|
Cliente()
|
Cliente()
|
Cliente()
|
Tiene()
|
Tiene()
|
Tiene()
|
Coche(Numero_de_accidentes)
|
Coche(Numero_de_accidentes)
|
Coche(Numero_de_accidentes)
|
2. Se desea diseñar una base de datos para almacenar y
gestionar la información empleada por un concesionario de automóviles, teniendo
en cuenta los siguientes aspectos:
• A un concesionario de
coches llegan clientes para comprar automóviles.
• De cada coche interesa
saber la matricula, modelo, marca y color.
• Un cliente puede comprar
varios coches en el concesionario. Cuando un cliente compra un coche, se le
hace una ficha en el concesionario con la siguiente información: DNI, nombre,
apellidos, dirección y teléfono. Los coches que el concesionario vende pueden
ser nuevos o usados. De los coches nuevos interesa saber el número de unidades
que hay en el concesionario. De los coches viejos interesa el número de
kilómetros que lleva recorridos. El concesionario también dispone de un taller
en el que los mecánicos reparan los coches que llevan los clientes. Un mecánico
repara varios coches a lo largo de día, y un coche puede ser reparado por
varios mecánicos. Los mecánicos tienen un DNI, nombre, apellidos, fecha de
contratación y salario. Se desea guardar también la fecha en que se repara cada
vehículo y el número de horas que se ha tardado en arreglar cada automóvil.
1FN
|
2FN
|
3FN
|
Cliente(DNI,nombre,apellido_paterno,apellido_materno,calle,numero_interno,numero_externo,código_postal,ciudad,estado,telefono_casa,teléfono_celular)
|
Cliente(DNI,nombre,apellido_paterno,apellido_materno,telefono_casa,teléfono_celular)
|
Cliente(DNI,nombre,apellido_paterno,apellido_materno,telefono_casa,teléfono_celular)
|
Comprar
|
Direccion(calle,numero_interno,numero_externo,código_postal,ciudad,estado)
|
Direccion(calle,numero_interno,numero_externo,código_postal,ciudad,estado)
|
Coche(Matricula,modelo,marca,color,DNI)
|
Comprar
|
Comprar
|
Reparado(Horas,dia,mes,anio)
|
Coche(Matricula,modelo,marca,color,DNI)
|
Coche(Matricula,modelo,marca,color,DNI)
|
Mecanico(DNI,nombre,apellido_paterno,apellido_materno,dia_de_contratacion,
mes_de_contratacion, ano_de_contratacion)
|
Reparado(Horas,dia,mes,anio)
|
Reparado(Horas,dia,mes,anio)
|
Viejo(DNI,numero_de_kilometros_recorridos)
|
Mecanico(DNI,nombre,apellido,dia_de_contratacion,
mes_de_contratacion, ano_de_contratacion)
|
Mecanico(DNI,nombre,apellido,dia_de_contratacion,
mes_de_contratacion, ano_de_contratacion)
|
Nuevo(DNI,numero_de_unidades)
|
Viejo(DNI,numero_de_kilometros_recorridos)
|
Viejo(DNI,numero_de_kilometros_recorridos)
|
Nuevo(DNI,numero_de_unidades)
|
Nuevo(DNI,numero_de_unidades)
|
3. Diséñese un diagrama E-R para almacenar los logros de su
equipo deportivo favorito. Se deben almacenar los partidos jugados, el
resultado de cada partido, los jugadores de cada partido y las estadísticas de
cada jugador en cada partido. Las estadísticas resumidas de deben representar
como atributos derivados.
1FN
|
2FN
|
3FN
|
Equipo()
|
Equipo()
|
Equipo()
|
Juega()
|
Juega()
|
Juega()
|
Partido(estadisticas(puntos,tiros,pases),resultados,nombre_jugador,apellido_jugador)
|
Partido(puntos,tiros,pases,resultados)
|
Partido(puntos,tiros,pases,resultados)
|
Nombre(nombre_jugador,apellido_paterno_jugador,apellido_materno_jugador)
|
Nombre(nombre_jugador,apellido_paterno_jugador,apellido_materno_jugador)
|
4. Artículos y encargos
Una base de datos para una
pequeña empresa debe contener información acerca de clientes, artículos y
pedidos. Hasta el momento se registran los siguientes datos en documentos
varios:
• Para cada cliente: Número de cliente (único), Direcciones
de envío (varias por cliente), Saldo, Límite de crédito (depende del cliente,
pero en ningún caso debe superar los 3.000.000 pts.), Descuento.
• Para cada artículo: Número de artículo (único), Fábricas
que lo distribuyen, Existencias de ese artículo en cada fábrica, descripción
del artículo.
• Para cada pedido: Cada pedido tiene una cabecera y el
cuerpo del pedido. La cabecera está formada por el número de cliente, dirección
de envío y fecha del pedido. El cuerpo del pedido son varias líneas, en cada
línea se especifican el número del artículo pedido y la cantidad. Además, se
han determinado que se debe almacenar la información de las fábricas. Sin
embargo, dado el uso de distribuidores, se usará: Número de fábrica (único) y
Teléfono de contacto. Y se desean ver cuántos artículos (en total) provee la
fábrica. También, por información estratégica, se podría incluir información de
fábricas alternativas respecto de las que ya fabrican artículos para esta
empresa.
“Nota: Una dirección se
entenderá como N°, Calle, Comuna y Ciudad. Una fecha incluye hora”. Se pide
hacer el diagrama ER para la base de datos que represente esta información.
1FN
|
2FN
|
3FN
|
Cliente(Numero,Limite_de_credito,saldo,saldo_limite,descuento,
calle_de_envio,ciudad_de_envio,comuna_de_envio)
|
Cliente(Numero,Limite_de_credito,saldo,saldo_limite,descuento)
|
Cliente(Numero,Limite_de_credito,saldo,saldo_limite,descuento)
|
Hace()
|
Direccion_envio(calle_de_envio,ciudad_de_envio,comuna_de_envio)
|
Direccion_envio(calle_de_envio,ciudad_de_envio,comuna_de_envio)
|
Pedido(Cabecera_numerol_cliente, cabecera_calle_envio,cabecera_numero_envio,cabecera_colonia_envio,cabecera_ciudad_envio,dia_de_pedido,mes_pedido,anio_envio,cuerpo_numero_articulo,cuerpo_cantidad)
|
Hace()
|
Hace()
|
Envia()
|
Pedido(numero_cliente,dia_de_pedido,mes_pedido,anio_envio,numero_articulo,cantidad)
|
Pedido(numero_cliente,dia_de_pedido,mes_pedido,anio_envio,numero_articulo,cantidad)
|
Fabrica(Numero,telefono_de_contacto,articulos_que_provee)
|
Direccion_envio(calle_envio,numero_envio,colonia_envio,ciudad_envio)
|
Direccion_envio(calle_envio,numero_envio,colonia_envio,ciudad_envio)
|
Hace()
|
Envia()
|
Envia()
|
Articulo(Numero,fabricas_que_distribuye,existencias_en_cada_fabrica,
descripcion_del_articulo)
|
Fabrica(Numero,telefono_de_contacto,articulos_que_provee)
|
Fabrica(Numero,telefono_de_contacto,articulos_que_provee)
|
Hace()
|
Hace()
|
|
Articulo(Numero,fabricas_que_distribuye,existencias_en_cada_fabrica,
descripcion_del_articulo)
|
Articulo(Numero,fabricas_que_distribuye,existencias_en_cada_fabrica,
descripcion_del_articulo)
|
5. Sistema de ventas
Le contrata para hacer una
BD que permita apoyar la gestión de un sistema de ventas. La empresa necesita
llevar un control de proveedores, clientes, productos y ventas. Un proveedor
tiene un RUT, nombre, dirección, teléfono y página web. Un cliente también
tiene RUT, nombre, dirección, pero puede tener varios teléfonos de contacto. La
dirección se entiende por calle, número, comuna y ciudad. Un producto tiene un
id único, nombre, precio actual, stock y nombre del proveedor. Además se
organiza en categorías, y cada producto va sólo en una categoría. Una categoría
tiene id, nombre y descripción. Por razones de contabilidad, se debe registrar
la información de cada venta con id, fecha, cliente, descuento y monto final.
Además se debe guardar el precio al momento de la venta, la cantidad vendida y
el monto total por el producto.
1FN
|
2FN
|
3FN
|
Categoria(ID,nombre,apellido_paterno,apelldio_materno,descripcion)
|
Categoria(ID,nombre,apellido_paterno,apelldio_materno,descripcion)
|
Categoria(ID,nombre,apellido_paterno,apelldio_materno,descripcion)
|
Tiene()
|
Tiene()
|
Tiene()
|
Producto(ID,nombre, stock,precio_actual)
|
Producto(ID,nombre, stock,precio_actual)
|
Producto(ID,nombre, stock,precio_actual)
|
Da()
|
Da()
|
Da()
|
Proveedor(RUT,nombre,apellido_paterno,apellido_paterno,numero_interno,numero_externo,ciudad,colonia,pagina_web)
|
Proveedor(RUT,nombre,apellido_paterno,apellido_paterno)
|
Proveedor(RUT,nombre,apellido_paterno,apellido_paterno)
|
Venta(ID,descuento,cliente,dia,mes,anio,monto_final)
|
Localizacion_proveedor(numero_interno,numero_externo,ciudad,colonia,pagina_web)
|
Localizacion_proveedor(numero_interno,numero_externo,ciudad,colonia,pagina_web)
|
Cliente(RUT,nombre,apellido_paterno,apellido_paterno,numero_interno,numero_externo,comuna,ciudad,calle)
|
Venta(ID,descuento,cliente,dia,mes,anio,monto_final)
|
Venta(ID,descuento,cliente,dia,mes,anio,monto_final)
|
Cliente(RUT,nombre,apellido_paterno,apellido_paterno)
|
Cliente(RUT,nombre,apellido_paterno,apellido_paterno)
|
|
|
Localizacion_cliente(numero_interno,numero_externo,comuna,ciudad,calle)
|
Localizacion_cliente(numero_interno,numero_externo,comuna,ciudad,calle)
|
Sistema de vuelos
6. Obtener el diagrama E/R para un sistema de control de vuelos
adaptado a las siguientes reglas de gestión (indicar las entidades,
interrelaciones, etc., que se deducen de cada una de las reglas):
a) De cada aeropuerto se conoce su código, nombre, ciudad y
país.
b) En cada aeropuerto pueden tomar tierra diversos modelos de aviones
(el modelo de un avión determina su capacidad, es decir, el número de plazas).
c) En cada aeropuerto existe una colección de programas de
vuelo. En cada programa de vuelo se indica el número de vuelo, línea aérea y
días de la semana en existe dicho vuelo.
d) Cada programa de vuelo despega de un aeropuerto y aterriza en
otro.
e) Los números de vuelo son únicos para todo el mundo.
f) En cada aeropuerto hay múltiples aterrizajes y despegues.
Todos los aeropuertos contemplados están en activo, es decir, tienen algún
aterrizaje y algún despegue.
g) Cada vuelo realizado pertenece a un cierto programa de vuelo.
Para cada vuelo se quiere conocer su fecha, plazas vacías y el modelo de avión
utilizado.
h) Algunos programas de vuelo incorporan escalas técnicas intermedias
entre los aeropuertos de salida y de llegada. Se entiende por escala técnica a
un aterrizaje y despegue consecutivos sin altas o bajas de pasajeros.
i) De cada vuelo se quieren conocer las escalas técnicas
ordenadas asignándole a cada una un número de orden. Por ejemplo, el programa
de vuelo 555 de Iberia con vuelos los lunes y jueves despega de
Barajas-Madrid-España y aterriza en Caudell-Sidney-Australia teniendo las
siguientes escalas técnicas:
1- Los Pradiños-Sao Paulo Brasil, 2- El Emperador-Santiago-Chile
y 3-Saint Kitts-Auckland-Nueva Zelanda.
1FN
|
2FN
|
3FN
|
Aeropuerto(Codigo,ciudad,nombre,pais)
|
Aeropuerto(Codigo,ciudad,nombre,pais)
|
Aeropuerto(Codigo,ciudad,nombre,pais)
|
Tiene()
|
Tiene()
|
Tiene()
|
Programa_de_vuelos(Numero_de_vuelos,linea_aerea,días_de_dicho_vuelo)
|
Programa_de_vuelos(Numero_de_vuelos,linea_aerea,días_de_dicho_vuelo)
|
Programa_de_vuelos(Numero_de_vuelos,linea_aerea,días_de_dicho_vuelo)
|
Avion(Numero_de_vuelos,capacidad)
|
Avion(Numero_de_vuelos,capacidad)
|
Avion(Numero_de_vuelos,capacidad)
|
Escalas(Numero_de_vuelos)
|
Escalas(Numero_de_vuelos)
|
Escalas(Numero_de_vuelos)
|
7. Olimpiadas
Las sedes olímpicas se
dividen en complejos deportivos. Los complejos deportivos se subdividen en
aquellos en los que se desarrolla un único deporte y en los polideportivos.
Los complejos polideportivos
tienen áreas designadas para cada deporte con un indicador de localización
(ejemplo: centro, esquina-NE, etc.). Un complejo tiene una localización, un
jefe de organización individual y un área total ocupada.
Los dos tipos de complejos
(deporte único y polideportivo) tendrán diferentes tipos de información. Para
cada tipo de sede, se conservará el número de complejos junto con su
presupuesto aproximado. Cada complejo celebra una serie de eventos (ejemplo: la
pista del estadio puede celebrar muchas carreras distintas.). Para cada evento está prevista una fecha,
duración, número de participantes, número de comisarios.
Una lista de todos los
comisarios se conservará junto con la lista de los eventos en los que esté
involucrado cada comisario ya sea cumpliendo la tarea de juez u observador.
Tanto para cada evento como para el mantenimiento se necesitará cierto
equipamiento (ejemplo: arcos, pértigas, barras paralelas, etc.).
1FN
|
2FN
|
3FN
|
Complejo_deportivo()
|
Complejo_deportivo()
|
Complejo_deportivo()
|
Tiene()
|
Tiene()
|
|
Sede()
|
Sede()
|
|
Polidepeortivo(Jefe_de_organizacion,aera_total,localizacion)
|
Polidepeortivo(Jefe_de_organizacion,aera_total,localizacion)
|
Polidepeortivo(Jefe_de_organizacion,aera_total,localizacion)
|
Un_solo_deporte()
|
Un_solo_deporte()
|
Un_solo_deporte()
|
Evento(Jefe_de_organizacion,fecha,duración,equipo,
numero_de_participantes,numero_de_comisarios)
|
Evento(Jefe_de_organizacion,fecha,duración,numero_de_comisarios)
|
Evento(Jefe_de_organizacion,fecha,duración,numero_de_comisarios)
|
Participantes(equipo, numero_de_participantes)
|
Participantes(equipo, numero_de_participantes)
|
8. Torneo de Tenis Gran Slam
El sistema debe memorizar
todos los encuentros que se han desarrollado desde que existe el torneo, así
como las siguientes características de estos.
Descripción:
El Grand Slam se compone de
cuatro torneos anuales que se celebran en Gran Bretaña, Estados Unidos, Francia
y Australia. En cada país se pueden desarrollar en distintos lugares (por ej.,
en EE.UU. Puede desarrollarse en Forest Hill o en Flashing Meadows).
Cada partido tiene asociado
un premio de consolación para el perdedor que dependerá de la fase en que se
encuentre el torneo (por ej., el perdedor de octavos de finar puede ganar 5,000
dólares). El ganador de la final recibiré el premio correspondiente al torneo.
Cada torneo tiene cinco modalidades:
Individual masculino, individual femenino, dobles masculino, dobles femenino y
dobles mixtos.
También hay que tener en
cuenta la nacionalidad de un jugador, de forma que éste puede ser apátrida o
tener varias nacionalidades.
Resultados a considerar:
El sistema debe dar
respuesta a las siguientes preguntas:
1. Dado un año y un torneo, composición y resultado de los
partidos.
2. Lista de árbitros que participaron en el torneo.
3. Ganancias percibidas en premios por un jugador a lo largo
del torneo.
4. Lista de entrenadores que ha entrenado a un jugador a lo largo del torneo y fechas en las
que lo hizo,
Ejemplos de acceso a la base
de datos.
1. Connors ganó Gerulaitis en Roland Garros en 1979 en cuarto
de final en individuales masculinos por 6-3, 4-6/7-5,6-0.
2. El señor Wilkinson arbitró ese partido.
3. Alemania ha ganado dos veces las individuales masculinas de
Wimbledon. Borg ha ganado 2,000,000 de dólares a lo largo de su participación
en el Grand Slam.
4. El ganador de roland Garros de 1987 ganó 20,000 dólares.
5. Noah ha jugado cuatro veces en dobles mixtos con Mandlikova.
1FN
|
2FN
|
3FN
|
Torneo(premio,año,resultados_por_anio,arbitros,ganancias_por_jugador)
|
Torneo(premio,año,resultados_por_anio)
|
Torneo(premio,año,resultados_por_anio)
|
Tiene()
|
Tiene()
|
Tiene()
|
Modalidades(individual_masculino,
individual_femenino,dobles_masculino, dobles_femenino, dobles_mixto)
|
Participantes(arbitros,ganancias_por_jugador)
|
Participantes(arbitros,ganancias_por_jugador)
|
Tiene()
|
Modalidades(individual_masculino,
individual_femenino,dobles_masculino, dobles_femenino, dobles_mixto)
|
Modalidades(individual_masculino,
individual_femenino,dobles_masculino, dobles_femenino, dobles_mixto)
|
Jugadores(Nombre_jugador,apellido_paterno_jugador,apellido_materno_jugador,nombre_entrenador,apellido_paterno_entrenador,apellido_materno_entrenado)
|
Tiene()
|
Tiene()
|
Jugadores(Nombre_jugador,apellido_paterno_jugador,apellido_materno_jugador)
|
Jugadores(Nombre_jugador,apellido_paterno_jugador,apellido_materno_jugador)
|
|
Entrenador(Nombre_entrenador,apellido_paterno_entrenador,apellido_materno_entrenador)
|
Entrenador(Nombre_entrenador,apellido_paterno_entrenador,apellido_materno_entrenador)
|
9. Cine
Se desea crear un sitio web
con información referente a las películas en cartel en las salas de un dudoso
cine cercano a la plaza de armas.
De cada película, se
almacena una ficha con su título de distribución, su título original, su
género, el idioma original, si tiene subtítulos en español o no, los países de
origen, el año de la producción, la url del sitio web de la película, la
duración (en horas y minutos), la calificación (Apta todo público, +9 años,
+15años, +18 años), fecha de estreno en Santiago, un resumen y un identificador
de la película. De cada película interesa conocer la lista de directores y el
reparto, es decir para cada actor que trabaja, el nombre de todos los
personajes que interpreta.
Además interesa disponer de
información sobre los directores y actores que trabajan en cada película. De
ambos, se conoce su nombre (que lo identifica) y su nacionalidad. Además se
desea conocer la cantidad de películas en las que dirigieron o actuaron. Tenga
en cuenta que hay personas que cumplan los dos roles. Los cines pueden tener
más de una sala y cada semana cada uno de los cines envía la cartelera para
dicha semana, indicando el detalle de las funciones. Para cada función se
conoce el día de la semana y la hora de comienzo y obviamente la sala y
película que se exhibe. De cada sala se sabe el nombre, un número que la identifica dentro del cine y la
cantidad de butacas que posee. De cada cine se conoce el nombre que lo
identifica, su dirección y teléfono para consultas. Algunos cines cuentan con
promociones. Estas promociones dependen de la función. (Ej. De lunes a jueves
antes de la 18, 50% de descuento en la sala tal del cine tal para la película
cual…La función del lunes a las 14 para la película tal en la sala cual, no se
cobra a los escolares con túnica…) de cada promoción se conoce una descripción
y descuento que aplica.
Además del resumen de la
película que se incluye en la, ficha interesa mostrar la opinión de las
personas que vieron la película. De cada opinión se conoce el nombre de la
persona que la realiza, su edad, la fecha en que registró su opinión, la calificación
que dio a la película (Obra maestra, Muy Buena, Buena, Regular, Mala) y el
comentario propiamente dicho. A cada opinión se le asigna un número que la
identifica respecto de la película sobre la cual opina.
1FN
|
2FN
|
3FN
|
Pelicula(Sin_subtitulos_en_espanol,con_subtitulos_en_espanol,
titulo_original,titulo_de_distribucion,país_de_origen,ano_de_la_produccion,idioma_original,duracion,identificador,opinión,fecha_de_estreno,URL,
genero,calificacion)
|
Pelicula(titulo_original,titulo_de_distribucion,ano_de_la_produccion,idioma_original,duracion,identificador,opinión,fecha_de_estreno,URL,
genero,calificacion)
|
Pelicula(titulo_original,titulo_de_distribucion,ano_de_la_produccion,idioma_original,duracion,identificador,opinión,fecha_de_estreno,URL,
genero,calificacion)
|
Se_transmite()
|
Lenguaje(Sin_subtitulos_en_espanol,con_subtitulos_en_espanol,país_de_origen)
|
Lenguaje(Sin_subtitulos_en_espanol,con_subtitulos_en_espanol,país_de_origen)
|
Salas(nombre,numero)
|
Se_transmite()
|
Se_transmite()
|
Esta()
|
Salas(nombre,numero)
|
Salas(nombre,numero)
|
Cine(Nombre,calle,numero,ciudad)
|
Esta()
|
Esta()
|
Transmite()
|
Cine(Nombre,direccion)
|
Cine(Nombre,direccion)
|
Funcion(Dia_de_transmicion,hora_de_inicio,sala)
|
Transmite()
|
Transmite()
|
Tiene()
|
Funcion(Dia_de_transmicion,hora_de_inicio,sala)
|
Funcion(Dia_de_transmicion,hora_de_inicio,sala)
|
Reparto(Nombre,nacionalidad,actuadas)
|
Tiene()
|
Tiene()
|
Tiene()
|
Reparto(Nombre,nacionalidad,actuadas)
|
Reparto(Nombre,nacionalidad,actuadas)
|
Directores(Nombre,nacionalidad,películas_dirigidas)
|
Tiene()
|
Tiene()
|
Directores(Nombre,nacionalidad,películas_dirigidas)
|
Directores(Nombre,nacionalidad,películas_dirigidas)
|
10. Fábrica de muebles
El gerente de la fábrica de
muebles MosKea, Sr. Bert
Oldsen, ha decidido utilizar
un sistema de Base de Datos para representar la estructura de los muebles que
distribuye. Realizar el diagrama ER correspondiente teniendo en cuenta que:
Los muebles están
representados por un nombre único.
También se quiere conocer su
precio.
Todo mueble está formado por
una o más piezas. Cada pieza tiene un identificador único y puede formar parte
de varios muebles. Interesa apuntar cuántas unidades de cada pieza componen el
mueble.
Todas las unidades de una
pieza se encuentran en uno o más estantes del almacén. El estante viene
determinado de forma única por dos valores: pasillo y altura. Además de en qué
estantes están las piezas, interesa conocer cuántas unidades de la pieza hay
almacenada en cada estante.
1FN
|
2FN
|
3FN
|
Mueble(Numero,precio)
|
Mueble(Numero,precio)
|
Mueble(Numero,precio)
|
Formado_por(Unidades)
|
Formado_por(Unidades)
|
|
Piezas(Identificador)
|
Piezas(Identificador)
|
Piezas(Identificador)
|
Guardadas()
|
Guardadas()
|
|
Estantes(Altura,piezas,pasillo,unidades_almacenadas)
|
Estantes(Altura,piezas,pasillo,unidades_almacenadas)
|
Estantes(Altura,piezas,pasillo,unidades_almacenadas)
|
Conclusión
Las diferentes formas de
normalización son útiles para hacer algunas partes del software más sencillas,
haciéndola más corta y rápida de entender, de igual manera evita las
redundancias que puedan existir en algunos datos existentes.
Referencias
Ing. Luis Zuloaga Rotta
http://www.itescam.edu.mx/principal/sylabus/fpdb/recursos/r90212.PDF
Erik Germán Ramos Pérez
http://www.utm.mx/~erik/3FN.pdf