Bases de Datos 1 Prof. Daniel Obando Fuentes. Optimizando el diseño Normalización: Proceso...
-
Upload
montserrat-pinto-blazquez -
Category
Documents
-
view
219 -
download
0
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 [email protected]; [email protected]
222 José Sánchez Administrativo 1500 [email protected]
333 Ana Díaz Administrativo 1500 [email protected]; [email protected]