Bases de Datos 1 Prof. Daniel Obando Fuentes. Optimizando el diseño Normalización: Proceso...

Post on 24-Jan-2016

219 views 0 download

Transcript of Bases de Datos 1 Prof. Daniel Obando Fuentes. Optimizando el diseño Normalización: Proceso...

Bases de Datos 1

Prof. Daniel Obando Fuentes

Optimizando el diseño• Normalización: Proceso mediante el cual una base de datos es

diseñada de modo que se remueven las redundancias y se incrementa la claridad de la organización de los datos.

• Es un proceso recursivo• Busca que cada tabla llegue a su HNF (Highest Normal Form)• Reduce el número de posibles anomalías• Ventajas

• Hace el diseño escalable• Incrementa la eficiencia • Reduce el espacio de almacenamiento• Protege la integridad de los datos

• Desventajas• Es un dolor de h…cabeza

ANOMALÍAS

Sucursal Empresa Tfno CIF Un. Prod Precio Proveedor

1 C. Inglés 193 CI 12 P1 123 Agro

2 C. Inglés 294 CI 18 P1 123 Agro

2 C. Inglés 294 CI 7 P2 827 Telna

2 C. Inglés 294 CI 86 P3 123 Agro

2 C. Inglés 294 CI 45 P6 123 Agro

2 C. Inglés 294 CI 98 P2 827 Telna

1 Galerías 185 CG 103 P2 123 Agro

1 Galerías 185 CG 40 P5 308 Xcon

2 Galerías 200 CG 27 P7 126 Agro

ANOMALÍAS

• Inserción• Si Agro saca un nuevo product PX, no se podría inserter ya que no se

conocen datos como Empresa o Tfno

• Actualización• Si P1 sube a 200, habría que modificar 2 tuplas

• Borrado• Si se quiere eliminar la sucursal DOS de Galerías, se borrará la única

referencia al producto P7

DEPENDENCIAS FUNCIONALES

• Una dependencia funcional es una conexión entre uno o más atributos. Por ejemplo si se conoce el valor de DNI tiene una conexión con Apellido o Nombre .

• El atributo principal es llamado DETERMINANTE• Las dependencias funcionales del sistema se escriben utilizando una

flecha, de la siguiente manera:• FechaDeNacimiento Edad

• X Y

AXIOMAS DE ARMSTRONG• Dependencia Funcional Reflexiva o Completa:

• Si Y está incluído en X entonces X Y

• DNI nombre

• Dependencia Funcional Aumentativa:• X Y entonces XZ YZ

• DNI nombre entonces DNI,Dirección nombre, dirección

• Dependencia Funcional Transitiva:• Sean X, Y, Z tres atributos (o grupos de atributos) de la misma entidad. Si Y depende

funcionalmente de X y Z de Y, pero X no depende funcionalmente de Y, se dice entonces que Z depende transitivamente de X. Simbólicamente sería:

• X Y, Y Z entonces X Z

• FechaDeNacimiento Edad

• Edad Conducir

• FechaDeNacimiento Edad Conducir

PROPIEDADES DEDUCIDAS

• Unión• x y, x z entonces x yz

• Pseudo-transitiva• x y, wy z entonces wx z

• Composición• A B, C D entonces A,C B,D

• Descomposición• x y, z está incluido en y entonces x z

DEPENDENCIAS FUNCIONALES

A B C D E

a b z w q

e b r w p

a d z w t

e d r w q

a f z s t

e f r s t

• A C• C A• B D• A,B E

Formas Normales• 1NF, 2NF, 3NF

• Atributos no key dependen solo del primary key• 4NF y 5NF

• Representación de relaciones 1:M y M:M• 6NF

• Si hay más de 2 PK’s en una tabla, crear tablas aparte con estas

DE DEPENDENCIAS A RELACIONES

• Si A->B y B->A, entonces B y A deben estar en la misma tabla• Si A,B -> C pero C -/> A,B, entonces A-/>C ó B-/>C. (2NF)

• Si A->C y C->A entonces A y C deben estar en una table aparte

• Si A->B y B->C, entonces A->C (3NF)

• B->C deberían estar en una tabla aparte.

• Si A->B y C->D, A y C deben ser PKS en distintas tablas (BYNC)

ID Cliente Nombre Apellido Teléfono123 Rachel Ingram 555-861-2025456 James Wright 555-403-1659

555-776-4100789 Cesar Dure 555-808-9633

1NF• Cada celda de la tabla debe contener solo un dato, y no puede haber filas

duplicadas.

• Ie: Una valor por columna

1NF

ID Cliente Nombre Apellido Teléfono 1 Teléfono 2 Teléfono 3

123 Rachel Ingram 555-861-2025

456 James Wright 555-403-1659

555-776-4100

789 Cesar Dure 555-808-9633

1NF

ID Cliente Nombre Apellido123 Rachel Ingram456 James Wright

789 Cesar Dure

ID ID Cliente Teléfono1 123 555-861-2025

2 456 555-403-1659

3 456 555-776-4100

4 789 555-808-9633

2NF• Dada una clave primaria y cualquier atributo que no sea un

constituyente de la clave primaria, el atributo no clave depende de toda la clave primaria en vez de solo de una parte de ella.

• Todas las columnas que no sean PK deben depender funcionalmente de manera complete de la PK

• Cumple con 1NFID curso ID Semestre Aula Nombre Curso

IT101 2014-1 100 Programming

IT101 2014-2 100 Programming

IT102 2014-1 200 DatabasesIT102 2013-1 150 DatabasesIT103 2014-2 120 Web Design

2NF• ID Curso -> Nombre Curso• Nombre Curso -> ID Curso• ID Semestre -/> Nombre Curso

ID curso ID Semestre Aula Nombre Curso

IT101 2014-1 100 Programming

IT101 2014-2 100 Programming

IT102 2014-1 200 DatabasesIT102 2013-1 150 DatabasesIT103 2014-2 120 Web Design

2NF

ID curso ID Semestre Aula

IT101 2014-1 100IT101 2014-2 100IT102 2014-1 200IT102 2013-1 150IT103 2014-2 120

ID curso Nombre Curso

IT101 ProgrammingIT102 DatabasesIT103 Web Design

3NF•Cada columna de la tabla se relaciona solo con el primary key de la tabla.•Ningún atributo que no sea PK depende transitivamente de la PK•Cumple con 2NF

ID curso ID Semestre

Aula Id Profesor Nombre Profesor

IT101 2014-1 100 332 Mr Jones

IT101 2014-2 100 332 Mr Jones

IT102 2014-1 200 495 Mr Bentley

IT102 2013-1 150 332 Mr Jones

IT103 2014-2 120 242 Mr Smith

3NF•ID Curso, ID Semestre -> Id Profesor•ID Profesor -> Nombre Profesor•Entonces: ID Curso, ID Semestre -> Nombre Profesor

• Ojo: ID Curso -> Id Profesor -> Nombre Profesor NO se cumpleID curso ID

SemestreAula Id Profesor Nombre

Profesor

IT101 2014-1 100 332 Mr Jones

IT101 2014-2 100 332 Mr Jones

IT102 2014-1 200 495 Mr Bentley

IT102 2013-1 150 332 Mr Jones

IT103 2014-2 120 242 Mr Smith

3NF

ID curso ID Semestre Aula Id Profesor

IT101 2014-1 100 332IT101 2014-2 100 332IT102 2014-1 200 495IT102 2013-1 150 332IT103 2014-2 120 242

Id Profesor Nombre Profesor

332 Mr Jones

495 Mr Bentley

242 Mr Smith

BOYCE-CODD NF (BCNF)• En una relación, todo determinante es una PK• Si A->B y C->D, A y C deben ser PKS en distintas tablas

N. Estudiante

Id Curso N. Curso Id Profesor N. Profesor

Gómez 100 Mate I 1 AriasGómez 200 Física 2 FloresPérez 100 Mate I 1 AriasPérez 300 Álgebra 3 Sánchez

Ramos 200 Física 2 FloresRamos 100 Mate I 4 García

BCNF• Id Profesor -> N. Profesor• Id Curso -> N. Curso

Id Profesor N. Profesor

1 Arias2 Flores3 Sánchez

Id Curso N. Curso

100 Mate I200 Física300 Álgebra

4NF• Las tablas no pueden tener dependencias multivalor en PKs

• Si A,B -> C dónde A,B,C son PK, se debe separar la tabla.• No se recomiendan PKs de más de 2 columnas• Cumple con 3NF

Restaurant Pizza Variety Delivery Area

A1 Pizza Thick Crust Springfield

A1 Pizza Thick Crust Shelbyville

A1 Pizza Thick Crust Capital City

A1 Pizza Stuffed Crust Springfield

A1 Pizza Stuffed Crust Shelbyville

A1 Pizza Stuffed Crust Capital City

Elite Pizza Thin Crust Capital City

Elite Pizza Stuffed Crust Capital City

Vincenzo's Pizza Thick Crust Springfield

Vincenzo's Pizza Thick Crust Shelbyville

Vincenzo's Pizza Thin Crust Springfield

Vincenzo's Pizza Thin Crust Shelbyville

4NFRestaurant Pizza Variety

A1 Pizza Thick Crust

A1 Pizza Stuffed Crust

Elite Pizza Thin Crust

Elite Pizza Stuffed Crust

Vincenzo's Pizza Thick Crust

Vincenzo's Pizza Thin Crust

Restaurant Delivery Area

A1 Pizza Springfield

A1 Pizza Shelbyville

A1 Pizza Capital City

Elite Pizza Capital City

Vincenzo's Pizza Springfield

Vincenzo's Pizza Shelbyville

5NF (PROJECTION-JOIN)• No deben haber dependencias cíclicas en llaves compuestas

• A->B,C, B->A,C, C->A,B, donde A,B,C son PKs• Cumple con 4NF• Problema: Liz Claiborne empieza a vender Jeans

Buyer vendor Ítem

Sally Liz Claiborne BlousesMary Liz Claiborne BlousesSally Jordach JeansMary Jordach JeansSally Jordach Sneakers

5NFBuyer Vendor

Sally Liz Claiborne

Mary Liz Claiborne

Sally Jordach

Mary Jordach

Buyer Item

Sally Blouses

Mary Blouses

Sally Jeans

Mary Jeans

Sally Sneakers

Vendor Ítem

Liz Claiborne Blouses

Liz Claiborne Jeans

Jordach Jeans

Jordach Sneakers

6NF

ID Estudiante

Nombre Estudiante Id Libro Nombre Libro Días Préstamo

1 B. Ruiz 10 C++ 52 C. Borges 11 PHP 33 K. Navas 12 Java 22 C. Borges 13 SQL 51 B Ruiz 14 C# 3

• Relaciones M:M deben tener tablas intermedias.• Cumple con 5NF

6NFID Estudiante Nombre Estudiante

1 B. Ruiz2 C. Borges3 K. Navas2 C. Borges1 B. Ruiz

Id Libro Nombre Libro10 C++11 PHP12 Java13 SQL14 C#

ID Estudiante Id Libro Días Préstamo

1 10 52 11 33 12 22 13 51 14 3

PRÁCTICA: APLIQUE 3NF A LA SIGUIENTE TABLA

nss nombre puesto salario emails

111 Juan Pérez Jefe de Área 3000 juanp@ecn.es; jefe2@ecn.es

222 José Sánchez Administrativo 1500 jsanchez@ecn.es

333 Ana Díaz Administrativo 1500 adiaz@ecn.es; ana32@gmail.com