Está en la página 1de 31

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

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:

DNI

Apellido o Nombre

B es funcionalmente dependiente de A

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.

Mg. Orleans Moiss Glvez Tapia

Aspectos importantes a considerar a la hora


de disear
Cada atributo debe ser monovaluado

Sucursales
Nro_Suc
1
2
3
4
5
6

Nombre
Sacramento
Higueras
Espigas
Santa Rita
Excelencia
Castillo

Telefonos
4234322 4234467
4332323
4223434 4221367
4221123 4335678
4228976 4223490
4962579

no es vlido
atributo multivaluado
Mg. Orleans Moiss Glvez Tapia

Direccion
Toranzo
350
C.Cabot
3350
Aberastain
333
Av. Libertador 1230
Av. Libertador 30
Ig. de la Roza 671

Norte
Oeste
Sur
Oeste
Oeste

no es vlido
atributo compuesto

Localidad
Desamparados
Rivadavia
Concepcion
Desamparados
Capital
Caucete

Departamento
Capital
Rivadavia
Capital
Capital
Capital
Caucete

Sucursales
Nro_Suc
1
2
3
4
5
6

Nombre
Sacramento
Higueras
Espigas
Santa Rita
Excelencia
Castillo

Telefonos
4234322 4234467
4332323
4223434 4221367
4221123 4335678
4228976 4223490
4962579

Mg. Orleans Moiss Glvez Tapia

Direccion
Toranzo
350
C.Cabot
3350
Aberastain
333
Av. Libertador 1230
Av. Libertador 30
Ig. de la Roza 671

Norte
Oeste
Sur
Oeste
Oeste

Localidad
Desamparados
Rivadavia
Concepcion
Desamparados
Capital
Caucete

Departamento
Capital
Rivadavia
Capital
Capital
Capital
Caucete

Aspectos importantes a considerar a la


hora de disear
Cada atributo debe ser monovaluado:
Esto implica que la relacin anterior debiera reemplazarse por las siguientes:

Sucursales
Nro_Suc
1
2
3
4
5
6

Nombre
Sacramento
Higueras
Espigas
Santa Rita
Excelencia
Castillo

Mg. Orleans Moiss Glvez Tapia

Direccion
Toranzo 350 Norte
C.Cabot 3350 Oeste
Aberastain 333 Sur
Av. Libertador 1230 Oeste
Av. Libertador 30 Oeste
Ig. de la Roza 671

Localidad
Desamparados
Rivadavia
Concepcion
Desamparados
Capital
Caucete

Departamento
Capital
Rivadavia
Capital
Capital
Capital
Caucete

Aspectos importantes a considerar a la


hora de disear

Telefonos_Suc
Nro_Suc
1
3
4
5
1
2
3
4
5
6

Mg. Orleans Moiss Glvez Tapia

Telefono
4234467
4221367
4335678
4223490
4234322
4332323
4223434
4221123
4228976
4962579

Aspectos importantes a considerar a la


hora de disear
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)
Mg. Orleans Moiss Glvez Tapia

Evitar anomalas de
actualizacin

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

Proceso de Normalizacin
1FN
o
o

Si los valores en las celdas son atmicos


Si dos filas o tuplas no son idnticas

2FN
Si y slo si est en 1FN y los atributos NO CLAVE dependen
funcionalmente de la llave primaria (completa).
A
C
A
B

C
A

Mg. Orleans Moiss Glvez Tapia

3FN
Si est en 2FN y no existen dependencias transitivas.

AB
AC
AE
CD
EF

Mg. Orleans Moiss Glvez Tapia

EJERCICIO COMPLETO - 01
1. ordenes (id_orden, fecha, id_cliente, nom_cliente, estado, num_art, nom_art, cant, precio)
Ordenes
Id_orden
2301
2301
2301
2302
2303
2303

Fecha
23/02/11
23/02/11
23/02/11
25/02/11
27/02/11
27/02/11

Id_cliente Nom_cliente
101
Martin
101
Martin
101
Martin
107
Herman
110
Pedro
110
Pedro

Estado Num_art
Caracas
3786
Caracas
4011
Caracas
9132
Coro
5794
Maracay
4011
Maracay
3141

nom_art
Red
Raqueta
Paq-3
Paq-6
Raqueta
Funda

cant
3
6
8
4
2
2

Precio
35,00
65,00
4,75
5,00
65,00
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.
Mg. Orleans Moiss Glvez Tapia

EJERCICIO COMPLETO
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
2301
2302
2303

Fecha
23/02/11
25/02/11
27/02/11

Id_cliente
101
107
110

Articulos_ordenes
Id_orden Num_art
2301
3786
2301
4011
2301
9132
2302
5794
2303
4011
2303
3141

nom_art
Red
Raqueta
Paq-3
Paq-6
Raqueta
Funda

Nom_cliente
Martin
Herman
Pedro

cant
3
6
8
4
2
2

Estado
Caracas
Coro
Maracay

Precio
35,00
65,00
4,75
5,00
65,00
10,00

Las tablas quedan ahora de la siguiente manera.


Articulos_ordenes (id_orden, num_art, cant)
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.

Mg. Orleans Moiss Glvez Tapia

Articulos_ordenes
Id_orden Num_art
2301
3786
2301
4011
2301
9132
2302
5794
2303
4011
2303
3141

cant
3
6
8
4
2
2

Articulos ( num_art, nom_art, precio)


Articulos
Num_art
3786
4011
9132
5794
3141

nom_art
Red
Raqueta
Paq-3
Paq-6
Funda

Precio
35,00
65,00
4,75
5,00
10,00

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.
Mg. Orleans Moiss Glvez Tapia

ordenes (id_orden, fecha, id_cliente)


Ordenes
Id_orden
2301
2302
2303

Fecha
23/02/11
25/02/11
27/02/11

Id_cliente
101
107
110

Clientes (id_cliente, nom_cliente, estado)


Clientes
Id_cliente Nom_cliente
101
Martin
107
Herman
110
Pedro

Estado
Caracas
Coro
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)

Cul sera el Modelo Relacional?


ordenes (id_orden, fecha, id_cliente)
Ordenes
Id_orden
2301
2302
2303

Fecha
23/02/11
25/02/11
27/02/11

Id_cliente
101
107
110

Clientes (id_cliente, nom_cliente, estado)


Clientes
Id_cliente Nom_cliente
101
Martin
107
Herman
110
Pedro

Estado
Caracas
Coro
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

Ejemplo de
1FN
Mg. Orleans Moiss Glvez Tapia

No se permiten vectores de campos en una columna

IDCliente Nombre
45
Francisco
275
Miguel

Telefono
444444444
555555555,666666666

No se permiten grupos repetidos en varias columnas

IDCliente Nombre
45
Francisco
275
Miguel

Telefono Telefono2 Telefono3


444444444 NULL
NULL
555555555 666666666 NULL

IDCliente Nombre
45
Francisco
275
Miguel
275
Miguel
Mg. Orleans Moiss Glvez Tapia

Telefono
444444444
555555555
666666666

CLIENTES

IDCliente Nombre
45
Francisco
275
Miguel
275
Miguel

Telefono
444444444
555555555
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
Mg. Orleans Moiss Glvez Tapia

TELEFONOS_CLIENTES

IDCliente Telefono
45
444444444
275
555555555
275
666666666

CLIENTES

IDCliente Nombre
45
Francisco
275
Miguel
275
Miguel

Telefono
444444444
555555555
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
Mg. Orleans Moiss Glvez Tapia

TELEFONOS_CLIENTES

IDCliente Telefono
45
444444444
275
555555555
275
666666666

Ejemplo de
2FN
Mg. Orleans Moiss Glvez Tapia

LINEAS_PEDIDO

IDCliente
29
46
204
144

IDProducto
42
9
42
10

Cantidad
1
5
1
1

Nombre_producto
Zapatillas deportivas de tenis
Baln reglamentario de baloncesto
Zapatillas deportivas de tenis
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.

LINEAS_PEDIDO

IDCliente
29
46
204
144

PRODUCTOS

IDProducto
9
10
42

Mg. Orleans Moiss Glvez Tapia

IDProducto
42
9
42
10

Cantidad
1
5
1
1

Nombre_producto
Baln reglamentario de baloncesto
Zapatillas deportivas de rugby
Zapatillas deportivas de tenis

Ejemplo de
3FN
Mg. Orleans Moiss Glvez Tapia

CARGA_DIARIA
IDServidor
21
21
21
34
34
34
66
66
66

Fecha
2009-01-14
2009-01-15
2009-01-16
2009-01-14
2009-01-15
2009-01-16
2009-01-14
2009-01-15
2009-01-16

IDServicio
1
9
22
3
22
22
9
22
1

Suponiendo:

Nombre_servicio
Oracle
MySQL
Apache
PostgreSQL
Apache
Apache
MySQL
Apache
Oracle 10g

Carga
100
100
85
74
58
67
98
94
84

Fecha

IdServidor

IdServicio

Nombre_servicio

Carga

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
21
21
21
34
34
34
66
66
66

Fecha
2009-01-14
2009-01-15
2009-01-16
2009-01-14
2009-01-15
2009-01-16
2009-01-14
2009-01-15
2009-01-16

SERVICIOS

IDServicio
1
9
22
3
22
22
9
22
1

Mg. Orleans Moiss Glvez Tapia

Carga
100
100
85
74
58
67
98
94
84

IDServicio
1
9
22
3
22
22
9
22
1

Nombre_servicio
Oracle
MySQL
Apache
PostgreSQL
Apache
Apache
MySQL
Apache
Oracle 10g

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

Reescribiendo
EMPLEADOS

Mg. Orleans Moiss Glvez Tapia

Luego de aplicar 1 FN se obtiene:


EMAILS

EMPLEADOS

nombre

nss

puesto

salario

Para la 3 FN qu
tabla analizar?

Las tablas anteriores al mismo tiempo tambin estn en 2 FN.


Mg. Orleans Moiss Glvez Tapia

Luego de aplicar 3 FN se obtiene:


EMPLEADOS

PUESTOS

puesto
Jefe de rea
Administrativo
Administrativo
...
Cul sera el Modelo Relacional?

Mg. Orleans Moiss Glvez Tapia

salario
3000
1500
1500
...

Resumiendo:

Mg. Orleans Moiss Glvez Tapia

Resumiendo:

Mg. Orleans Moiss Glvez Tapia

También podría gustarte