domingo, 30 de marzo de 2014

Normalizacion (2)

Introducción

Cuando se realiza el modelado de una base de datos, suelen cometerse algunos errores como caer en la redundancia de información. Estos errores perjudican a futuro la base de datos, pues si ésta no se planifica correctamente, ocurrirán problemas cuando se intente eliminar una tupla, pues se puede eliminar información adicional. Es por eso que una vez que se tiene el modelo relacional, se debe de seguir el proceso de normalización.

Primera forma normal (1FN)

Esta forma consiste en verificar la atomicidad de los distintos atributos de las relaciones. (Marabini) Un atributo es atómico cuando es indivisible. Los atributos que se deben de verificar son aquellos que sean compuestos o multivaluados.
Primeramente, y de manera importante, se debe de tener contemplado el propósito de cada atributo, es decir, que usos futuros se le darán. Esto determinara si el atributo debe ser dividido en otros o dejarese intacto. El ejemplo más común es el atributo Nombre, el cual puede ser tomado como un solo atributo indivisible o separarse en sus componentes Nombres, ApellidoPaterno y ApellidoPaterno. Hacer una u otra opción depende de la finalidad del atributo.

Segunda forma normal (2FN)

Para que en una relación se cumpla la 2FN, tiene que cumplirse de manera obligatoria la 1FN. Esta forma consiste en asegurar que en la relación, todos los atributos no clave dependan de la clave maestra, y no de ningún subconjunto de ella (Mora).
                En caso de que algún atributo no cumpla dicha dependencia, se procede a separarlo en una nueva tabla (Hispano, 2003), dentro de la cual si pueda mantener una dependencia con la clave maestra de dicha tabla.

Tercera forma normal (3FN)

Aun cuando un atributo dependa de la clave maestra, puede depender simultáneamente de otro atributo. Estas dependencias se llaman dependencias transitivas. Para que una relación se encuentre en 3FN, además de tener que encontrarse antes en 2FN, debe de eliminar las dependencias transitivas. (Mora)
                Nuevamente se procede a separar los atributos que se encuentren en dependencia transitiva, creando nuevas tablas en las que los atributos mantengan una dependencia exclusivamente con la clave maestra de la nueva tabla.

Ejercicios

Ejercicio 1

Cliente(ID_cliente, Nombre)
Coche(ID_coche, Accidentes registrados, ID_cliente)

Ejercicio2

Usuario(DNI, Nombres, Apellidos)
Cliente(DNI, Nombres, Apellidos, Direccion, Telefono, Matricula)
Mecanico(DNI, Nombres, Apellidos, Fecha de contratacion, Salario, Matricula, FechaDeReparacion, Horas)
Coche(Matricula, Modelo, Color, Marca)
Coche_Nuevo(Matricula, Modelo, Color, Marca # de unidades existentes)
Coche_Usado(Matricula, Modelo, Color, Marca # de km recorridos)

Ejercicio3

Jugador(ID_Jugador, Estadisticas)
Partido(ID_Partido, Resultado, ID_Jugador)

Ejercicio4

Cliente(No. de cliente, Limite, Descuento, Saldo, Direccion de envio)
Pedido(ID_Pedido, Cabecera, Cuerpo, No.de articulo, ID_CLiente)
Artículo(No. de articulo, Descripcion, # de existencia,Fabricas que lo distribuyen)
Fábrica(No. de fabrica, # de productos que provee, Telefono, No. De articulo)

Ejercicio5

Usuario(RUT, Nombre, Direccion)
Cliente(RUT, Nombre, Direccion , Telefono, ID_Compra)
Proveedor(RUT, Nombre, Direccion , Sitio web, Telefono, ID_Venta)
Adquiere(ID_Compra, ID_Producto, Monto total, Precio, Cantidad)
Venta(ID_Venta, ID_Producto, Fecha, Nombre cliente, Descuento)
Producto(ID_Producto, Nombre proveedor, Precio actual, Nombre, Stock, ID_Categoria)
Categoria(ID_Categoria, Nombre, Descripcion)

Ejercicio6

Aeropuerto(Codigo, Ciudad, Pais, Nombre, Numero de vuelo)
Programa de vuelo(Numero de vuelo, Linea aerea, Linea, Numero de orden)
Escala tecnica(Numero de orden, ID_Vuelo)
Vuelo(ID_Vuelo, Fecha, plazas vacias, modelo de avión, ID_Avion)
Avion(ID_Avion, Modelo, capacidad, Codigo)

Ejercicio7

Sede(Presupuesto, Cantidad)
Complejo(Localizacion, Jefe de organizacion, Area)
Monodeportivos(Localizacion, Jefe de organizacion, Area)
Multideportivos(Localizacion, Jefe de organizacion, Area, Areass)
Evento(ID_Evento, Fecha, Numero de participantes, Duracion, Localizacion, ID_Comisario)
Comisario(ID_Comisario , Rol del comisario, Cantidad)

Ejercicio8

Partido(ID_Partido, Premio de consolacion, Ronda, Premio, Arbitro, Ganador, ID_torneo, Nombre_jugador)
Torneo(ID_torneo , Año, Pais, Lugar, Modalidad)
Jugador(Nombre, Nacionalidad, Premios, FechaContratacion, Posicion, Premio)
Entrenador(NombreEntrenador, Nombre_Jugador)

Ejercicio9

Pelicula(ID_Pelicula, Idioma, Subtitulos, Pais de origen, Año, URL, Resumen, Fecha de estreno, Calificacion, Duracion, Titulo original,Titulo de distribucion, Genero, Nombre_participante, ID_funcion)
Cine(Nombre_Cine, Telefono, Direccion, Numero_Sala)
Opinion(ID_Opinion, Calificacion, Comentario, ID_persona)
Participante(Nombre_Participante, Nacionalidad, ID_pelicula)
Actor(Nombre_Participante, Nacionalidad, # de películas, ID_Personaje)
Director(Nombre_Participante, Nacionalidad, # de peliculas)
Personaje(ID_Personaje)
Persona(ID_Persona, Edad, Nombre, Fecha)
Sala(Numero_Sala, Nombre, Butacas)
Funciones(ID_Funcion, Dia, hora, ID_sala)
Promocion(ID_Promocion, Descripcion, Descuento, ID_Funcion)

Ejercicio10

Mueble(Nombre, Precio, Cantidad)
Pieza(ID_Pieza, ID_Mueble, Cantidad)
Estante(ID_Estante, Altura, pasillo, ID_Pieza)

Conclusión

La normalización de las relaciones que se dan en una base de datos permite optimizar éstas, eliminando redundancias y otros problemas que pueden ser perjudiciales en determinado momento. Una vez que el modelado de la base de datos se encuentra normalizado, dicha base puede comenzar a ser creada.

Bibliografía

Hispano, M. (29 de 05 de 2003). Recuperado el 23 de 03 de 2014, de http://www.eet2mdp.edu.ar/alumnos/MATERIAL/MATERIAL/info/infonorma.pdf
Marabini, R. (s.f.). Recuperado el 23 de 03 de 2014, de http://biocomp.cnb.csic.es/~roberto/II/Docencia/SI1/Clase/Reserved/Formas_Normales.pdf
Mora, E. (s.f.). Universidad de Cantabria. Recuperado el 23 de 03 de 2014, de http://personales.unican.es/zorrillm/PDFs/Docencia/BasesDatos/Formas%20Normales.pdf


domingo, 23 de marzo de 2014

Normalización

Introducción

Cuando se realiza el modelado de una base de datos, suelen cometerse algunos errores como caer en la redundancia de información. Estos errores perjudican a futuro la base de datos, pues si ésta no se planifica correctamente, ocurrirán problemas cuando se intente eliminar una tupla, pues se puede eliminar información adicional. Es por eso que una vez que se tiene el modelo relacional, se debe de seguir el proceso de normalización.

Primera forma normal (1FN)

Esta forma consiste en verificar la atomicidad de los distintos atributos de las relaciones. (Marabini) Un atributo es atómico cuando es indivisible. Los atributos que se deben de verificar son aquellos que sean compuestos o multivaluados.
Primeramente, y de manera importante, se debe de tener contemplado el propósito de cada atributo, es decir, que usos futuros se le darán. Esto determinara si el atributo debe ser dividido en otros o dejarese intacto. El ejemplo más común es el atributo Nombre, el cual puede ser tomado como un solo atributo indivisible o separarse en sus componentes Nombres, ApellidoPaterno y ApellidoPaterno. Hacer una u otra opción depende de la finalidad del atributo.

Segunda forma normal (2FN)

Para que en una relación se cumpla la 2FN, tiene que cumplirse de manera obligatoria la 1FN. Esta forma consiste en asegurar que en la relación, todos los atributos no clave dependan de la clave maestra, y no de ningún subconjunto de ella (Mora).
                En caso de que algún atributo no cumpla dicha dependencia, se procede a separarlo en una nueva tabla (Hispano, 2003), dentro de la cual si pueda mantener una dependencia con la clave maestra de dicha tabla.

Tercera forma normal (3FN)

Aun cuando un atributo dependa de la clave maestra, puede depender simultáneamente de otro atributo. Estas dependencias se llaman dependencias transitivas. Para que una relación se encuentre en 3FN, además de tener que encontrarse antes en 2FN, debe de eliminar las dependencias transitivas. (Mora)
                Nuevamente se procede a separar los atributos que se encuentren en dependencia transitiva, creando nuevas tablas en las que los atributos mantengan una dependencia exclusivamente con la clave maestra de la nueva tabla.

Ejercicios

Ejercicio 1

Cliente(ID_cliente, Nombre, ID_coche)
Coche(ID_coche, Accidentes registrados)

Ejercicio2

Usuario(DNI, Nombres, Apellidos)
Se especializa en
Cliente(Direccion, Telefono, Matricula)
y Mecanico(Fecha de contratacion, Salario, Matricula, FechaDeReparacion, Horas)
Coche(Matricula, Modelo, Color, Marca)
Se especializa en
Nuevo(# de unidades existentes)
y Usado(# de km recorridos)

Ejercicio3

Jugador(ID_Jugador, Estadisticas, ID_Partido)
Partido(ID_Partido, Resultado)

Ejercicio4

Cliente(No. de cliente, Limite, Descuento, Saldo, Direccion de envio, ID_Pedido)
Pedido(ID_Pedido, Cabecera, Cuerpo, No.de articulo)
Artículo(No. de articulo, Descripcion, # de existencia,Fabricas que lo distribuyen)
Fábrica(No. de fabrica, # de productos que provee, Telefono, No. De articulo)

Ejercicio5

Usuario(RUT, Nombre, Direccion)
Se especializa en
Cliente(Telefono, ID_Compra)
y Proveedor(Sitio web, Telefono, ID_Venta)
Adquiere(ID_Compra, ID_Producto, Monto total, Precio, Cantidad)
Venta(ID_Venta, ID_Producto, Fecha, Nombre cliente, Descuento)
Producto(ID_Producto, Nombre proveedor, Precio actual, Nombre, Stock, ID_Categoria)
Categoria(ID_Categoria, Nombre, Descripcion)

Ejercicio6

Aeropuerto(Codigo, Ciudad, Pais, Nombre, Numero de vuelo, ID_Avion)
Programa de vuelo(Numero de vuelo, Linea aerea, Linea, Numero de orden)
Escala tecnica(Numero de orden, ID_Vuelo)
Vuelo(ID_Vuelo, Fecha, plazas vacias, modelo de avion)
Avion(ID_Avion, Modelo, capacidad, ID_Vuelo)

Ejercicio7

Sede(Presupuesto, Cantidad)
Complejo(Localizacion, Jefe de organizacion, Area, ID_Evento)
Se especializa en
Monodeportivos()
y Multideportivos(Areas)
Evento(ID_Evento, Fecha, Numero de participantes, Duracion)
Comisario(Rol del comisario, Cantidad, ID-Evento)

Ejercicio8

Partido(ID_Partido, Premio de consolacion, Ronda, Premio, Arbitro,Ganador)
Torneo(Año, Pais, Lugar, Modalidad, ID_Partido)
Jugador(Nombre, Nacionalidad, Premios, NombreEntrenador, FechaContratacion, ID_Partido, Posicion, Premio)
Entrenador(NombreEntrenador)

Ejercicio9

Pelicula(ID_Pelicula, Idioma, Subtitulos, Pais de origen, Año, URL, Resumen, Fecha de estreno, Calificacion, Duracion, Titulo original,Titulo de distribucion, Genero, Nombre_Participante)
Cine(Nombre_Cine, Telefono, Direccion, Numero_Sala)
Opinion(ID_Opinion, Calificacion, Comentario)
Participante(Nombre_Participante, Nacionalidad)
Se especializa en
Actor(# de películas, ID_Personaje)
y Director(# de peliculas)
Personaje(ID_Personaje)
Persona(ID_Persona, Edad, Nombre, ID_Opinion, Fecha)
Sala(Numero_Sala, Nombre, Butacas, ID_funcion)
Funciones(ID_Funcion, Dia, hora, ID_Pelicula, ID_Promocion)
Promocion(ID_Promocion, Descripcion, Descuento)

Ejercicio10

Mueble(Nombre, Precio, ID_Pieza, Cantidad)
Pieza(ID_Pieza, ID_Estante, Cantidad)
Estante(ID_Estante, Altura, pasillo)

Conclusión

La normalización de las relaciones que se dan en una base de datos permite optimizar éstas, eliminando redundancias y otros problemas que pueden ser perjudiciales en determinado momento. Una vez que el modelado de la base de datos se encuentra normalizado, dicha base puede comenzar a ser creada.

Bibliografía

Hispano, M. (29 de 05 de 2003). Recuperado el 23 de 03 de 2014, de http://www.eet2mdp.edu.ar/alumnos/MATERIAL/MATERIAL/info/infonorma.pdf
Marabini, R. (s.f.). Recuperado el 23 de 03 de 2014, de http://biocomp.cnb.csic.es/~roberto/II/Docencia/SI1/Clase/Reserved/Formas_Normales.pdf
Mora, E. (s.f.). Universidad de Cantabria. Recuperado el 23 de 03 de 2014, de http://personales.unican.es/zorrillm/PDFs/Docencia/BasesDatos/Formas%20Normales.pdf




lunes, 10 de marzo de 2014

Modelo relacional

Introducción

El modelo relacional originalmente era solamente la representación de, como dice su nombre, relaciones entre entidades, por medio de conjuntos de datos llamados tuplas. Sin embargo, con el paso del tiempo se fue adaptando, para un entendimiento más sencillo, para representar las relaciones por medio de tablas compuestas por registros. En este trabajo se representarán los 10 ejercicios del trabajo anterior, pero llevados al modelo relacional (en forma de conjuntos).

1.
Cliente()
Posee()
Coche(Accidentes registrados)

2.
Usuario(DNI, Nombres, Apellidos)
Se especializa en
Cliente(Direccion, Telefono)
y Mecanico(Fecha de contratacion, Salario)
Compra()
Repara(Fecha de reparacion, horas)
Coche(Matricula, Modelo, Color, Marca)
Se especializa en
Nuevo(# de unidades existentes)
y Usado(# de km recorridos)

3.
Jugador(Estadisticas)
Juega()
Partido(Resultado)

4.
Cliente(No. de cliente, Limite, Descuento, Saldo, Direccion de envio)
Realiza()
Pedido(Cabecera, Cuerpo)
Contiene()
Artículo(No. de articulo, Descripcion, # de existencia,Fabricas que lo distribuyen)
Fábrica(No. de fabrica, # de productos que provee, Telefono)
Provee()

5.
Usuario(RUT, Nombre, Direccion)
Se especializa en
Cliente(Telefono)
y Proveedor(Sitio web, Telefono)
Adquiere(Monto total, Precio, Cantidad)
Provee()
Venta(ID, Fecha, Nombre cliente, Descuento)
Contiene()
Producto(ID, Nombre proveedor, Precio actual, Nombre, Stock)
Pertenece a()
Categoria(ID, Nombre, Descripcion)
6.
Aeropuerto(Codigo, Ciudad, Pais, Nombre)
Tiene()
Programa de vuelo(Numero de vuelo, Linea aerea, Linea)
Incorpora()
Escala tecnica(Numero de orden)
Realiza()
Vuelo(Fecha, plazas vacias, modelo de avion)
Aterriza y despega()
Avion(Modelo, capacidad)

7.
Sede(Presupuesto)
Tiene(Cantidad)
Complejo(Localizacion, Jefe de organizacion, Area)
Se especializa en
Monodeportivos()
y Multideportivos(Areas)
Realiza()
Evento(Fecha, Numero de participantes, Duracion)
Asiste(Rol del comisario, Cantidad)
Comisario()

8.
Partido(Premio de consolacion, Ronda, Premio, Arbitro,Ganador)
Tiene()
Torneo(Año, Pais, Lugar, Modalidad)
Participa(Posicion, Premio)
Jugador(Nombre, Nacionalidad, Premios)
Contrata(Fecha)
Entrenador(Nombre)
9.
Pelicula(ID, Idioma, Subtitulos, Pais de origen, Año, URL, Resumen, Fecha de estreno, Calificacion, Duracion, Titulo original,Titulo de distribucion, Genero)
Exhibe()
Tiene()
Realiza()
Cine(Nombre, Telefono, Direccion)
Opinion(ID, Calificacion, Comentario)
Participante(Nombre, Nacionalidad)
Se especializa en
Actor(# de peliculas)
y Director(# de peliculas)
Actua()
Personaje()
Escribe(Fecha)
Persona(Edad, Nombre)
Tiene()
Sala(Numero, Nombre, Butacas)
Proyecta()
Funciones(Dia, hora)
Tiene()
Promocion(Descripcion, Descuento)

10.
Mueble(Nombre, Precio)
Contiene(Cantidad)
Pieza()
Esta en(Cantidad)
Estante(Altura, pasillo)

Conclusión

El modelo relacional ofrece una visión más compacta de las relaciones y los atributos de cada entidad, que en el modelo entidad-relación pueden volverse un desorden. Sin embargo, los muestra de una manera un poco desordenada (o al menos eso sucedió en este trabajo) debido a que es difícil ilustrar el orden de las relaciones usando solamente los conjuntos. A pesar de esto, el modelo relacional es el más utilizado actualmente en el modelado de bases de datos.