Date post: | 30-May-2018 |
Category: |
Documents |
Upload: | lina-rosnaira |
View: | 232 times |
Download: | 0 times |
of 79
8/14/2019 Normalizacion - 1 Junio
1/79
A travs del siguiente ejercicio se intenta afirmar los conocimientos de normalizacin con unejemplo simplificado de una base de datos para una pequea biblioteca.
CodLibro Titulo Autor Editorial NombreLector FechaDev
1001 Variable compleja Murray Spiegel McGraw HillPrez Gmez,Juan
15/04/2005
1004 Visual Basic 5 E. Petroustsos Anaya Ros Tern, Ana 17/04/2005
1005 Estadstica Murray Spiegel McGraw Hill Roca, Ren 16/04/2005
1006 Oracle UniversityNancy Greenbergy Priya Nathan
Oracle Corp.Garca Roque,Luis
20/04/2005
1007 Clipper 5.01 Ramalho McGraw HillPrez Gmez,Juan 18/04/2005
Esta tabla no cumple el requisito de la Primera Forma Normal (1NF) de slo tener camposatmicos, pues el nombre del lector es un campo que puede (y conviene) descomponerse enapellido paterno, apellido materno y nombres. Tal como se muestra en la siguiente tabla.
1NF
CodLibro Titulo Autor Editorial Paterno Materno Nombres FechaDev
1001Variablecompleja
Murray Spiegel McGraw Hill Prez Gmez Juan 15/04/2005
1004 Visual Basic 5 E. Petroustsos Anaya Ros Tern Ana 17/04/2005
1005 Estadstica Murray Spiegel McGraw Hill Roca Ren 16/04/2005
1006OracleUniversity
NancyGreenberg
OracleCorp.
Garca Roque Luis 20/04/2005
1006OracleUniversity
Priya NathanOracleCorp.
Garca Roque Luis 20/04/2005
1007 Clipper 5.01 Ramalho McGraw Hill Prez Gmez Juan 18/04/2005
Como se puede ver, hay cierta redundancia caracterstica de 1NF.
La Segunda Forma Normal (2NF) pide que no existan dependencias parciales o dicho deotra manera, todos los atributos no clave deben depender por completo de la clave primaria.Actualmente en nuestra tabla tenemos varias dependencias parciales si consideramos comoatributo clave el cdigo del libro.
8/14/2019 Normalizacion - 1 Junio
2/79
Por ejemplo, el ttulo es completamente identificado por el cdigo del libro, pero el nombredel lector en realidad no tiene dependencia de este cdigo, por tanto estos datos deben sertrasladados a otra tabla.
2NF
CodLibro Titulo Autor Editorial
1001Variablecompleja
Murray Spiegel McGraw Hill
1004 Visual Basic 5 E. Petroustsos Anaya
1005 Estadstica Murray Spiegel McGraw Hill
1006OracleUniversity
Nancy Greenberg Oracle Corp.
1006OracleUniversity
Priya Nathan Oracle Corp.
1007 Clipper 5.01 Ramalho McGraw Hill
La nueva tabla slo contendr datos del lector.
Hemos creado una tabla para contener los datos del lector y tambin tuvimos que crear lacolumna CodLector para identificar unvocamente a cada uno. Sin embargo, esta nuevadisposicin de la base de datos necesita que exista otra tabla para mantener la informacinde qu libros estn prestados a qu lectores. Esta tabla se muestra a continuacin:
CodLibro CodLector FechaDev
1001 501 15/04/2005
1004 502 17/04/2005
1005 503 16/04/2005
1006 504 20/04/2005
CodLector Paterno Materno Nombres
501 Prez Gmez Juan
502 Ros Tern Ana
503 Roca Ren
504 Garca Roque Luis
8/14/2019 Normalizacion - 1 Junio
3/79
CodLibro CodLector FechaDev
1007 501 18/04/2005
Para la Tercera Forma Normal (3NF) la relacin debe estar en 2NF y adems los atributos noclave deben ser mutuamente independientes y dependientes por completo de la claveprimaria. Tambin recordemos que dijimos que esto significa que las columnas en la tabladeben contener solamente informacin sobre la entidad definida por la clave primaria y, portanto, las columnas en la tabla deben contener datos acerca de una sola cosa.
En nuestro ejemplo en 2NF, la primera tabla conserva informacin acerca del libro, losautores y editoriales, por lo que debemos crear nuevas tablas para satisfacer los requisitosde 3NF.
3NF
Aunque hemos creado nuevas tablas para que cada una tenga slo informacin acerca deuna entidad, tambin hemos perdido la informacin acerca de qu autor ha escrito qu libroy las editoriales correspondientes, por lo que debemos crear otras tablas que relacionencada libro con sus autores y editoriales.
CodLibro Titulo
1001 Variable compleja
1004 Visual Basic 5
1005 Estadstica
1006 Oracle University
1007 Clipper 5.01
CodAutor Autor
801 Murray Spiegel
802 E. Petroustsos
803 Nancy Greenberg
804 Priya Nathan
806 Ramalho
CodEditorial Editorial
901 McGraw Hill
902 Anaya
903 Oracle Corp.
CodLibro codAutor
1001 801
1004 802
1005 801
1006 803
1006 804
1007 806
CodLibro codEditorial
1001 901
1004 902
1005 901
1006 903
1007 901
8/14/2019 Normalizacion - 1 Junio
4/79
Y el resto de las tablas no necesitan modificacin.
8/14/2019 Normalizacion - 1 Junio
5/79
CodLector Paterno Materno Nombres
501 Prez Gmez Juan
502 Ros Tern Ana
503 Roca Ren
504 Garca Roque Luis
XxxxxxxxxxxxxxxxxxxClientes
ID_Cliente Nombre
Apellidos
Nombre_Producto1 Costo_Producto1
Imagen_Producto1 Nombre_Producto2 Costo_Producto2
Imagen_Producto2 Fecha_Pedido
Cantidad_Pedido
Nombre_Cia_Envios
La tabla se ha descrito de manera abreviada pero aun as representa la idea general.
Cmo podra aadir un nuevo cliente en su tabla Clientes? Debera aadir un producto y un pedido tambin. Qu tal siquisiera emitir un informe de todos los productos que vende? No podra separar fcilmente los productos de los clientes conuna simple instruccin SQL. Lo bello de las bases de datos relacionales, si estn bien diseadas, es que puede hacer estofcilmente.
La nomlalizacin tambin hace las cosas fciles de entender. Los seres humanos tenemos la tendencia de simplificar lascosas al mximo. Lo hacemos con casi todo desde los animales hasta con los automviles. Vemos una imagen de grantamao y la hacemos menos compleja agrupando cosas similares juntas. Las guas que la nomlalizacin provee crean elmarco de referencia para simplificar la estructura. En su base de datos de muestra es fcil detectar que usted tiene tresdiferentes grupos: clientes, productos y pedidos. Si sigue las guas de la nomlalizacin, podra crear las tablas basndoseen estos grupos.
El proceso de nomlalizacin tiene un nombre y una serie de reglas para cada fase. Esto puede parecer un poco confuso alprincipio, pero poco a poco ir entendiendo el proceso, as como las razones para hacerlo de esta manera. A la mayora dela gente le encantan las hojas de clculo por la forma en la que manejan sus datos. El tiempo que le lleve reconfigurar suesquema para ajustarlo al proceso de nomlalizacin, siempre ser bien Iinvertido. Al fin y al cabo, esto le tomar menos
CodLibro CodLector FechaDev
1001 501 15/04/2005
1004 502 17/04/2005
1005 503 16/04/2005
1006 504 20/04/20051007 501 18/04/2005
8/14/2019 Normalizacion - 1 Junio
6/79
tiempo que el que tendra que invertir , para cortar y pegar sus columnas de datos para generar el infomle que quiere sujefe.
Otra ventaja de la nomlalizacin de su base de datos es el consumo de espacio. Una base de datos nomlalizada puedeocupar menos espacio en disco que una no nomlalizada. Hay menos repeticin de datos, lo que tiene como consecuenciaun mucho menor uso de espacio en disco.
Grados de normalizacinExisten bsicamente tres niveles de normalizacin: Primera Fomla Normal (1NF), Segunda Fomla Normal (2NF) y TerceraFomla Normal (3NF). Cada una de estas formas tiene sus propias reglas. Cuando una base de datos se conforma a unnivel, se considera nomlalizada a esa forma de nomlalizacin. Por ejemplo, supongamos que su
base de datos cumple con todas las reglas del segundo nivel de nomlalizacin. Se considera que est en la Segunda FomlaNormal. No siempre es una buena idea tener una base de datos conformada en el nivel ms alto de normalizacin. Puedellevar aun nivel de complejidad que pudiera ser evitado si estuviera en un nivel ms bajo de normalizacin.
Primera Forma Normal
La regla de la Primera Forma Normal establece que las columnas repetidas deben eliminarse y colocarse en tablasseparadas. sta es una regla muy fcil de seguir. Observe el esquema de la tabla Cl ientes de la base de datos.
.
Clientes
ID Cliente
Nombre
Apellidos
Nombre_Producto1
Costo_Producto1
Imagen_Producto1
Nombre_Producto2
Costo_Producto2
Imagen_Producto2
Fecha_Pedido
Cantidad_Pedido
Nombre Cia Envios
--
La tabla tiene varias columnas repetidas. stas se refieren principalmente a los productos. De acuerdo con la regla, debeeliminar las columnas repetidas y crearles su propia tabla.
Eliminacin de datos repetidos en una base de datos
Clientes Pedidos
ID_Clientes Nombre_Productos
Nombre Costo_Producto
8/14/2019 Normalizacion - 1 Junio
7/79
Apellidos Imagen_Producto
Direccion
Numero_Pedido
Fecha_Pedido
Cantidad_Pedido
Clave_Cia_Envios
Nombre_Ci_ Envios
--
Ahora tiene dos tablas. Pero todava hay un problema. No hay forma de relacionar los datos de la tabla original con los de lanueva tabla. Para hacerlo, debe aadir un campo clave a la segunda tabla de forma que se establezca la relacin. Aada ala tabla Productos una clave primaria que se llame ID_Producto y aada una clave a la tabla Clientes que la relacione conla tabla Productos. El campo ID_Producto es el candidato ideal.
Primera Forma Normal
Clientes Pedidos
ID_Productos ID_Productos
ID_Clientes Nombre_Productos
Nombre Costo_Producto
Apellidos Imagen_Producto
Direccion
Numero_Pedido
Fecha_Pedido
Cantidad_Pedido
Clave_Cia_Envios
--
As, se ha establecido una relacin uno a varios. sta representa lo que la base de datos estar haciendo en la vida real. Elcliente tendr muchos productos que podr comprar,
sin importar cuntos otros clientes quieran comprarlos tambin. Adems, el cliente necesitar haber pedido un productopara ser un cliente. Usted ya no est obligado a aadir
un cliente cada vez que aade un nuevo producto a su inventario.
Poner la base de datos en la Primera Forma Normal resuelve el problema de los encabezados de columna mltiples. Muy a
menudo, los diseadores de bases de datos inexpertos harn algo similar a la tabla no normalizada. Una y otra vez, crearncolumnas que representen los mismos datos. En una empresa de servicios de electricidad, haba una base de datos para elcontrol de refacciones de una planta nuclear. La tabla de su base de datos, la cual contena los nmeros de parte de lasrefacciones, tena una columna repetida ms de treinta veces. Cada vez que una nueva parte se tena que dar de alta, secreaba una nueva columna para almacenar la informacin. Obviamente, el diseo de la base de datos era bastante pobre y,por lo mismo, resultaba una pesadilla para sus programadores/administradores.
La normalizacin ayuda a clarificar la base de datos ya organizarla en partes ms pequeas y ms fciles de entender. Enlugar de tener que entender una tabla gigantesca y monoltica que tiene muchos diferentes aspectos, usted slo tiene queentender objetos pequeos y ms tangibles, as como las relaciones que guardan con otros objetos tambin pequeos. Noes necesario mencionar que un mejor entendimiento del funcionamiento de su base de datos conducir aun mejor
8/14/2019 Normalizacion - 1 Junio
8/79
aprovechamiento de sus activos.
Segunda Forma Normal
La regla de la Segunda Forma Normal establece que todas las dependencias parciales se deben eliminar y separar dentrode sus propias tablas. Una depen dencia parcial es un trmino que describe a aquellos datos que no dependen de la clavede la tabla para identificarlos. En la base de datos de muestra, la informacin de pedidos est en cada uno de los registros.
Sera mucho ms simple utilizar nicamente el nmero del pedido. El resto de la informacin podra residir en su propiatabla. Una vez que haya organizado la informacin de pedidos.
Eliminacin de las dependencias parciales -Segunda Forma Normal
Clientes Pedidos Productos
ID_Productos ID_Productos ID_Producto
ID_Clientes Nombre_Productos Fecha_Compra
Nombre Cantidad_Pedido Costos_Productos
Apellidos Imagen_Producto
Direccion
Numero_Pedido
Nombre_Cia_Envios
De nuevo, al organizar el esquema de esta forma puede reflejar el mundo real en su base de datos. Tendra que haceralgunos cambios en sus reglas del negocio para que esto fuera aplicable, pero para ilustrar la normalizacin, as est bien.
Una de las mayores desventajas de la normalizacin es el tiempo que lleva hacerlo. La mayora de la gente est demasiadoocupada, y emplear tiempo para asegurarse de que sus datos estn normalizados cuando todo funciona ms o menos bien,parece ser un desperdicio de tiempo. Pero no es as. Usted tendr que emplear ms tiempo arreglando una base de datosno normalizada que el que empleara en una normalizada.
Al haber alcanzado la Segunda Forma Normal, usted puede disfrutar de algunas de las ventajas de las bases de datosrelacionales. Por ejemplo, puede aadir nuevas columnas a la tabla Clientes sin afectar a las tablas Productos y Pedidos.Lo mismo aplica para las otras tablas. Alcanzar este nivel de normalizacin permite que los datos se acomoden de unamanera natural dentro de los lmites esperados.
Una vez que ha alcanzado el nivel de la Segunda Forma Normal, se han controlado la mayora de los problemas de lgica.Puede insertar un registro sin un exceso de datos en la mayora de las tablas. Observando un poco ms de cerca la tablaClientes, vemos la columna Nombre_Cia_Envios. sta no es dependiente del cliente. El siguiente nivel de normalizacinexplicar cmo solucionar esto.
Tercera Forma Normal
La regla de la Tercera Forma Normal seala que hay que eliminar y separar cualquier dato que no sea clave. El valor deesta columna debe depender de la clave. Todos los valores deben identificarse nicamente por la clave. En la base dedatos de muestra, la tabla Clientes contiene la columna Nombre_Cia_Envios, la cual no se identifica nicamente por laclave. Podra separar estos datos de la tabla y ponerlos en una tabla aparte.
Eliminacin de los datos que no son claves para la Tercera Forma Normal
Clientes Productos PedidoMaestro PedidoDetallado Cias_Envios
ID_cliente ID_Producto ID_Pedido ID_PedidoDetallado ID_Cia_Envios
ID_Producto Nombre_Producto Fecha_Pedido ID_Pedido Nombre_Cia_Envios.
Numero_Pedido Costos_Productos Cantidad_Pedidos Fecha_Pedido
ID_Cia_Envios Foto_Producto Cantidad_Pedido
Nombre
Apellidos
8/14/2019 Normalizacion - 1 Junio
9/79
Direccion
Ahora todas sus tablas estn en la Tercera Forma Normal. Esto le da ms flexibilidad y previene errores de lgica cuandoinserta o borra registros. Cada columna en la tabla est identificada de manera nica por la clave, y no hay datos repetidos.Esto provee un esquema limpio y elegante, que es fcil de trabajar y expandir.
Qu tan lejos debe llevar la normalizacin
La siguiente decisin es qu tan lejos debe llevar la normalizacin? La normalizacin es una ciencia subjetiva. Determinarlas necesidades de simplificacin depende de usted. Si su base de datos va a proveer informacin aun solo usuario para unpropsito simple y existen pocas posibilidades de expansin, normalizar sus datos hasta la 3FN sea quiz algo extremoso.Las reglas de normalizacin existen como guas para crear tablas que sean fciles de manejar, as como flexibles yeficientes.
A veces puede ocurrir que normalizar sus datos hasta el nivel ms alto no tenga sentido. Por ejemplo, suponga que aadeuna columna extra para la direccin en su base de datos. Es muy normal tener dos lneas para la direccin. El esquema dela tabla podra verse como se muestra a continuacin:
ID_Cliente
Nombre
Apellidos
Direccion1
Direccion2
De acuerdo con las reglas, si aplica la Primera Forma Normal, la columna de direccin debera sacarse de esta tabla yreemplazarse con la clave de una nueva tabla. El resultado de este esquema se muestra a continuacin:
ID_Ciente ID_Direccion
Nombre ID_Cliente
Apellidos Direccion
La base de datos ahora cumple con la Primera Forma Normal. Los clientes pueden tener ms de una direccin. El problemaaqu es que usted ha complicado demasiado una idea simple, por tratar de seguir las reglas de normalizacin. En elejemplo mostrado, la segunda direccin es totalmente opcional. Est ah slo para colectar informacin que pudierautilizarse como informacin de contacto. No hay necesidad de partir la tabla en dos y forzar las reglas de la normalizacin.En esta instancia, el exceso de normalizacin frustra el propsito para el que se utilizan los datos. Aade, de manerainnecesaria, un nivel ms de complejidad. Una buena forma de determinar si est l levando demasiado lejos sunormalizacin, es ver el nmero de tablas que tiene. Un nmero grande de tablas pudiera indicar que est normalizandodemasiado. Observe su esquema.
Est dividiendo tablas slo para seguir las reglas o estas divisiones son en verdad prcticas? stas son el tipo de cosasque usted, el diseador de la base de datos, necesita decidir. La experiencia y el sentido comn lo pueden auxiliar paratomar la decisin correcta. La normalizacin no es una ciencia exacta. Es subjetiva.
Existen seis niveles ms de normalizacin que no se han discutido aqu. Ellos son Forma Normal Boyce-Codd, CuartaForma Normal (4NF), Quinta Forma Normal (5NF) o
Forma Normal de Proyeccin-Unin, Forma Normal de Proyeccin-Unin Fuerte, Forma Normal de Proyeccin-Unin ExtraFuerte y Forma Normal de Clave de Dominio. Estas formas de normalizacin pueden llevar las cosas ms all de lo quenecesita. stas existen para hacer una base de datos realmente relacional. Tienen que ver principalmente condependencias mltiples y claves relacionales.
En resumenLa normalizacin es una tcnica que se utiliza para crear relaciones lgicas apropiadas entre tablas de una base de datos.
Ayuda a prevenir errores lgicos en la manipulacin de datos. La normalizacin facilita tambin agregar nuevas columnassin romper el esquema actual ni las relaciones.
Existen varios niveles de normalizacin: Primera Forma Normal, Segunda Forma Normal, Tercera Forma Normal, FormaNormal Boyce-Codd, Cuarta Forma Normal, Quinta Forma Normal o Forma Normal de Proyeccin-Unin, Forma Normal deProyeccin-Unin Fuerte, Forma Normal de Proyeccin-Unin Extra Fuerte y Forma
8/14/2019 Normalizacion - 1 Junio
10/79
Normal de Clave de Dominio. Cada nuevo nivel o forma lo acerca ms a hacer su base de datos verdaderamenterelacional.
Se discutieron las primeras tres formas. stas proveen suficiente nivel de normalizacin para cumplir con las necesidadesde la mayora de las bases de datos.
Normalizar demasiado puede conducir a tener una base de datos ineficiente y hacer a su esquema demasiado complejo
para trabajar. Un balance apropiado de sentido comn yprctico puede ayudarle a decidir cundo normalizar.
Xxxxxxxxxxxxxxxxxxxxxxx
Diseo de las tablas
Una vez realizado este estudio llega el momento de crear las tablas,para ello colocaremos en cada tabla aquellos campos del tipoNuevo, teniendo cuidado de que en cada tabla no haya ningncampo que se repita. Por ejemplo, en la tabla de pedidos nocolocaremos el cdigo del producto ya que en un pedido puedehaber varios productos, para solucionar esto crearemos una tablaauxiliar que llamaremos Detalles de pedidos, en la que incluiremoslos campos: clave del producto, PrecioUnidad, Cantidad yDescuento.En nuestro ejemplo llegamos a la conclusin de que son necesariasseis tablas
Tabla Clientes
Nombre Tipo Tamao Otras propiedades
IdCliente clave
NombreCompaa
NombreContacto
CargoContacto
Direccin
Ciudad
Regin
CdPostal
Pas
Telfono
Fax
Tabla Compaas de envos
Nombre Tipo Tamao Otras propiedades
IdCompaaEnvos clave
NombreCompaa
8/14/2019 Normalizacion - 1 Junio
11/79
Telfono
Tabla Detalles de pedidos
Nombre Tipo Tamao Otras propiedades
IdPedido clave
IdProducto clave
PrecioUnidad
Cantidad
Descuento
Tabla Empleados
Nombre Tipo Tamao Otras propiedades
IdEmpleado clave
Apellidos
Nombre
Cargo
Tratamiento
FechaNacimiento
FechaContratacin
Direccin
Ciudad
Regin
CdPostalPas
TelDomicilio
Extensin
Foto
Notas
Jefe
Tabla Pedidos
Nombre Tipo Tamao Otras propiedadesIdPedido clave
IdCliente
IdEmpleado
FechaPedido
FechaEntrega
8/14/2019 Normalizacion - 1 Junio
12/79
FechaEnvo
FormaEnvo
Cargo
Destinatario
DireccinDestinatario
CiudadDestinatario
ReginDestinatario
CdPostalDestinatario
PasDestinatario
Tabla Productos
Nombre Tipo Tamao Otras propiedades
IdProducto clave
NombreProducto
CantidadPorUnidad
PrecioUnidad
Mtodo de dependencias funcionales
A continuacin vamos a ver un mtodo mecnico para disear lastablas de la base de datos (normalizar).Recordemos la definicin tcnica de dependencia funcional: dadosdos campos, A y B, se dice que B es funcionalmente dependiente deA si para cada valor de A existe un nico valor de B, asociado conl.Empezamos tomando aquellos campos que de una manera clarasern claves en alguna tabla como por ejemplo el Idcliente. Parasaber si un campo depende funcionalmente de otro nos hacemos elsiguiente razonamiento:
Si conozco el Idcliente, existe un nico apellido del cliente asociado a el?,
SI, luego los apellidos dependen funcionalmente del campo Idcliente.
(Idcliente apellidos )
Si conozco el IdPedido existe un nico Producto en el pedido asociado a el?,NO, ya que un pedido puede no tener un nico producto, por lo tanto elproducto no depende funcionalmente de IdPedido.
IdEmpleado Nombre Obtencin de todas lasdependenciasfuncionales
8/14/2019 Normalizacion - 1 Junio
13/79
IdEmpleado Apellidos
IdEmpleado Cargo
IdEmpleado TratamientoEmp
IdEmpleado FechaNacimiento
IdEmpleado FechaContratacin
IdEmpleado Direccin
IdEmpleado Ciudad
IdEmpleado Regin
IdEmpleado CdPostal
IdEmpleado Pas
IdEmpleado TelDomicilio
IdEmpleado Extensin
IdEmpleado Foto
IdEmpleado Notas
http://www.adrformacion.com/curso/video.htm8/14/2019 Normalizacion - 1 Junio
14/79
IdEmpleado Jefe
IdPedido, IdProducto PrecioUnidadNotar que en el caso delPrecioVenta de un producto este depende a la vez del IdProductoy del IdPedido, es decir va a tener una clave doble.Esta relacin contiene todas las dependencias funcionales que yohe visto, aunque posiblemente podran determinarse mas de lasque aqu aparecen. A partir de ahora se trata de simplificar hastalograr una cobertura mnima, es decir que un campo no puededepender funcionalmente mas que de una clave.
Para realizar el proceso de simplificar, nos basaremos en lasiguiente propiedad:
Si tenemos que A B, y B C, se puede deducir la dependencia A
C, siendo esta ltima dependencia redundante (sobrante).
En nuestro ejemplo tenemos que IdPedidoIdEmpleado, y
IdEmpleadoNombre, luego la expresin IdPedidoNombre,es redundante y podemos eliminarla. Continuaremos este procesode simplificacin hasta obtener una cobertura mnima en la queaparezcan todos los campos una sola vez.
Simplificacin y obtencin de las tablas
Simplificamos tachando las sobrantes.
A
s
e
s
o
r
E
s
p
ac
i
o
d
e
IdPedido FechaPedido
IdPedido FechaEntrega
IdPedido FechaEnvo
IdPedido FormaEnvo
IdPedido Cargo
IdPedido IdCliente
8/14/2019 Normalizacion - 1 Junio
15/79
a
d
v
C
l
as
s
1
C
l
a
s
s
2
C
l
a
s
s
3
Hacemosl
impieza
bor
randol
IdPedido NombreCompaa
IdPedido NombreContacto
IdPedido Direccin
IdPedido Ciudad
IdPedido Regin
IdPedido CdPostal
IdPedido Pas
IdPedido Destinatario
IdPedido DireccinDestinatario
IdPedido CiudadDestinatario
IdPedido ReginDestinatario
IdPedido CdPostalDestinatario
IdPedido PasDestinatario
IdPedido NombreProducto
IdPedido IdEmpleado
IdPedido NombreEmpleado
8/14/2019 Normalizacion - 1 Junio
16/79
osq
uesehant
achado,yobtenemoslastablas
8/14/2019 Normalizacion - 1 Junio
17/79
del
abaseded
atossinmasquedefinirunat
8/14/2019 Normalizacion - 1 Junio
18/79
abla
porcadac
onjuntodedependenciasfuncio
8/14/2019 Normalizacion - 1 Junio
19/79
8/14/2019 Normalizacion - 1 Junio
20/79
gru
pamosporclavesob
teniendol
astab
8/14/2019 Normalizacion - 1 Junio
21/79
las
.
xxxxxxxxxxxxxxxxxx
Normalizar unatabla de ejemplo
En los pasos siguientes sedemuestra el proceso denormalizacin de una tabla dealumnos ficticia.
1.2.
3.
IdEmpl
8/14/2019 Normalizacion - 1 Junio
22/79
ead
o
Apellid
os
IdEmplea
do
Cargo
IdEmple
8/14/2019 Normalizacion - 1 Junio
23/79
ado
Tratamie
ntoEmp
IdEm
pleado
Fe
chaNaci
8/14/2019 Normalizacion - 1 Junio
24/79
mie
nto
IdEmple
ado
Fecha
Contrataci
n
IdEmp
8/14/2019 Normalizacion - 1 Junio
25/79
lea
do
Direcc
in
IdEmple
ado
Ciuda
d
IdEmp
8/14/2019 Normalizacion - 1 Junio
26/79
8/14/2019 Normalizacion - 1 Junio
27/79
lea
do
Pas
I
dEmpleado
TelDomicil
io
IdEm
8/14/2019 Normalizacion - 1 Junio
28/79
ple
ado
Exten
sin
IdEmpl
eado
Foto
IdEmpl
8/14/2019 Normalizacion - 1 Junio
29/79
ead
o
Notas
I
dEmpleado
Jefe
4. AsesorEspacio de
advAsesorEspacio de
advClase #1022Jones412101071022Jones412143-
011022Jones412159-024123Smith216201-014123Smith216211-024123Smith216214-
01Segunda forma normal:eliminar datos redundantes
1022 Jones 412
8/14/2019 Normalizacion - 1 Junio
30/79
Tenga en cuenta los valoresde clase # varios para cada
valor de los alumnos # en latabla anterior. Clase # no es
funcionalmente depende delos alumnos # (claveprincipal), por lo que estarelacin no est en la formaen segundo lugar normal.
Las dos tablas siguientesmuestran la segunda forma
normal: 159-024123Smith216201-01211-
02214-01Primera forma
normal: no hay repeticingrupos
Las tablas deben tener slodos dimensiones. Como cadaalumno est inscrito en variasclases, stas deben apareceren una tabla independiente.
Los campos Clase1, Clase2 yClase3 de los registros
anteriores indican que existeun problema en el diseo.
En las hojas de clculo seutiliza con frecuencia la
tercera dimensin, pero nodebe hacerse en las tablas.
Otra forma de ver elproblema es considerar unarelacin de uno a varios; nose debe poner en la misma
tabla el lado en el que hay unelemento y el lado en el quehay varios elementos. En sulugar, crear otra tabla en la
primera forma normal,eliminando el grupo de
repeticin (clase #), tal ycomo se muestra a
8/14/2019 Normalizacion - 1 Junio
31/79
continuacin: IdPedido,
IdProducto PrecioUnidad
5.
L
Contrae
restatabl
aAmpliares
tatabl
8/14/2019 Normalizacion - 1 Junio
32/79
a
Los alumnos #
6.
7. Los alumnos #
IdPedido, IdProductoCantidad
IdPedido, IdProductoDescuento
IdCliente NombreCompaa
IdCliente NombreContacto
IdCliente CargoContacto
IdCliente Direccin
IdCliente Ciudad
IdCliente Regin
IdCliente CdPostal
IdCliente Pas
IdCliente Telfono
IdCliente Fax
IdProducto
8/14/2019 Normalizacion - 1 Junio
33/79
NombreProducto
IdProducto
CantidadPorUnidad
IdProducto PrecioUnidad
IdCompaaEnvos NombreCompaaEnvos
IdCompaaEnvos Telfono
Clase #4123Smith216Registro101
07143-01
Contraerestatab
laAmpli
1022 Jones 412
8/14/2019 Normalizacion - 1 Junio
34/79
ar
estatabla
Los alumnos #8. Asesor143-011022159-
024123201-014123211-024123214-01Tercera forma
normal: eliminar datos nodependientes en clave
En el ltimo ejemplo, adv deespacio (nmero de oficina el
asesor) dependefuncionalmente el atributo
asesor. La solucin es moverdicho atributo de la tablaAlumnos a la tabla Personal,
como se muestra acontinuacin:
9.L
Contrae
1022 101 07
8/14/2019 Normalizacion - 1 Junio
35/79
8/14/2019 Normalizacion - 1 Junio
36/79
es
tatablaAmp
liarestat
abla
Nombre
Salar
ioCargo
Jones
8/14/2019 Normalizacion - 1 Junio
37/79
Tel
fonokbmtkb
databasekbdesignkbinfokbusa
8/14/2019 Normalizacion - 1 Junio
38/79
8/14/2019 Normalizacion - 1 Junio
39/79
8/14/2019 Normalizacion - 1 Junio
40/79
8/14/2019 Normalizacion - 1 Junio
41/79
cios
Normalizacin
1.
Una
escuela
det
erminada
8/14/2019 Normalizacion - 1 Junio
42/79
tie
ne
un
grupo
de
dormitori
os
en
donde
viven
lo
8/14/2019 Normalizacion - 1 Junio
43/79
s
es
tudiantes.
L
a
escuela
ta
mbin
tiene
v
arios
c
8/14/2019 Normalizacion - 1 Junio
44/79
8/14/2019 Normalizacion - 1 Junio
45/79
o
m
s
de
estos
c
lubes.
Consi
dere
las
siguientes
8/14/2019 Normalizacion - 1 Junio
46/79
tabl
as,
que
desc
riben
la
sit
uacin:
ESTUDIANTE_DORM[ID_
ESTUDIANTE,DORM,PRECIO_ANUAL_DORM]
8/14/2019 Normalizacion - 1 Junio
47/79
ESTUDIANTE_CLUB[ID_E
STUDIANTE,CLUB,PRECIO_ANUAL_CLUB]
a)Paracadatabla,
indicar1) laclave;2)cadadependenciafuncional; y3) laFormanormal.
b)Transformecadatabla asuTerceraFormaNormal.
2.
Su
8/14/2019 Normalizacion - 1 Junio
48/79
8/14/2019 Normalizacion - 1 Junio
49/79
incl
uye
informac
in
relativa
a
los
pedido
s,
talco
8/14/2019 Normalizacion - 1 Junio
50/79
mo
si
gue:
CLIENTES[ID,NOMBRE,DIREC
CION,TELEFONO,FECHA_PEDIDO,SABOR,CANTIDAD]
Transforme
est
oen
dos
8/14/2019 Normalizacion - 1 Junio
51/79
tabl
as
relaciona
les
y
encuentre
las
clave
sadecua
8/14/2019 Normalizacion - 1 Junio
52/79
8/14/2019 Normalizacion - 1 Junio
53/79
in.
3.
Un
gru
po
de
mdico
s
vive
en
un
a
peque
8/14/2019 Normalizacion - 1 Junio
54/79
a
ci
udad.
Cada
m
dico
tiene
varios
pacien
tes,
pe
8/14/2019 Normalizacion - 1 Junio
55/79
ro
c
ada
paciente
visita
nic
amente
a
un
mdico.
8/14/2019 Normalizacion - 1 Junio
56/79
a)
Disee
una
tabla
que
re
presente
est
a
situac
8/14/2019 Normalizacion - 1 Junio
57/79
in,
usando
nic
amente
los
s
iguientes
atr
ibutos:
8/14/2019 Normalizacion - 1 Junio
58/79
8/14/2019 Normalizacion - 1 Junio
59/79
8/14/2019 Normalizacion - 1 Junio
60/79
8/14/2019 Normalizacion - 1 Junio
61/79
Ta
blas
La
stablasen
unabased
edatos
8/14/2019 Normalizacion - 1 Junio
62/79
8/14/2019 Normalizacion - 1 Junio
63/79
tos
,estasestr
ucturassebasanenlasentida
8/14/2019 Normalizacion - 1 Junio
64/79
des
queseext
raendelarealidad,cuandose
8/14/2019 Normalizacion - 1 Junio
65/79
hac
eelanlis
isdelproblemaalqueseleq
8/14/2019 Normalizacion - 1 Junio
66/79
uie
redarsolu
cinporunsistemainformtic
8/14/2019 Normalizacion - 1 Junio
67/79
o.L
asiguiente
esunatablacontresregistr
8/14/2019 Normalizacion - 1 Junio
68/79
8/14/2019 Normalizacion - 1 Junio
69/79
do
yquetiene
cuatroatributos.
Nombre
R
8/14/2019 Normalizacion - 1 Junio
70/79
ef
erencia
sAhlo,
Hamilto
nM.,
8/14/2019 Normalizacion - 1 Junio
71/79
R
andyBr
ownyPeterCol
cloug
8/14/2019 Normalizacion - 1 Junio
72/79
h.
FoxPro
2:GuideADev
elope
8/14/2019 Normalizacion - 1 Junio
73/79
8/14/2019 Normalizacion - 1 Junio
74/79
-46
-87412ayud
antecocina51
2-47-84An
a$100.0
Jorge
8/14/2019 Normalizacion - 1 Junio
75/79
00mes
era321-45-
42$150.00
0
$ 110.000
Normalizacin de las tablas
La normalizacin es un proceso en el que se toman los atributos de una entidad y sedecide qu hacer con ellos, para hacer un diseo donde no se dupliquen registros,donde se minimice el uso de la memoria de la mquina, se maximice la velocidad en
las bsquedas de datos entre otros. A los pasos de este proceso se les conoce comoformas normales
El proceso es difcil de entender al principio, puede tener tres o cinco pasosdependiendo del autor, es largo, con prctica y experiencia llega un momento en que
8/14/2019 Normalizacion - 1 Junio
76/79
no se utiliza, porque el diseador de la base de datos llega al resultado final sinnecesidad de hacer todo el proceso. Por eso llega un momento en que losprogramadores no lo usan y se brincan todos los pasos llegando tambin a unresultado similar o mejor al que se llegara siguiendo todo el proceso. Vamos a
utilizar nicamente las tres primeras formas normales, para el proceso las aplicamosen la factura del ejemplo visto en el tema pasado.
Se quiere sistematizar el almacenamiento de la factura y para eso necesitamos unejemplo de una factura real.
Antes de aplicar las formas normales a la factura, debemos extraer los atributos yhacer una lista con estos. El primer atributo que vemos en la parte superior es elnombre del restaurante, debajo el nmero de factura, luego los productos pedidos(Una lista de otras entidades) a lo que vamos a llamar detalle y por ltimo el total dela factura, hagamos una lista de los atributos encontrados
Factura:
Nombre Restaurante
Nmero Factura
Detalle
Total
Lo que hicimos fue crear una representacin de la entidad Factura, le dimos susatributos y podemos hacer ahora con estos datos una tabla en la base de datos. Pero
cmo hago para guardar muchos productos en un solo atributo (detalle) que tiene latabla? Cmo hago para que no se repitan las facturas? Estos y otros problemas seresuelven siguiendo el proceso de la normalizacin.
Primer forma normal:
8/14/2019 Normalizacion - 1 Junio
77/79
Se dice que una tabla est en primera forma normal si garantiza que cada registro seanico.
Para hacer esto debemos seleccionar de los atributos disponibles un atributo quenunca se repita, si no existe un atributo con esta caracterstica lo agregamos, esteatributo que hace a cada registro nico se le llama (clave principal). En este casotenemos un atributo que sirve para tal propsito, es el nmero de factura, losealamos como clave principal y listo.
Factura: (Primera forma normal)
Nombre Restaurante Nmero Factura
Detalle
Total
IdPedido, IdProducto Cantidad
IdPedido, IdProducto Descuento
IdCliente NombreCompaa
IdCliente NombreContacto
IdCliente CargoContacto
IdCliente Direccin
IdCliente Ciudad
IdCliente Regin
IdCliente CdPostal
IdCliente Pas
8/14/2019 Normalizacion - 1 Junio
78/79
IdCliente Telfono
IdCliente Fax
IdProducto NombreProducto
IdProducto CantidadPorUnidad
IdProducto PrecioUnidad
IdCompaaEnvos NombreCompaaEnvos
IdCompaaEnvos Telfono
Escribimos todas las dependencias funcionales.
IdPedido FechaPedido
IdPedido FechaEntrega
IdPedido FechaEnvo
IdPedido FormaEnvo
IdPedido Cargo
IdPedido IdCliente
IdPedido NombreCompaa
IdPedido NombreContacto
IdPedido Direccin
IdPedido Ciudad
8/14/2019 Normalizacion - 1 Junio
79/79
IdPedido Regin
IdPedido CdPostal
IdPedido Pas
IdPedido Destinatario
IdPedido DireccinDestinatario
IdPedido CiudadDestinatario
IdPedido ReginDestinatario
IdPedido
CdPostalDestinatario
IdPedido PasDestinatario
IdPedido NombreProducto
IdPedido IdEmpleado
IdPedido NombreEmpleado