Upload
jhon-dc
View
33
Download
0
Embed Size (px)
DESCRIPTION
base de datos 1
Citation preview
FACULTAD DE INGENIERIA
EAP DE INGENIERA DE SISTEMAS
GESTIN DE DATOS E INFORMACIN II
Sesin01: Formas Normales de una Base de Datos
Mg. Orleans Moiss Glvez Tapia
Mg. Orleans Moiss Glvez Tapia
DEPENDENCIA FUNCIONAL
Es una conexin entre dos o ms atributos. Por ejemplo si conocemos el valor
de FechaDeNacimiento podemos conocer el valor de edad.
Las dependencias funcionales del sistema se escriben utilizando una flecha,
de la siguiente manera:
B es funcionalmente dependiente de A
Mg. Orleans Moiss Glvez Tapia
DEPENDENCIA FUNCIONAL
Es una conexin entre dos o ms atributos. Por ejemplo si conocemos el DNI
podemos conocer el Apellido o el Nombre de una persona en particular.
Las dependencias funcionales del sistema se escriben utilizando una flecha,
de la siguiente manera:
B es funcionalmente dependiente de A
DNI Apellido o Nombre
Mg. Orleans Moiss Glvez Tapia
DEPENDENCIA FUNCIONAL TRANSITIVA
Simblicamente:
Con la fecha de nacimiento podemos deducir la edad, con la edad
podemos deducir si una persona tiene permiso de conducir.
Cada atributo debe ser monovaluado
Nro_Suc Nombre Localidad Departamento
1 Sacramento 4234322 4234467 Toranzo 350 Norte Desamparados Capital
2 Higueras 4332323 C.Cabot 3350 Oeste Rivadavia Rivadavia
3 Espigas 4223434 4221367 Aberastain 333 Sur Concepcion Capital
4 Santa Rita 4221123 4335678 Av. Libertador 1230 Oeste Desamparados Capital
5 Excelencia 4228976 4223490 Av. Libertador 30 Oeste Capital Capital
6 Castillo 4962579 Ig. de la Roza 671 Caucete Caucete
Direccion Telefonos
no es vlido
atributo multivaluado
no es vlido
atributo compuesto
Sucursales
Aspectos importantes a considerar a la hora
de disear
Mg. Orleans Moiss Glvez Tapia
Nro_Suc Nombre Localidad Departamento
1 Sacramento 4234322 4234467 Toranzo 350 Norte Desamparados Capital
2 Higueras 4332323 C.Cabot 3350 Oeste Rivadavia Rivadavia
3 Espigas 4223434 4221367 Aberastain 333 Sur Concepcion Capital
4 Santa Rita 4221123 4335678 Av. Libertador 1230 Oeste Desamparados Capital
5 Excelencia 4228976 4223490 Av. Libertador 30 Oeste Capital Capital
6 Castillo 4962579 Ig. de la Roza 671 Caucete Caucete
Direccion Telefonos
Sucursales
Mg. Orleans Moiss Glvez Tapia
Cada atributo debe ser monovaluado: Esto implica que la relacin anterior debiera reemplazarse por las siguientes:
Aspectos importantes a considerar a la hora de disear
Nro_Suc Nombre Localidad Departamento
1 Sacramento Toranzo 350 Norte Desamparados Capital
2 Higueras C.Cabot 3350 Oeste Rivadavia Rivadavia
3 Espigas Aberastain 333 Sur Concepcion Capital
4 Santa Rita Av. Libertador 1230 Oeste Desamparados Capital
5 Excelencia Av. Libertador 30 Oeste Capital Capital
6 Castillo Ig. de la Roza 671 Caucete Caucete
Direccion
Sucursales
Mg. Orleans Moiss Glvez Tapia
Nro_Suc Telefono
1 4234467
3 4221367
4 43356785 4223490
1 4234322
2 4332323
3 4223434
4 4221123
5 4228976
6 4962579
Telefonos_Suc
Aspectos importantes a considerar a la hora de disear
Mg. Orleans Moiss Glvez Tapia
Reduccin de valores redundantes:
Dentro de los principales objetivos en el
diseo de relaciones
Minimizar el espacio de
almacenamiento
que ocupan las relaciones
base (archivos)
Evitar anomalas de
actualizacin
Aspectos importantes a considerar a la hora de disear
Mg. Orleans Moiss Glvez Tapia
Normalizacin
Tcnica para producir un conjunto de relaciones
pertinentes a travs de la mejor estructuracin de las entidades involucradas.
Permite eliminar redundancia de datos y simplificar el mantenimiento de los datos
Inicia examinando las relaciones existentes entre atributos.
Mg. Orleans Moiss Glvez Tapia
2FN Si y slo si est en 1FN y los atributos NO CLAVE dependen funcionalmente de la llave primaria (completa).
1FN o Si los valores en las celdas son atmicos o Si dos filas o tuplas no son idnticas
Proceso de Normalizacin
Mg. Orleans Moiss Glvez Tapia
B
A C
D
E
B
A
D
E
A C
3FN Si est en 2FN y no existen dependencias transitivas.
Mg. Orleans Moiss Glvez Tapia
A B
A C
A E
C D
E F
1. ordenes (id_orden, fecha, id_cliente, nom_cliente, estado, num_art, nom_art, cant, precio)
Ordenes
Id_orden Fecha Id_cliente Nom_cliente Estado Num_art nom_art cant Precio 2301 23/02/11 101 Martin Caracas 3786 Red 3 35,00
2301 23/02/11 101 Martin Caracas 4011 Raqueta 6 65,00 2301 23/02/11 101 Martin Caracas 9132 Paq-3 8 4,75
2302 25/02/11 107 Herman Coro 5794 Paq-6 4 5,00 2303 27/02/11 110 Pedro Maracay 4011 Raqueta 2 65,00
2303 27/02/11 110 Pedro Maracay 3141 Funda 2 10,00
PRIMERA FORMAL NORMAL (1FN)
La 1FN prohbe los grupos repetidos, por lo tanto tenemos que convertir a la primera
forma normal. Los pasos a seguir son:
Tenemos que eliminar los grupos repetidos (los cuales forman una nueva tabla).
Tenemos que crear una nueva tabla con la PK de la tabla base y el grupo que no se
repite.
EJERCICIO COMPLETO - 01
Mg. Orleans Moiss Glvez Tapia
Los registros quedan ahora conformados en dos tablas que llamaremos
ORDENES y ARTICULOS_ORDENES
ordenes (id_orden, fecha, id_cliente, nom_cliente, estado) Articulos_ordenes (id_orden, num_art, nom_art, cant, precio)
Ordenes Id_orden Fecha Id_cliente Nom_cliente Estado
2301 23/02/11 101 Martin Caracas 2302 25/02/11 107 Herman Coro
2303 27/02/11 110 Pedro Maracay
Articulos_ordenes
Id_orden Num_art nom_art cant Precio 2301 3786 Red 3 35,00
2301 4011 Raqueta 6 65,00 2301 9132 Paq-3 8 4,75
2302 5794 Paq-6 4 5,00 2303 4011 Raqueta 2 65,00
2303 3141 Funda 2 10,00
EJERCICIO COMPLETO
SEGUNDA FORMAL
NORMAL (2FN)
Determinar cules columnas
que no son llave no dependen
de la llave primaria de la
tabla.
Eliminar esas columnas de la
tabla base.
Crear una segunda tabla con
esas columnas y la(s)
columna(s) de la PK de la
cual dependen.
Las tablas quedan ahora de la siguiente manera. Articulos_ordenes (id_orden, num_art, cant)
Articulos_ordenes
Id_orden Num_art cant
2301 3786 3 2301 4011 6
2301 9132 8 2302 5794 4
2303 4011 2 2303 3141 2
Articulos ( num_art, nom_art, precio)
Articulos
Num_art nom_art Precio 3786 Red 35,00
4011 Raqueta 65,00 9132 Paq-3 4,75
5794 Paq-6 5,00 3141 Funda 10,00
Mg. Orleans Moiss Glvez Tapia
TERCERA FORMAL NORMAL
(3FN)
Determinar las columnas que son
dependientes de otra columna no
llave.
Eliminar esas columnas de la tabla
base.
Crear una segunda tabla con esas
columnas y con la columna no llave
de la cual son dependientes.
Al observar las tablas que hemos
creado, nos damos cuenta que tanto la
tabla ARTICULOS, como la tabla
ARTICULOS_ORDENES se
encuentran en 3FN. Sin embargo la
tabla ORDENES no lo est, ya que
NOM_CLIENTE y ESTADO son
dependientes de ID_CLIENTE, y esta
columna no es la llave primaria.
ordenes (id_orden, fecha, id_cliente)
Ordenes Id_orden Fecha Id_cliente
2301 23/02/11 101 2302 25/02/11 107
2303 27/02/11 110
Clientes (id_cliente, nom_cliente, estado)
Clientes
Id_cliente Nom_cliente Estado
101 Martin Caracas
107 Herman Coro 110 Pedro Maracay
Por lo tanto la base de datos quedara: ordenes (id_orden, fecha, id_cliente)
Clientes (id_cliente, nom_cliente, estado)
Articulos ( num_art, nom_art, precio)
Articulos_ordenes (id_orden, num_art, cant)
Mg. Orleans Moiss Glvez Tapia
ordenes (id_orden, fecha, id_cliente)
Ordenes Id_orden Fecha Id_cliente
2301 23/02/11 101 2302 25/02/11 107
2303 27/02/11 110
Clientes (id_cliente, nom_cliente, estado)
Clientes
Id_cliente Nom_cliente Estado
101 Martin Caracas
107 Herman Coro 110 Pedro Maracay
Por lo tanto la base de datos quedara: ordenes (id_orden, fecha, id_cliente)
Clientes (id_cliente, nom_cliente, estado)
Articulos ( num_art, nom_art, precio)
Articulos_ordenes (id_orden, num_art, cant)
Mg. Orleans Moiss Glvez Tapia
Cul sera el Modelo Relacional?
Ejemplo de
1FN
Mg. Orleans Moiss Glvez Tapia
IDCliente Nombre Telefono
45 Francisco 444444444
275 Miguel 555555555,666666666
No se permiten vectores de campos en una columna
IDCliente Nombre Telefono Telefono2 Telefono3
45 Francisco 444444444 NULL NULL
275 Miguel 555555555 666666666 NULL
No se permiten grupos repetidos en varias columnas
IDCliente Nombre Telefono
45 Francisco 444444444
275 Miguel 555555555
275 Miguel 666666666 Mg. Orleans Moiss Glvez Tapia
IDCliente Nombre
45 Francisco
275 Miguel
IDCliente Telefono
45 444444444
275 555555555
275 666666666
IDCliente Nombre Telefono
45 Francisco 444444444
275 Miguel 555555555
275 Miguel 666666666
PRIMERA FORMAL NORMAL (1FN)
Tenemos que eliminar los grupos repetidos (los cuales forman una nueva tabla).
Tenemos que crear una nueva tabla con la PK de la tabla base y el grupo que no se
repite.
CLIENTES
CLIENTES TELEFONOS_CLIENTES
Mg. Orleans Moiss Glvez Tapia
IDCliente Nombre Telefono
45 Francisco 444444444
275 Miguel 555555555
275 Miguel 666666666
PRIMERA FORMAL NORMAL (1FN)
Tenemos que eliminar los grupos repetidos (los cuales forman una nueva tabla).
Tenemos que crear una nueva tabla con la PK de la tabla base y el grupo que no se
repite.
CLIENTES
IDCliente Nombre
45 Francisco
275 Miguel
CLIENTES
IDCliente Telefono
45 444444444
275 555555555
275 666666666
TELEFONOS_CLIENTES
Mg. Orleans Moiss Glvez Tapia
Ejemplo de
2FN
Mg. Orleans Moiss Glvez Tapia
IDCliente IDProducto Cantidad Nombre_producto
29 42 1 Zapatillas deportivas de tenis
46 9 5 Baln reglamentario de baloncesto
204 42 1 Zapatillas deportivas de tenis
144 10 1 Zapatillas deportivas de rugby
Los pasos para aplicar la segunda forma normal son muy sencillos: encontrar las claves
candidatas (compuestas), que identifican de manera nica el registro; comprobar que los campos
que no forman parte de la clave candidata y no son parte de ella (en el ejemplo de antes ni
IDCliente ni IDProducto deben ser analizados) dependen totalmente de la clave candidata.
IDCliente IDProducto Cantidad
29 42 1
46 9 5
204 42 1
144 10 1
LINEAS_PEDIDO
IDProducto Nombre_producto
9 Baln reglamentario de baloncesto
10 Zapatillas deportivas de rugby
42 Zapatillas deportivas de tenis
PRODUCTOS
LINEAS_PEDIDO
Mg. Orleans Moiss Glvez Tapia
Ejemplo de
3FN
Mg. Orleans Moiss Glvez Tapia
IDServidor Fecha IDServicio Nombre_servicio Carga
21 2009-01-14 1 Oracle 100
21 2009-01-15 9 MySQL 100
21 2009-01-16 22 Apache 85
34 2009-01-14 3 PostgreSQL 74
34 2009-01-15 22 Apache 58
34 2009-01-16 22 Apache 67
66 2009-01-14 9 MySQL 98
66 2009-01-15 22 Apache 94
66 2009-01-16 1 Oracle 10g 84
Una tabla est en tercera forma normal siempre que est en segunda forma normal (y por
consiguiente en primera) y todos sus campos no primarios (campos que no forman parte de una
clave candidata) dependen nicamente de la clave candidata.
CARGA_DIARIA
IDServidor Fecha IDServicio Carga
21 2009-01-14 1 100
21 2009-01-15 9 100
21 2009-01-16 22 85
34 2009-01-14 3 74
34 2009-01-15 22 58
34 2009-01-16 22 67
66 2009-01-14 9 98
66 2009-01-15 22 94
66 2009-01-16 1 84
CARGA_DIARIA
IDServicio Nombre_servicio
1 Oracle
9 MySQL
22 Apache
3 PostgreSQL
22 Apache
22 Apache
9 MySQL
22 Apache
1 Oracle 10g
SERVICIOS
Mg. Orleans Moiss Glvez Tapia
Fecha
Carga
Nombre_servicio IdServidor IdServicio
Suponiendo:
Ejercicio Calificado
Tenemos una empresa pblica donde los puestos de trabajo estn regulados por el
Estado, de modo que las condiciones salariales estn determinadas por el puesto.
Se ha creado el siguiente esquema relacional:
EMPLEADOS(nss, nombre, puesto, salario, emails) con nss como clave primaria.
Mg. Orleans Moiss Glvez Tapia
EMPLEADOS
EMPLEADOS
Mg. Orleans Moiss Glvez Tapia
Reescribiendo
EMPLEADOS EMAILS
Mg. Orleans Moiss Glvez Tapia
Luego de aplicar 1 FN se obtiene:
Las tablas anteriores al mismo tiempo tambin estn en 2 FN.
nombre
salario nss puesto
Para la 3 FN qu
tabla analizar?
puesto salario
Jefe de rea 3000
Administrativo 1500
Administrativo 1500
... ...
EMPLEADOS PUESTOS
Mg. Orleans Moiss Glvez Tapia
Luego de aplicar 3 FN se obtiene:
Cul sera el Modelo Relacional?
Mg. Orleans Moiss Glvez Tapia
Resumiendo:
Mg. Orleans Moiss Glvez Tapia
Resumiendo: