TEMA 7. DISEÑO LÓGICO DE BASES DE DATOS RELACIONALES. 4. Desnormalización, partición de relaciones y optimización



Documentos relacionados
Estas visiones de la información, denominadas vistas, se pueden identificar de varias formas.

Base de Datos. Profesor: José Miguel Rubio L. P. UNIVERSIDAD CATÓLICA DE VALPARAÍSO FACULTAD DE INGENIERÍA ESCUELA DE ING.

UNIVERSIDAD NACIONAL DE ASUNCION FACULTAD POLITÉCNICA CARRERA: LCIK MATERIA: Bases de Datos I Prof: Lic. Lilian Riveros Unidad 2: Modelo Relacional

CERTAMEN 2 90 minutos 20 puntos

TEMA 6. DISEÑO CONCEPTUAL DE BASES DE DATOS. MODELO ENTIDAD RELACIÓN.

FICHEROS Y BASES DE DATOS (E44) 3º INGENIERÍA EN INFORMÁTICA. Tema 9. Reglas de Integridad

Tema 6: Diseño de bases de datos relacionales.

DISEÑO DE BASES DE DATOS RELACIONALES: NORMALIZACION

NORMALIZACIÓN DE BASES DE DATOS RELACIONALES

Gestión de la Información

TEMA 8.- DISEÑO TEORICO DE BASES DE DATOS RELACIONALES. 1. TEORÍA DE LAS DEPENDENCIAS FUNCIONALES

proceso que consiste en aplicar una serie de reglas a las relaciones obtenidas tras el paso del modelo entidad-relación al modelo relacional.

DISEÑO DE FUNCIONES (TRATAMIENTOS)

- Bases de Datos - - Diseño Físico - Luis D. García

IES Politécnico Estella

Sistemas de Bases de Datos I. Modelo Lógico Modelo Relacional

Repaso de Conceptos Básicos de Bases de Datos

Análisis de Sistemas. M.Sc. Lic. Aidee Vargas C. C. octubre 2007

BASES DE DATOS TEMA 5. DISEÑO DE BASES DE DATOS RELACIONALES MEDIANTE NORMALIZACION Contenidos generales

NORMALIZACIÓN DE BASES DE DATOS

Principios de Bases de Datos Relacionales, Normalización. Unidad 4

8. EL MODELO RELACIONAL - Continuación (2):

4.Diseño de Bases de Datos (I)

rg.o cm a Diseñ e o o l óg ó ico c l@ rza e b Di D s i e s ño d e b as a e s s s d e d at a o t s s r e r la l c a i c o i nal a e l s

3. Modelo relacional: Estructura e integridad.

Normalización. El diseño que hemos recibido está compuesto de estas dos relaciones:

BASES DE DATOS (IG18 Semipresencial) Diseño Lógico de Bases de Datos Relacionales.

Modelo Relacional. Normalización

Tema 5: Teoría de diseño de Bases de Datos Relacionales.

1. Introducción: Qué es un Modelo de Datos? 2. Estática del modelo de datos relacional

UNIDAD 3. MODELO RELACIONAL

EL MODELO ENTIDAD-RELACIÓN:

Un ejemplo simple de normalización de bases de datos relacionales (hasta 3FN)

NORMALIZACION. Definición.

En primer lugar se obtiene el modelo lógico de alto nivel, independiente del modelo de base de datos y los objetivos a conseguir son:

Cuando el pedido se entrega al cliente, se genera la factura correspondiente.

TEMA 5.- ESTRUCTURA DE DATOS RELACIONAL.

Capítulos 2 y 5: Modelación con UML y Modelo Objeto

rg.o cm a Diseñ e o o c o c n o ce c p e tual l@ rza e b Di D s i e s ño d e b as a e s s s d e d at a o t s

BASES DE DATOS TEMA 4 DISEÑO DE BASES DE DATOS RELACIONALES

Este es un ejemplo muy sencillo, un esquema de empleados que trabajan en proyectos, en una relación muchos a muchos.

BASES DE DATOS TEMA 3 MODELO ENTIDAD - RELACIÓN

Estrategias Didácticas B-Learning: ÁLGEBRA RELACIONAL


Ing. YIM ISAIAS APESTEGUI FLORENTINO Tema: Normalización

Temario. Índices simples Árboles B Hashing

FORMACIÓN Diseño de bases de datos relacionales

SE PIDE: 1. Suponiendo que partimos del siguiente grafo relacional que recoge parte de los supuestos anteriores,

SISTEMA DE GESTIÓN ACADÉMICA.

Operaciones con bases de

Esquema Relacional NORMALIZACIÓN

Aplicaciones Ofimáticas Tema 5. Ejercicios de Ejemplos

Capítulo 1: Introducción a los Sistemas de Gestión de Bases de Datos (SGBD)

Tema 2: Modelo Entidad-Relación(ER)

Teoría formal de la normalización de esquemas relacionales. Definición formal de las tres primeras Formas Normales

SINAUTO. (Captura Requirimientos) GRUPO 03

Consultas con combinaciones

OPERACIONES CON BASES DE DATOS OFIMÁTICAS Y CORPORATIVAS CURSO: IES GONZALO NAZARENO

Bases de Datos Relacionales

MINISTERIO DE EDUCACIÓN DIRECCIÓN DE EDUCACIÓN TÉCNICA Y PROFESIONAL PROGRAMA DE LA ASIGNATURA BASE DE DATOS ESPECIALIDAD INFORMÁTICA.

PROGRAMACIÓN ORIENTADA A OBJETOS Master de Computación. II MODELOS y HERRAMIENTAS UML. II.2 UML: Modelado de casos de uso

Unidad II: Diseño de Bases de Datos y el modelo E-R. 2.1 El Proceso de Diseño

FICHEROS Y BASES DE DATOS (E44) 3º INGENIERÍA EN INFORMÁTICA. Tema 8. Elementos Básicos

CASO DE ESTUDIO BOLSA DE EMPLEO UNIVERSIDAD SOLUCIÓN

Antes de entrar a definir la forma normal de Boyce-Codd, necesitamos conocer qué se entiende por determinante.

Capítulo VI. Diagramas de Entidad Relación

4 Integridad de datos relacional: llaves candidatas y temas relacionados.

UNIVERSIDAD NACIONAL DE TRUJILLO ESCUELA DE INFORMATICA BASE DE DATOS

Capítulo III: Traducción ER-Relacional

Modelos y Bases de Datos

INTRODUCCION. entidades. Modelo lógico de la base de datos. Matricula. carne. codigo_curso. año semestre nota. propiedades

Modelo Entidad-Relación

Introduccion Tablon de Anuncios Recogida de Avisos Acceso Relacion de Avisos Declaracion de Nacimiento Cambio de Clave Direcciones

MANUAL DE USUARIO DE LA APLICACIÓN DE ACREDITACION DE ACTIVIDADES DE FORMACION CONTINUADA. Perfil Entidad Proveedora

IMPORTANTE: para utilizar AplicaIL3 os recomendamos utilizar el navegador Mozilla Firefox.

Maestría en Bioinformática. Bases de Datos y Sistemas de Información. Del MER al MR. Ing. Alfonso Vicente, PMP alfonso.vicente@logos.com.

7 Diseño de Bases de Datos Relacionales: Normalización

Normalización. Universidad Nacional de Colombia Facultad de Ingeniería

Introducción. Componentes de un SI. Sistema de Información:

Que es normalización? Normalización de una base de datos Grados de normalización: Primera Forma Grados de normalización: Segunda Forma Grados de

INTRODUCCION A LAS BASES DE DATOS Procesamiento de Archivos vs Bases de Datos ARCHIVOS BASES DE DATOS

Ficheros y Bases de Datos Curso Ingeniería Técnica de Informática Primer Parcial. 1-Junio Nombre:

Proyecto de Normalización Automática de Base de Datos

Conceptos Avanzados de Bases de datos

UtivemkkukVaciona Id& Yalta/ FACULTAD DE CIENCIAS EXACTAS Av. Bolivia Salta Tel. (0387) Fax (0387) Republica Argentina

Registro: Es un conjunto de campos. También se llama Fila o Tupla. Son varios datos


Tema 5: Normalización en Bases da Datos

MATERIAL INSTRUCCIONAL DE APOYO

Manual de rol gestor de GAV para moodle 2.5

Índice libro SQL Server / 6

Técnica - Diagrama de Flujo de Datos (DFD)

BASE DE DATOS RELACIONALES

TEMA 4. Diseño Lógico de bases de datos relacionales.

Incidencias: Todas las incidencias que ocurrirán durante el apadrinamiento de un niño se deben registrar para poder buscar soluciones.

Modelado de datos. Bibliografía. Representación de la información Modelos de datos Modelado semántico

Registro de colaboradores de formación (Empresa/Entidad) Instrucciones generales

Manual imprescindible SQL Server 2012 (c) Francisco Charte Ojeda

Diseño de una Base de Datos. Fases del Diseño

Tema 6: Teoría de la Normalización

Transcripción:

TEMA 7. DISEÑO LÓGICO DE BASES DE DATOS RELACIONALES 1. Introducción 2. Metodología de diseño lógico en el modelo relacional 3. Normalización 4. Desnormalización, partición de relaciones y optimización

1. Introducción Diseño lógico: conversión del esquema conceptual de datos en un esquema lógico. Objetivo: obtener una representación que use de la manera más eficiente posible los recursos para la estructuración de datos y el modelado de restricciones disponibles en el modelo lógico. esquema conceptual información de la carga criterios de rendimiento DISEÑO LÓGICO esquema lógico Información de la carga Volumen de la base de datos. Conocimiento de consultas y transacciones a realizar, y su frecuencia. Criterios de rendimiento Tiempo de respuesta medio o máximo. Espacio de almacenamiento ocupado por la base de datos. Utilización de CPU o tiempo de E/S. Tema 7. Diseño lógico de bases de datos relacionales 2

2. Metodología de diseño lógico en el modelo relacional Construir y validar los esquemas lógicos locales para cada vista de usuario Construir y validar el esquema lógico global 1. Convertir los esquemas conceptuales locales en esquemas lógicos locales. 2. Derivar un conjunto de relaciones (tablas) para cada esquema lógico local. 3. Validar cada esquema mediante la normalización. 4. Validar cada esquema frente a las transacciones del usuario. 5. Dibujar el diagrama entidad relación. 6. Definir las restricciones de integridad. 7. Revisar cada esquema lógico local con el usuario correspondiente. 8. Mezclar los esquemas lógicos locales en un esquema lógico global. 9. Validar el esquema lógico global. 10. Estudiar el crecimiento futuro. 11. Dibujar el diagrama entidad/relación final. 12. Revisar el esquema lógico global con los usuarios. Tema 7. Diseño lógico de bases de datos relacionales 3

1. Convertir los esquemas conceptuales locales en esquemas lógicos locales (a) Sustituir cada relación entre tres o más entidades por una entidad intermedia. La cardinalidad de las nuevas relaciones binarias dependerá de su significado. Si la relación sustituida tiene atributos, éstos serán los atributos de la nueva entidad. fecha PILOTO (0,n) viaje (0,n) AVIÓN (0,n) codpil codavi matrícula TRIPULACIÓN fecha codtrip PILOTO (0,n) (1,1) viaje (1,n) (1,1) (0,n) AVIÓN codpil codavi matrícula (0,n) TRIPULACIÓN codtrip Tema 7. Diseño lógico de bases de datos relacionales 4

(b) Eliminar las relaciones redundantes. posee (1,1) (1,1) ANIMAL pertenece (1,n) (1,n) ZOO (1,n) alberga (1,n) ESPECIE (1,n) residencia (0,n) EMPLEADO CIUDAD (0,1) nacimiento (0,n) Tema 7. Diseño lógico de bases de datos relacionales 5

2. Derivar un conjunto de relaciones para cada esquema lógico local (a) Cada entidad del esquema conceptual se transforma en una relación base (tabla). Los atributos de la entidad se convierten en los atributos de la tabla. Cada componente de un atributo compuesto se convierte en un atributo de la tabla. Por cada atributo con cardinalidad máxima mayor que uno se incluye una tabla dentro de la tabla, como un atributo más. De entre los identificadores de la entidad se debe escoger uno como clave primaria de la tabla. edición (1,n) LIBRO isbn editorial número año título (1,n) autor idioma título_ppal subtítulo LIBRO(isbn, editorial, AUTOR(autor), idioma, título_ppal, subtítulo, EDICIÓN(número, año)) Tema 7. Diseño lógico de bases de datos relacionales 6

(b) Hay tres opciones para representar las jerarquías de generalización. E ( p/t, e/s ) a1 a2 E1 a3 E2 a4 E3 a5 opción (1) (0,1) E (0,1) a1 a2 (0,1) opción (2) (1,1) (1,1) (1,1) E1 E2 E3 a3 a4 a5 E1 E2 E3 a4 (0,1) a1 E a2 a5 a3 a1 a2 a4 a1 a2 a5 a1 a2 (0,1) (0/1,1/n) AD Tema 7. Diseño lógico de bases de datos relacionales 7 a3 (0,1) opción (3)

(1) Una tabla por cada entidad. Sirve para cualquier tipo de jerarquía (t/p, e/s). E(a1, a2), E1(a1, a3), E2(a1, a4), E3(a1, a5) E1.a1, E2.a1, E3.a1 son claves ajenas a E Nulos Borrado (2) Una tabla por cada subentidad. Sólo sirve para jerarquías totales y exclusivas. E1(a1, a2, a3), E2(a1, a2, a4), E3(a1, a2, a5) (3) Integrar todas las entidades en una tabla. Sirve para cualquier tipo de jerarquía (t/p, e/s). E(a1, a2, a3, a4, a5, tipo) si es exclusiva; a3, a4, a5 aceptan nulos; tipo acepta nulos si es parcial. E(a1, a2, a3, a4, a5, AD(tipo) ) si es superpuesta; a3, a4, a5 aceptan nulos; Tema 7. Diseño lógico de bases de datos relacionales 8

(c) Por cada relación binaria (1:1), incluir la clave primaria de la tabla correspondiente a la entidad padre en la tabla de la entidad hijo como una clave ajena. Y los atributos de la relación? EMPLEADO (0,1) (1,1) conduce hijo VEHíCULO codemp fecha_ini matrícula modelo hijo EMPLEADO (1,1) (0,1) conduce VEHíCULO codemp fecha_ini matrícula modelo Tema 7. Diseño lógico de bases de datos relacionales 9

EMPLEADO codemp hijo (0,1) (1,1) conduce VEHíCULO fecha_ini matrícula modelo nulos? EMPLEADO(codemp, ) VEHíCULO(matrícula, modelo, codemp, fecha_ini) codemp VEHíCULO EMPLEADO Nulos Borrado hijo EMPLEADO codemp (1,1) (0,1) conduce VEHíCULO fecha_ini matrícula modelo son tan diferentes? nulos? VEHíCULO(matrícula, modelo) EMPLEADO(codemp,, matrícula, fecha_ini) matrícula EMPLEADO VEHíCULO Nulos Borrado Y si las dos entidades participan con cardinalidad (0,1)? Y si son ambas (1,1)? Tema 7. Diseño lógico de bases de datos relacionales 10

Ojo: Si las entidades relacionadas son sinónimos, integrarlas en una sola tabla. codcli CLIENTE (0,1) (1,1) ENVÍO son sinónimos!! dirección dirección nulos? CLIENTE(codcli, dirección,, dirección_envío) ENVÍO es una entidad débil porque no tiene atributos que le sirvan como identificador. Ejercicio codper acompaña_a (0,1) PERSONA (1,1) es_acompañada_por Tema 7. Diseño lógico de bases de datos relacionales 11

(d) Por cada relación binaria (1:n), incluir la clave primaria de la tabla correspondiente a la entidad padre en la tabla de la entidad hijo (será una clave ajena). Y los atributos de la relación? padre PROFESOR (0/1,n) tutor (1,1) ESTUDIANTE codpro fecha codest padre HABITACIÓN (0/1,n) ocupa (0,1) ESTUDIANTE numhab edificio fecha codest Tema 7. Diseño lógico de bases de datos relacionales 12

padre (0/1,n) PROFESOR codpro tutor fecha (1,1) ESTUDIANTE codest nulos? PROFESOR(codpro, ) ESTUDIANTE(codest,, codpro, fecha) codpro ESTUDIANTE PROFESOR Nulos Borrado padre (0/1,n) (0,1) HABITACIÓN numhab edificio ocupa fecha ESTUDIANTE codest HABITACIÓN(numhab, edificio) ESTUDIANTE(codest,, numhab, fecha) numhab ESTUDIANTE HABITACION nulos? Nulos Borrado Y si hay muy pocos estudiantes que viven en una habitación del campus? Tema 7. Diseño lógico de bases de datos relacionales 13

Ejercicios CLIENTE (0/1,n) (,?) CITA codcli fecha hora codcli recomienda_a CLIENTE (0,n) (1,1) recomendado_por Tema 7. Diseño lógico de bases de datos relacionales 14

(e) Por cada relación binaria (m:n), incluir una nueva tabla con una clave ajena a cada una de las tablas correspondientes a las entidades participantes. La clave primaria, la clave primaria... cuál es la clave primaria? Y los atributos de la relación? ASIGNATURA (0,n) (1,n) cursa ESTUDIANTE codasi codest PACIENTE (1,n) cita (0,n) MÉDICO codpac codmed fecha hora Tema 7. Diseño lógico de bases de datos relacionales 15

ASIGNATURA (0,n) (1,n) cursa ESTUDIANTE ASIGNATURA(codasi, ) ESTUDIANTE(codest, ) codasi codest CURSA(codest, codasi) codest CURSA ESTUDIANTE codasi CURSA ASIGNATURA Nulos Borrado PACIENTE (1,n) (0,n) cita MÉDICO codpac codmed fecha hora PACIENTE(codpac, ) MÉDICO(codmed, ) CITA(codmed, fecha, hora, codpac) codmed CITA MÉDICO codpac CITA PACIENTE Nulos Borrado Tema 7. Diseño lógico de bases de datos relacionales 16

Resumen de la correspondencia entre esquemas para las relaciones binarias Relación 1:1 Relación 1:n Relación n:m Integrar las dos tablas correspondientes a cada una de las entidades participantes en la relación binaria, en una sola tabla. Es lo más aconsejable cuando ambas entidades tienen el mismo identificador. Los atributos de la relación binaria también estarán en la tabla. OJO: es posible que algunos atributos deban aceptar nulos. Para este tipo de relaciones binarias no se puede escoger esta opción. Para este tipo de relaciones binarias no se puede escoger esta opción. Poner una clave ajena en la tabla correspondiente a una de las entidades participantes en la relación binaria. La clave ajena se puede poner en cualquiera de las tablas. La tabla que recibe la clave ajena también recibe los atributos de la relación binaria. OJO: es posible que algunos atributos deban aceptar nulos. La clave ajena se debe poner en la tabla correspondiente a la entidad que participa en la relación binaria con cardinalidad máxima 1. Los atributos de la relación binaria se ponen como atributos en la tabla que recibe la clave ajena. OJO: es posible que algunos atributos deban aceptar nulos. Para este tipo de relaciones binarias no se puede escoger esta opción. Añadir al esquema una nueva tabla en la que se refleje la relación binaria. Es lo más aconsejable cuando ambas entidades participan en la relación de forma opcional y hay pocas ocurrencias de la misma. Esta nueva tabla tiene una clave ajena a cada una de las dos tablas y también los atributos de la relación binaria. La nueva tabla tiene una clave ajena a cada una de las dos tablas y también los atributos de la relación binaria. La clave primaria de la nueva tabla será la clave ajena que hace referencia a la tabla de la entidad que participa en la relación binaria con cardinalidad máxima 1. Esta nueva tabla tiene una clave ajena a cada una de las dos tablas y también los atributos de la relación binaria. La clave primaria variará según el significado de la relación binaria (hay que "meditarla"). Tema 7. Diseño lógico de bases de datos relacionales 17

Continuamos con la metodología de diseño lógico... 3. Validar cada esquema lógico local mediante la normalización. 4. Validar cada esquema frente a las transacciones del usuario. 5. Dibujar el diagrama entidad relación. 6. Definir las restricciones de integridad. (a) Datos requeridos. (b) Restricciones de dominios. (c) Integridad de entidades. (d) Integridad referencial. (1) Regla de los nulos (Sí admite / No admite). (2) Regla del borrado (Restringir / Propagar / Anular). (3) Regla de la modificación (Restringir / Propagar / Anular). (e) Reglas de negocio. Tema 7. Diseño lógico de bases de datos relacionales 18

Continuamos con la metodología de diseño lógico... 7. Revisar cada esquema lógico local con el usuario. Utilizar los DFD para comprobar la consistencia y completitud de los esquemas lógicos. 8. Mezclar los esquemas lógicos locales en un esquema lógico global. 9. Validar el esquema lógico global. 10. Estudiar el crecimiento futuro. 11. Dibujar el diagrama entidad/relación final. 12. Revisar el esquema lógico global con los usuarios. Tema 7. Diseño lógico de bases de datos relacionales 19

3. Normalización Técnica para diseñar bases de datos relacionales. Se debe a Codd (1972). No se utiliza como una estrategia de diseño de bases de datos. Se utiliza para verificar esquemas relacionales. Ventajas Evita anomalías en inserciones, modificaciones y borrados. Mejora la independencia de datos. Tema 7. Diseño lógico de bases de datos relacionales 20

Fecha: 16/2/99 Pedido nº: 123456 Proveedor nº: 9876 Nombre del proveedor: Productos Surtidos Dirección del proveedor: Borriol, Castellón Deseamos envíen: Número producto Descripción Precio unitario Cantidad Total 511246 Televisión 70.000 1 70.000 124456 Clavija antena 100 10 1.000 124763 Enchufe 150 10 1.500 Importe total: 72.500 Tema 7. Diseño lógico de bases de datos relacionales 21

PEDIDO (npedido, nprov, nomprov, dirprov, fecha, LÍNEA (nproducto, descrip, precio, cant, total), importe) PEDIDO LÍNEA x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x Hay atributos que tienen valores de tipo relación (tabla). Tema 7. Diseño lógico de bases de datos relacionales 22

PEDIDO (npedido, nprov, nomprov, dirprov, fecha, importe) LÍNEA (npedido, nproducto, descrip, precio, cant, total) PEDIDO npedido x x x x x x x x x x x x LÍNEA npedido nproducto x x x x x x x x x x x x x x x x x x x x x x x x Tema 7. Diseño lógico de bases de datos relacionales 23

PEDIDO (npedido, nprov, nomprov, dirprov, fecha, importe) LÍNEA (npedido, nproducto, descrip, precio, cant, total) LÍNEA npedido PEDIDO Guardar nuevo producto. Producto nº 511944, Reproductor de vídeo, 35.000 pesetas. Modificar el precio de un producto. Producto nº 511246, Televisión, 68.000 pesetas. Eliminar la única compra de un producto: Producto nº 124763, Enchufe, 150 pesetas. Anomalías en las actualizaciones de datos! Tema 7. Diseño lógico de bases de datos relacionales 24

PEDIDO (npedido, nprov, nomprov, dirprov, fecha, importe) LÍNEA (npedido, nproducto, cant, total) PRODUCTO (nproducto, descrip, precio) LÍNEA npedido PEDIDO LÍNEA nproducto PRODUCTO Guardar nuevo proveedor. Proveedor nº 5194, Don Proveedor, Játiva. Modificar la dirección de un proveedor. Proveedor nº 9876, Productos Surtidos, Castellón de la Plana. Eliminar la única compra realizada a un proveedor. Anomalías en las actualizaciones de datos! Tema 7. Diseño lógico de bases de datos relacionales 25

PEDIDO (npedido, nprov, fecha, importe) LÍNEA (npedido, nproducto, precio, cant, total) PRODUCTO (nproducto, descrip, precio) PROVEEDOR (nprov, nomprov, dirprov) PEDIDO LÍNEA LÍNEA nprov npedido nproducto PROVEEDOR PEDIDO PRODUCTO Tema 7. Diseño lógico de bases de datos relacionales 26

Dependencia funcional Y es funcionalmente dependiente de X, si X determina el valor de Y: X Y Ejemplo: CLIENTE(codcli,, codpostal, población) codpostal población Observaciones La dependencia funcional es una noción semántica. Cada dependencia funcional es una clase especial de regla de integridad. Cada dependencia funcional representa una relación de uno a muchos. Tema 7. Diseño lógico de bases de datos relacionales 27

Primera forma normal (1FN) Una relación está en 1FN si, y sólo si, todos sus dominios contienen valores atómicos. PRODUCTO codprod VERSIÓN número fecha ventas LH4 Ladrillo hueco 1 1/3/1996 30.000 2 1/8/1998 50.000 3 1/2/2000 13.000 LP7 Ladrillo perforado 1 1/6/1996 70.000 2 1/12/2000 grupos repetitivos (valores no atómicos) PRODUCTO (codprod,, VERSIÓN (número, fecha, ventas)) 1FN Se descompone en: PRODUCTO (codprod,, descripción) hereda la clave primaria VERSIÓN (codprod, número, fecha, ventas) OJO VERSIÓN codprod PRODUCTO Nulos Borrado Tema 7. Diseño lógico de bases de datos relacionales 28

Segunda forma normal (2FN) Una relación está en 2FN si, y sólo si, está en 1FN y, además, cada atributo no clave depende completamente de la clave primaria (no depende de algún subconjunto). INSCRIPCIÓN (estudiante, actividad, precio) actividad precio 2FN estudiante actividad precio estudiante actividad precio 100 Tenis 1500 100 Yoga 1500 200 Tenis 1500 300 Escalada 5000 misma actividad, mismo precio. Se descompone en las proyecciones: INSCRIPCIÓN (estudiante, actividad) y ACTIVIDAD (actividad, precio) INSCRIPCIÓN actividad ACTIVIDAD Nulos Borrado Tema 7. Diseño lógico de bases de datos relacionales 29

Tercera forma normal (3FN) Una relación está en 3FN si, y sólo si, está en 2FN y, además, cada atributo no clave no depende transitivamente de la clave primaria. INQUILINO (inqulino, edificio, alquiler) 3FN edificio edificio alquiler inquilino alquiler inquilino edificio alquiler 100 E04 50.000 200 E13 50.000 300 E09 65.000 400 E04 50.000 mismo edificio, mismo alquiler. Se descompone en las proyecciones: INQUILINO (inqulino, edificio) y EDIFICIO (edificio, alquiler) INQUILINO edificio EDIFICIO Nulos Borrado Tema 7. Diseño lógico de bases de datos relacionales 30

Ejercicio de normalización estudiante apellido DNI dirección codbeca nombeca requisito fecha 0123 Carlos Gil 159357 C/ Paz, 23 A223 EEUU Ing. Sup. 10/10/98 7636 Paula Tena 913752 C/ Río Po, 1 B567 ERASMUS Ing. Téc. 12/11/98 7636 Paula Tena 913752 C/ Río Po, 1 A223 EEUU Ing. Sup. 14/10/98 7636 Paula Tena 913752 C/ Río Po, 1 G654 DRAC Ing. Sup. 15/09/99 0123 Carlos Gil 159357 C/ Paz, 23 G654 DRAC Ing. Sup. 17/09/98 9516 Andrés Calpe 682432 Plz. Sol, 40 G654 DRAC Ing. Sup. 12/09/99 0123 Carlos Gil 159357 C/ Paz, 23 B567 ERASMUS Ing. Téc. 12/11/98 9516 Andrés Calpe 682432 Plz. Sol, 40 B567 ERASMUS Ing. Téc. 23/11/99 0123 Carlos Gil 159357 C/ Paz, 23 A223 EEUU Ing. Sup. 12/10/99 3361 Lucía Porcar 243115 Plz. Sol, 26 A223 EEUU Ing. Sup. 12/10/99........................... SOLICITUD (estudiante, codbeca, fecha,, apellido, DNI, dirección, nombeca, requisito) Tema 7. Diseño lógico de bases de datos relacionales 31

4. Desnormalización, partición de relaciones y optimización A partir del esquema lógico obtenido y teniendo en cuenta el modelado de la carga... Se pueden fundir varias relaciones en una si se usan juntas con frecuencia mediante operaciones de JOIN Desnormalización. Se pueden dividir algunas relaciones con el objeto de reorganizar la distribución de los casos Partición Horizontal, o de los atributos Partición Vertical, de manera que una relación incluya atributos o casos a los que se requiera acceso simultáneo con frecuencia. Se pueden introducir otros cambios para conseguir un acceso más eficiente Optimización. Tema 7. Diseño lógico de bases de datos relacionales 32

Desnormalización Por ejemplo, se pueden fusionar las relaciones: CLIENTE(codcli,, codpostal) y CODPOSTAL(codpostal, codpueblo) en una sola relación: CLIENTE(codcli,, codpostal, codpueblo) Así se mejora el funcionamiento frente a la necesidad de hacer el JOIN de las dos tablas. Se notará más la mejora cuanto más frecuentes sean los accesos. Pero mucho OJO: se han introducido redundancias que ahora será necesario controlar alguna idea sobre cómo hacerlo? Tema 7. Diseño lógico de bases de datos relacionales 33

Partición de tablas Por ejemplo, se puede descomponer la siguiente relación: EMPLEADO(codemp,, teléfono, fecha_eval, aspecto1, aspecto2) en las relaciones: EMPLEADO(codemp,, teléfono) EVALUACION(codemp, fecha_eval, aspecto1, aspecto2) porque no se accede con frecuencia a los datos de la evaluación de los empleados, o bien porque se quiere preservar la seguridad de los mismos. Y qué hacemos para el usuario que necesita ver la tabla tal y como estaba? Tema 7. Diseño lógico de bases de datos relacionales 34

Optimización UNIVERSIDAD(universidad, director, vicedirector) Cada universidad tiene un director y de uno a tres vicedirectores clave primaria? Hay una dependencia funcional no deseada: universidad director UNIVERSIDAD no se encuentra en 2FN debe descomponerse en: UNIVERSIDAD(universidad, director) ASISTENTE (universidad, vicedirector) Siempre que una aplicación necesite información de la universidad, debe leer entre dos y cuatro filas de datos. Una alternativa que consigue mayor eficiencia es: UNIVERSIDAD(universidad, director, vicedirector1, vicedirector2, vicedirector3) nulos? nulos? nulos? Tema 7. Diseño lógico de bases de datos relacionales 35