You are on page 1of 23

Base de Datos

Parte 3
Normalizacin de Datos

Luis Sandoval

1
D Definiciones
A Base de Datos Relacional: Una coleccin de tablas.
Tabla: Una coleccin de columnas (atributos) que describen una

T
entidad. Los objetos son almacenados en filas de datos en la tabla.
Atributos: Una descripcin de la entidad.
Cada tabla tiene una Primary Key o llave.
A El ms pequeo identificador que puede identificar a todas las dems
columnas de la tabla

B
Primary keys pueden ser ms de una columna (claves mltiples)

A Filas
Primary key
o llave
Employee
Atributos
Tabla: Employee

S EmployeeID TaxpayerID
12512
15293
888-22-5552
222-55-3737
LastName
Cartom
Venetiaan
FirstName
Abdul
Roland
HomePhone
(603) 323-9893
(804) 888-6667
Address
252 South Street
937 Paramaribo Lane

E 22343
29387
293-87-4343
837-36-2933
Johnson
Stenheim
John
Susan
(703) 222-9384
(410) 330-9837
234 Main Street
8934 W. Maple

2
D Notacin
A Nombre de la tabla Columnas de la tabla

T Customer(CustomerID, Phone, Name, Address, City, State, ZipCode)

A Primary key es subrayada

B CustomerID Phone LastName FirstName Address City State Zipcode

A
1 502-666-7777 Johnson Martha 125 Main Street Alvaton KY 42122
2 502-888-6464 Smith Jack 873 Elm Street Bowling Green KY 42101
3 502-777-7575 Washington Elroy 95 Easy Street Smiths Grove KY 42171
4 502-333-9494 Adams Samuel 746 Brown Drive Alvaton KY 42122

S
5 502-474-4746 Rabitz Victor 645 White Avenue Bowling Green KY 42102
6 616-373-4746 Steinmetz Susan 15 Speedway Drive Portland TN 37148
7 615-888-4474 Lasater Les 67 S. Ray Drive Portland TN 37148
8 615-452-1162 Jones Charlie 867 Lakeside Drive Castalian Springs TN 37031

E
9 502-222-4351 Chavez Juan 673 Industry Blvd. Caneyville KY 42721
10 502-444-2512 Rojo Maria 88 Main Street Cave City KY 42127

3
D Identificando Claves Mltiples
A Orders Cada Orden tiene slo
T OrderID
8367
Date
5-5-04
Customer
6794
un Cliente.
De este modo un Cliente
8368 5-6-04 9263
A OrderItems
no es parte de la Clave

B OrderID
8367
Item
229
Quantity
2 Cada Orden tiene muchos

A 8367 253 4 Items.


8367 876 1 Cada Item puede aparecer
8368 555 4 en muchas OrderID.
S 8368 229 1 OrderID e Item
son ambos parte de la clave.

E
4
D Client Billing
A Client Billing

T
Client(ClientID, Name, Address, BusinessType)
Partner(PartnerID, Name, Speciality, Office, Phone)
PartnerAssignment(PartnerID, ClientID, DateAcquired)

A
Billing(ClientID, PartnerID, Date/Time, Item, Description, Hours, AmountBilled)

B
Cada partner puede ser asignado a muchos clientes.
A Cada cliente puede ser asignado a muchos partners.

S
E
5
D Client BillingReglas Diferentes
A Client(ClientID, Name, Address, BusinessType)

T
Partner(PartnerID, Name, Speciality, Office, Phone) combinar
PartnerAssignment(PartnerID, ClientID, DateAcquired)
Billing(ClientID, PartnerID, Date/Time, Item, Description, Hours, AmountBilled)
A Cada cliente es asignado a solo un partner.

B PartnerID no puede ser clave.


Combinar tablas Client and PartnerAssignment, ya que
ellas tienen la misma columna
A
S
E
6
D Client BillingNuevos supuestos
A Billing

ClientID PartnerID Date/Time Item Description Hours AmountBilled

T 115
295
963
967
8-4-04 10:03
8-5-04 11:15
967
754
Stress analysis
New Design
2
3
$500
$750
115 963 8-8-04 09:30 967 Stress analysis 2.5 $650
A
B
Cada partner puede trabajar con muchos clientes.
Cada cliente puede trabajar con muchos partner.
Cada partner y clientes pueden trabajar muchos varias veces.
A Se ha identificado a Date/Time como clave.

S Qu sucede si Date/time no se le identifica como clave?

E
7
D Ejemplo: Video Database
A Possible Keys Repeating section

T
A
B
A
S
E
8
D Entidades iniciales
A
Customers RentalTransaction
T Clave: CustomerID
Atributos
Clave : Assign
TransactionID

A Name
Address
Atributos
CustomerID

B
Phone Date
Videos VideosRented
Clave: VideoID Claves: TransactionID +
A Atributos
Title
VideoID
Atributos

S RentalPrice
Rating
VideoCopy#

E
Description

9
D Evaluacin Inicial del Formulario
A RentalForm(TransID, RentDate, CustomerID, Phone, Name, Address, City, State, ZipCode,
(VideoID, Copy#, Title, Rent ) )

Recolectar formularios
T desde usuarios
Escribir propiedades
A Encontrar grupos repetitivos
( . . .)

B Postular claves potenciales:


key

A Identificar valores calculados

S
E
10
D Problemas con las Secciones Repetidas
A RentalForm(TransID, RentDate, CustomerID, Phone, Name, Address, City, State, ZipCode,

El almacenamiento de datos en este


(VideoID, Copy#, Title, Rent ) )

T formulario no funcionara muy bien. Por


ejemplo, secciones de repeticin causarn
problemas.

A
Seccin Repetida
Tenga en cuenta la duplicacin de datos.
Adems, qu ocurre si un cliente no ha
comprado una pelcula - dnde guardamos Causa duplicacin
B 1
los datos del cliente?
TransID RentDate
4/18/04
CustomerID
3
LastName
Washington
Phone
502-777-7575
Address
95 Easy Street
VideoID
1
Copy#
2
Title
2001: A Space Odyssey
Rent
$1.50

A
1 4/18/04 3 Washington 502-777-7575 95 Easy Street 6 3 Clockwork Orange $1.50
2 4/30/04 7 Lasater 615-888-4474 67 S. Ray Drive 8 1 Hopscotch $1.50
2 4/30/04 7 Lasater 615-888-4474 67 S. Ray Drive 2 1 Apocalypse Now $2.00
2 4/30/04 7 Lasater 615-888-4474 67 S. Ray Drive 6 1 Clockwork Orange $1.50
3 4/18/04 8 Jones 615-452-1162 867 Lakeside Drive 9 1 Luggage Of The Gods $2.50
3 4/18/04 8 Jones 615-452-1162 867 Lakeside Drive 15 1 Fabulous Baker Boys $2.00

S
3 4/18/04 8 Jones 615-452-1162 867 Lakeside Drive 4 1 Boy And His Dog $2.50
4 4/18/04 3 Washington 502-777-7575 95 Easy Street 3 1 Blues Brothers $2.00
4 4/18/04 3 Washington 502-777-7575 95 Easy Street 8 1 Hopscotch $1.50
4 4/18/04 3 Washington 502-777-7575 95 Easy Street 13 1 Surf Nazis Must Die $2.50
4 4/18/04 3 Washington 502-777-7575 95 Easy Street 17 1 Witches of Eastwick $2.00

E
11
D Problemas con Secciones Repetidas
A Name
Customer Rentals
Almacenar datos Phone

T repetidos
Reservar espacio
Address
City
State

A Perocunto?
Poco no puede ser
ZipCode

VideoID Copy# Title Rent

B
Espacio inutilizado 1. 6 1 Clockwork Orange 1.50
Una mejor definicin 2. 8 2 Hopscotch 1.50
elimina el problema 3.

A 4.
5.
{Unused Space}

S No est en Primera Forma Normal

E
12
D Primera Forma Normal
A RentalForm(TransID, RentDate, CustomerID, Phone, Name, Address, City, State, ZipCode,
(VideoID, Copy#, Title, Rent ) )

T RentalForm2(TransID, RentDate, CustomerID, Phone, Name, Address, City, State, ZipCode)

A Remover secciones repetidas


RentalLine(TransID, VideoID, Copy#, Title, Rent )

B Dividir en dos tablas


Tomar clave de la seccin principal y repetirla en la seccin

A repetida
RentalLine(TransID, VideoID, Copy#, . . .)
Cada transaccin puede tener muchos videos (key VideoID)
S Cada video puede ser arrendado en muchas transacciones(key
TransID)
E Por cada TransID and VideoID, hay una sola Copy# (Copy# no ser
una clave)

13
D Grupos repetidos anidados
A Tabla (Key1, . . . (Key2, . . . (Key3, . . .) ) )

T
Tabla1(Key1, . . .) TablaA (Key1,Key2 . . .(Key3, . . .) )
A
B Tabla2 (Key1, Key2 . . .) Tabla3 (Key1, Key2, Key3, . . .)

A Anidados: Table (Key1, aaa. . . (Key2, bbb. . . (Key3, ccc. . .) ) )


Primera forma normal(1NF)

S Table1(Key1, aaa . . .)
Table2(Key1, Key2, bbb . .)
Table3(Key1, Key2, Key3, ccc. . .)
E
14
D Problemas con la primera forma normal(Data)
A TransID
1
2
3
RentDate
4/18/04
4/30/04
4/18/04
CustID
3
7
8
Phone
502-777-7575
615-888-4474
615-452-1162
LastName
Washington
Lasater
Jones
FirstName
Elroy
Les
Charlie
Address
95 Easy Street
67 S. Ray Drive
867 Lakeside Drive
City
Smith's Grove
Portland
Castalian Springs
State
KY
TN
TN
ZipCode
42171
37148
37031

T
4 4/18/04 3 502-777-7575 Washington Elroy 95 Easy Street Smith's Grove KY 42171

1NF separa los grupos


A repetidos
Todava tiene
B problemas
Replicacin
TransID
1
VideoID
1
Copy#
2
Title
2001: A Space Odyssey
Rent
$1.50

A
1 6 3 Clockwork Orange $1.50
Dependencia oculta: 2
2
8
2
1
1
Hopscotch
Apocalypse Now
$1.50
$2.00
Si un video aun no ha 2 6 1 Clockwork Orange $1.50

S
3 9 1 Luggage Of The Gods $2.50
sido rentado, cul es 3 15 1 Fabulous Baker Boys $2.00
su ttulo? 3 4 1 Boy And His Dog $2.50
4 3 1 Blues Brothers $2.00

E
4 8 1 Hopscotch $1.50
4 13 1 Surf Nazis Must Die $2.50
4 17 1 Witches of Eastwick $2.00

15
D Definicin de segunda forma normal
A Dependencia de TransID y VideoID

RentalLine(TransID, VideoID, Copy#, Title, Rent)


T
A
Dependen slo de Video_ID

Cada columna que no es Dependencia (definicin)

B una llave debe depender de


la llave completa.
Si al obtener un valor para
la llave siempre se conoce
Slo se aplica para las el valor de la propiedad en
A llaves concatenadas
Algunas columnas slo
cuestin, se dice que esa
propiedad depende de la

S
llave.
dependen de una parte de
la llave Si se cambia una parte de
una llave y la propiedad en
Dividir esas columnas en
E una tabla nueva.
cuestin no cambia, la tabla
no est en la 2FN.

16
D Ejemplo de segunda forma normal
A RentalLine(TransID, VideoID, Copy#, Title, Rent)

T
VideosRented(TransID, VideoID, Copy#)
A Videos(VideoID, Title, Rent)
B Title slo depende de VideoID
Cada VideoID slo puede tener un ttulo
A Rent depende de VideoID
En realidad, esta afirmacin es una regla de

S negocios.
Puede ser diferente en tiendas distintas.

E Algunas tiendas pueden cobrar una renta diferente


para cada video, depende del da (o la hora).
Cada columna que no es una llave depende de la
llave compuesta. 17
D Ejemplo de segunda forma normal(Data)
A VideosRented(TransID, VideoID, Copy#)

T TransID
1
1
VideoID
1
6
Copy#
2
3
Videos(VideoID, Title, Rent)

A
2 2 1
VideoID Title Rent
2 6 1
1 2001: A Space Odyssey $1.50
2 8 1
2 Apocalypse Now $2.00
3 4 1

B 3
3
4
9
15
3
1
1
1
3
4
5
Blues Brothers
Boy And His Dog
Brother From Another Planet
$2.00
$2.50
$2.00

A
6 Clockwork Orange $1.50
4 8 1
7 Gods Must Be Crazy $2.00
4 13 1
8 Hopscotch $1.50
4 17 1

S (No cambia)

E RentalForm2(TransID, RentDate, CustomerID, Phone,


Name, Address, City, State, ZipCode)

18
D Problemas con la segunda forma
normal(Data)
A RentalForm2(TransID, RentDate, CustomerID, Phone, Name, Address, City, State, ZipCode)

T TransID
1
2
RentDate
4/18/04
4/30/04
CustID
3
7
Phone
502-777-7575
615-888-4474
LastName
Washington
Lasater
FirstName
Elroy
Les
Address
95 Easy Street
67 S. Ray Drive
City
Smith's Grove
Portland
State
KY
TN
ZipCode
42171
37148

A
3 4/18/04 8 615-452-1162 Jones Charlie 867 Lakeside Drive Castalian Springs TN 37031
4 4/18/042 3 502-777-7575 Washington Elroy 95 Easy Street Smith's Grove KY 42171

B Incluso en la 2NF, los problemas continuan


Replicacin
A Dependencia oculta
Si un cliente todava no ha rentado un video,
S dnde guardamos sus datos personales?
Solucin: dividir la tabla.

E
19
D Definicin de Tercera forma normal
A Depend on TransID

T RentalForm2(TransID, RentDate, CustomerID, Phone, Name, Address, City, State, ZipCode)

A Depende slo de CustomerID

Cada columa que no es una Dependencia (definicin)


B llave slo debe depender de
la llave
Si al obtener una valor dada
una llave siempre se sabe

A Algunas columnas
dependen de columnas que
el valor de la propiedad,
entonces se dice que esa
propiedad siempre depende
S
no son parte de la llave.
de la llave.
Dividir en nueva tabla.
Si se cambia la llave y la
Ejemplo: Nombre de
E Cliente no cambia por cada
transaccin.
propiedad en cuestin no
cambia, la tabla no est en
la 3FN.
20
D Ejemplo de Tercera forma normal
A RentalForm2(TransID, RentDate, CustomerID, Phone, Name, Address, City, State, ZipCode)

T Rentals(TransID, RentDate, CustomerID )

A
Customers(CustomerID, Phone, Name, Address, City, State, ZipCode )

Atributos del Cliente dependen slo de


B Customer_ID
Dividir en una nueva tabla(Customer)

A Recordar dejar CustomerID en tabla Rentals.


Se requiere reconectar nuevamente estas
tablas.
S
E
21
D Ejemplo de Tercera forma normal (Data)
A RentalForm2(TransID, RentDate, CustomerID, Phone, Name, Address, City, State, ZipCode

T Rentals(TransID, RentDate, CustomerID )


TransID RentDate CustomerID

A
1 4/18/04 3
2 4/30/04 7
3 4/18/04 8
4 4/18/04 3

B Customers(CustomerID, Phone, Name, Address, City, State, ZipCode )

A
CustomerID Phone LastName FirstName Address City State ZipCode
1 502-666-7777 Johnson Martha 125 Main Street Alvaton KY 42122
2 502-888-6464 Smith Jack 873 Elm Street Bowling Green KY 42101
3 502-777-7575 Washington Elroy 95 Easy Street Smith's Grove KY 42171

S
4 502-333-9494 Adams Samuel 746 Brown Drive Alvaton KY 42122
5 502-474-4746 Rabitz Victor 645 White Avenue Bowling Green KY 42102
6 615-373-4746 Steinmetz Susan 15 Speedway DrivePortland TN 37148
7 615-888-4474 Lasater Les 67 S. Ray Drive Portland TN 37148

E
8 615-452-1162 Jones Charlie 867 Lakeside Drive Castalian Springs TN 37031
9 502-222-4351 Chavez Juan 673 Industry Blvd. Caneyville KY 42721
10 502-444-2512 Rojo Maria 88 Main Street Cave City KY 42127

VideosRented(TransID, VideoID, Copy#)


22
Videos(VideoID, Title, Rent)
D Tablas en Tercera forma normal(3NF)
A Rentals
1

T
TransID
* RentDate
Customers CustomerID VideosRented
1 *

A CustomerID
Phone
LastName
TransID
VideoID
Copy#
*

B FirstName
Address
City
1
Videos
VideoID

A State
ZipCode
Title
Rent

S Rentals(TransID, RentDate, CustomerID )


Customers(CustomerID, Phone, Name, Address, City, State, ZipCode )

E VideosRented(TransID, VideoID, Copy#)


Videos(VideoID, Title, Rent)

23

You might also like