sábado, 22 de marzo de 2014

Normalización de bases de datos

Introducción

Para comenzar a desarrollar el tema primero tenemos que entender que es la normalización de bases de datos.
La normalización se entiende como un proceso que consiste en verificar el cumplimiento de ciertas reglas que aseguran la eliminación de redundancias e inconsistencias para organizar una base de datos. Esto se realiza mediante la aplicación de procedimientos dando como resultado relaciones que cumplen características especificas.


Desarrollo

Dentro de la normalización de una base de datos existen varias formas para "normalizar" la base de datos, valga la redundancia. Existen 5 procesos que normalizan la base de datos, pero aqui solo hablaremos de tres.
Primera forma normal (1FN)
Para que una base de datos cumpla con la primera forma normal cada columna debe ser atomica, es decir, indivisible. También una tabla solo puede tener una llave única. Con esto se busca que no se dupliquen entidades.
Segunda forma normal (2FN)
Dentro de la segunda forma normal existe una dependencia funcional, "Las dependencias funcionales son relaciones entre los atributos y estos se dan entre atributos o subconjuntos de atributos x e y que son subconjuntos de una relación, entonces diremos que y tiene una dependencia funcional en x, o que x determina y, si cada valor de x tiene un valor asociado de y."
Tercera forma normal (3FN)
Se normaliza una relación en la tercera forma normal si todas las columnas que no son llave son funcionalmente dependientes por completo de la llave primaria y no hay dependencias transitivas. Una dependencia transitiva es aquella en la cual existen columnas que no son llave
que dependen de otras columnas que tampoco son llave.

Ejercicio 1.-
Coche(Matricula, Marca, Modelo) 
Accidentes(Lugar, Fecha, Folio, Descripcion)
Puede tener(Matricula, Folio)
Cliente(CURP, Direccion, Nombre)
Posee(Matricula, CURP)
Compañía de seguros(Registro, Direccion, Nombre)
Tiene(CURP)

Normalizado:
 Coche(Matricula, Id_modelo)
Marca(Id_Marca, Nombre marca)
Modelo(Id_Modelo, Id_Marca, Nombre modelo)
Accidentes(Lugar, Folio, Descripcion, Id_fecha)
Fecha(Id_fecha, dia, mes, año)
Puede tener(Matricula, Folio)
Cliente(CURP, Direccion, Nombre)
Posee(Matricula, CURP)
Compañía de seguros(Registro, Direccion, Nombre)
Tiene(CURP)


Ejercicio 2.- 
Coche(Matricula, Modelo, Marca, Color) 
Mecanico(DNI, Nombre, Apellidos, Fecha de contrato, Salario)
Repara(DNI, Matricula)
Cliente(DNI, Nombre, Apellidos, Direccion, Telefono)
Compra(DNI, Matricula)
Usado(Km recorridos,Matricula, Modelo, Marca, Color)  
Nuevo(Cantidad, Matricula, Modelo, Marca, Color)

Normalizado:
Coche(Matricula,Id_modelo)
Marca(Id_marca, nombre marca)
Modelo(Id_modelo, Id_marca, color)
Mecánico(DNI, Id_nombre, Fecha de contrato, Salario)
Nombres(Id_nombre, nombre, apellido materno, apellido paterno)
Repara(DNI, Matricula)
Cliente(DNI, Id_nombre, Direccion, Telefono)
Direccion(Id_direccion, 
Compra(DNI, Matricula)
Usado(Km recorridos,Matricula, Id_modelo)  
Nuevo(Cantidad, Matricula, Id_modelo)


Ejercicio 3.-
Equipo(Id_equipo,Jugadores, D.T.)  
Partidos(Estadisticas resumidas)
Perdidos(Quienes jugaron, Estadisticas resumidas)      
Ganados(Quienes jugaron, Estadisticas resumidas)

Normalizado:
Equipo(Id_equipo,Jugadores, D.T.)  
Partidos(Estadisticas resumidas)
Perdidos(Quienes jugaron, Estadisticas resumidas)      
Ganados(Quienes jugaron, Estadisticas resumidas)


Ejercicio 4.-
Cliente(N° de cliente, Descuento, Saldo, Direcciones de envio)
Tiene(N° de cliente)
Limite de crédito(No superar 3’000’000)
Pedido Cabezera(Direccion de envio, N° de cliente, Fecha de pedido)
Hace un(N° de cliente)
Pedido Cuerpo(Cantidad, N° de articulo)
Articulo(N° de articulo, Fabrica que lo distribuye, Existencia)
De un(N° de articulo)
Fabrica(N° de fabrica, Telefono de contacto, Cantidad de artículos)
Tiene(N° de articulo)

Normalizado:
Cliente(N° de cliente, Descuento, Saldo, Id_direccion)
Direcciones(Id_direccion, direccion1, direccion2)
Tiene(N° de cliente)
Limite de crédito(No superar 3’000’000)
Pedido Cabezera(Id_direccion, N° de cliente, Id_fecha)
Fecha de pedido(Id_fecha, dia, mes, año)
Hace un(N° de cliente)
Pedido Cuerpo(Cantidad, N° de articulo)
Articulo(N° de articulo, Fabrica que lo distribuye, Existencia)
De un(N° de articulo)
Fabrica(N° de fabrica, Telefono de contacto, Cantidad de artículos)
Tiene(N° de articulo)


Ejercicio 5.-
Provedor(RUI, Direccion, Telefono, Pagina web, Nombre)
Pone en stock(RUI, ID)
Compra(ID, Cliente, Fecha, Descuento, Monto final)
Cliente(RUI, Nombre, Direccion, Telefono)
Hace(RUI, ID)
Producto(ID, Cantidad en stock, Nombre del provedor, Nombre Precio)
De un(ID,ID)
Categoria N(ID, Cantidad en stock, Nombre del provedor, Nombre, Precio, Descripcion)

Normalizado:
Provedor(RUI, Id_direccion, Id_datos)
Datos(Id_datos, Telefono, Pagina web, nombre)
Direccion(Id_direccion, calle, numero, colonia, municipio)
Pone en stock(RUI, ID)
Compra(ID, Cliente, Fecha, Descuento, Monto final)
Cliente(RUI, Nombre, Direccion, Telefono)
Hace(RUI, ID)
Producto(ID, Nombre del provedor,Id_categoria)
De un(ID,ID)
Categoria N(ID, Nombre del provedor,Id_categoria)
Datos categoria(Id_categoria, Cantidad en stock, precio, nombre, descripcion)


Ejercicio 6.-
Aeropuerto(Codigo, Pais, Nombre, Ciudad, Aterrizaje, Despegue)
Hay(Codigo)
Hay(Codigo, N° de vuelo)
Avion(Id_avion, Id_modelo)
Modelo(Id_modelo, marca)
Programa de vuelo(Dias en los que es el vuelo, N° de vuelo, Linea aérea)
Escala técnica intermedia(N° de orden)
Vuelo(Id_vuelo,Id_fecha, Plazas vacias, Modelo de avión utilizado)
Fecha(Id_fecha, dia, mes)

Normalizado:

Ejercicio 7.- 
Complejo deportivo de un único deporte(Localizacion, Jefe de organización individual, Area total ocupada)
Complejo polideportivo(Localizacion, Jefe de organización individual, Area total ocupada)            Evento(Id_evento, Fecha, Duracion, N° de participantes) 
Comisario( Observador) Comisario(Juez)

Normalizado:


Complejo deportivo de un único deporte(Localizacion, Jefe de organización individual, Area total ocupada)
Complejo polideportivo(Localizacion, Jefe de organización individual, Area total ocupada)            Evento(Id_evento, Id_fecha, Duracion, N° de participantes)
Fecha(Id_fecha,hora, dia)
Comisario( Observador) 
Comisario(Juez)

Ejercicio 8.-
Torneo(Año, Sede)
Arbitro(Nombres, N° de arbitro)
Etapa Octavos( Premio de consolacion)
Etapa Cuartos(Premio cuartos)
Etapa Semifinal(Premio Semifinal)
Etapa Final(Premio mayor)
Jugador(N° de participante, Nombre, Nacionalidad)
Entrenador(Nombre, Tipo de entrenamiento)

Normalizado:
Torneo(Año, Sede)
Arbitro(N° de arbitro, Id_nombre)
Nombres(Id_nombre, nombre, apellido paterno, apellido materno)
Etapa Octavos( Premio de consolacion)
Etapa Cuartos(Premio cuartos)
Etapa Semifinal(Premio Semifinal)
Etapa Final(Premio mayor)
Jugador(N° de participante, Id_nombre, Nacionalidad)
Entrenador(Id_entrenador, Id_nombre, Tipo de entrenamiento)

Ejercicio 9.-
Cine(Cartelera, Horario, Telefono, Direccion, Nombre)
Promocion(Descripcion, Descuento)
Sala(Cantidad de butacas, N° de sala, Nombre)
Pelicula(Año,Idioma, Titulo de distribución, Titulo original, Genero, Fecha de estreno)
Trabajador(Nacionalidad, Nombre)
Director(Nacionalidad, Nombre, N° de películas dirigidas)
Actor(Nacionalidad, Nombre, N° de películas actuadas)
Opinion(N° de opinión, Calificacion, Comentario)
Persona(Nombre, Edad)

Normalizado:
Cine(Id_cine, Id_direccionId_cartelera, Telefono, Nombre)
Direccion(Id_direccion, calle, numero, colonia, municipio)
Cartelera(Id_cartelera, cartelera, horario)
Promocion(Descripcion, Descuento)
Sala(Cantidad de butacas, N° de sala, Nombre)
Pelicula(Id_pelicula, Año,Idioma, Titulo de distribución, Titulo original, Genero, Fecha de estreno)
Trabajador(Id_trabajador, Nacionalidad, Id_nombre)
Nombres(Id_nombre, nombre, apellido paterno, apellido materno)
Director(Id_director, Nacionalidad, Id_nombre, N° de películas dirigidas)
Actor(Id_actor, Nacionalidad, Id_nombre, N° de películas actuadas)
Opinion(N° de opinión, Calificacion, Comentario)
Persona(Id_personaId_nombre, Edad)

Ejercicio 10.-
Mueble(Nombre)
Mueble 1 pieza(Nombre, ID)
Mueble N pieza(Nombre, ID)
Estante(Pasillo, Altura, Cantidad de piezas)

Normalizado:
Mueble(Nombre)
Mueble 1 pieza(Nombre, ID)
Mueble N pieza(Nombre, ID)
Estante(Pasillo, Altura, Cantidad de piezas)

Conclusión

Con lo que investigue concluyo que la normalización es una forma de organizar una base de datos de manera practica, pero que también no hay que exagerar al normalizarla, pues puede que no sea necesario hacerlo a un nivel 5FN, o incluso a un 3FN.


Referencias

http://www.eet2mdp.edu.ar/alumnos/MATERIAL/MATERIAL/info/infonorma.pdf
http://es.wikipedia.org/wiki/Normalizaci%C3%B3n_de_bases_de_datos
https://support.microsoft.com/kb/283878/es

No hay comentarios.:

Publicar un comentario