BASES DE DATOS U.D.1. Sistemas de gestión de bases de Datos. U.D.2. Bases de Datos Relacionales. • Modelo E/R. • Transformación del esquema E/R al Relacional.(Operaciones básicas sobre tablas). • Normalización(Access); U.D.3. SQL • Lenguaje de manipulación de datos. • Lenguaje de definición de datos. • Lenguaje de control de datos. ASI 2 U.D.1. Sistemas de gestión de bases de Datos. • Concepto y objetivos de los sistemas de Bases de Datos. • Distintos niveles de abstracción. • Sistemas Gestores de Bases de Datos (SGBD). • Interacción del usuario con el SGBD: Lenguajes. • El administrador de la Base de Datos. • Concepto y objetivos de los sistemas de Bases de Datos. Orígenes históricos: BD: Conjunto de datos más relaciones. Conjunto de información−>Características comunes. Surge en el año 1960 aunque no se empieza a usar hasta el año 1971. Sistema de BD: Conjunto de BB.DD. Surgen para solucionar los problemas que había en los ficheros. Problemática de ficheros: • Información inconsistente. DNI Nombre Dire Fech_Ing Tfno 1 Año_Trab Personal DNI Nombre Dire Sueldo SS Nóminas • Redundancia−>Datos repetidos. • Dependencia de los datos respecto al soporte físico y a los programas. • Confidencialidad y seguridad. Confidencialidad es impedir a ciertos usuarios consultar ciertos datos. Definición de B.D.: • De Miguel y Piattini−1993: Colección de datos integrados, con redundancia controlada y estructura que refleje las interrelaciones y restricciones existentes en el mundo real. Los datos que han de ser compartidos por distintos usuarios y aplicaciones deben mantenerse independientes de éstas , y su definición y descripción han de ser únicas, estando almacenadas junto a los mismos. Los procedimientos de actualización y recuperación han de ser capaces de mantener la seguridad y confidencialidad. • Sistema formado por un conjunto de datos y un paquete software para la gestión del mismo de tal forma que se controla el almacenamiento de los datos redundantes, los datos resultan independientes de los programas y se puede acceder a los datos de distinta forma. Objetivos: • Independencia de los datos respecto a tratamiento. • Coherencia en los resultados. • Mayor valor informativo. • Utilización múltiple. • Seguridad y confidencialidad. • Desempeño−>Atender con rapidez las peticiones de datos. • Redundancia mínima. • Integridad−>Evitar fallos en la base de datos. • Interfaz con el pasado y con el futuro. • Distintos niveles de abstracción ♦ Esquema externo: representa la visión individual de un usuario de la BBDD ! Programas de aplicación que manejan una parte de la información de usuarios. ♦ Esquema conceptual: describe cuáles son los datos reales que están almacenados en la BBDD y qué relaciones existen entre los datos: nombre, tamaño, tipo, relaciones, limitadores de integridad, etc. ♦ Esquema interno: representación más cercana al almacenamiento físico de datos. Describe los ficheros que contienen la información, organización, ubicación, tipos de registros, su longitud, campos, índices, forma de acceso. • S.G.B.D Definición: Es un conjunto coordinado de programas, procedimientos o lenguajes que suministra tanto a los usuarios no informáticos, como a personal informático los medios necesarios para describir, recuperar y manipular los datos almacenados en la base manteniendo la seguridad. Funciones: 2 ♦ Describir el esquema conceptual. ♦ Describir el esquema externo. ♦ Descripción de la organización física y recuperar tras un fallo. ♦ Interrogación directa para recuperar la información y acceso a los datos desde lenguajes de alto nivel. Ejemplos de SGBD comerciales: • Modelo jerárquico (1960). • Modelo en red (1970). • Modelo relacional (1986−Codd). • Usa los árboles para la representación lógica de los datos. Departamentos (Dpto_nº, Dnombre, loc) Empleados (Emp_nº, apell, oficio,..., Dept_nº) • • • • 10 Contab Sevilla 4422 Pérez red 4433 Sánchez 20 RRHH Madrid 5000 López 4444 García 5555 Carlos Ejemplos: IMS de IBM System 2000 de Intel Un registro puede tener n hijos pero cada hijo sólo un padre. • n hijos con n padres. Inconveniente: Todo está relacionado con todo. Ejemplos: DMS 1100 de Univac EDMS de Xerox 3 • Elemento principal son las relaciones representadas en tablas. Departamentos Empleados Dpto_nº Dnombre Loc 10 Contab Sevilla 20 RRHHMadrid Emp_nº Apell Of Dnombre Loc Pérez 4422 • Interacción del usuario con el SGBD: Lenguajes • Lenguaje de definición de datos o DDL: Se describen los datos, la estructura de esos datos, las relaciones entre esos datos, reglas de integridad, características físicas y las vistas de los usuarios, es decir, se hace una descripción de los esquemas físicos, de los esquemas conceptuales y los esquemas externos o distintas vistas. • Lenguaje de manipulación de datos o DML: Permiten manejar o tener acceso a la base de datos, es decir, insertar, buscar, modificar y borrar datos de la base de datos. Hay una instrucción llamada Insert para insertar. • Lenguaje de control de datos o DCL: Controla el acceso a la información de la base de datos y define los privilegios y los tipos de acceso y seguridad de los datos. Administrador de la base de datos. • El administrador de la BD Se le llama DBA y es el responsable del diseño, del control y de la administración de la base de datos. Puede ser una persona o varias personas. El ANSI /X3/SPARC en realidad dice que debe haber tres administradores: • Administrador de la empresa: Realiza el diseño conceptual y lógico de la base de datos. • Administrador de la base de datos: Realiza el diseño físico de la base de datos. • Administrador de aplicaciones: Realizan los distintos esquemas externos de la base de datos. Funciones generales: ♦ Diseñar la estructura de la base de datos. ♦ Descripción conceptual y lógica de la base de datos. ♦ Descripción física. ♦ Describir las vistas y los esquemas externos. ♦ Definir los estándares. ♦ Define la estrategia de transición. ♦ Aspectos relativos a la seguridad. ♦ Estar en comunicación con usuarios, directivos, analistas, operadores, programadores, suministradores de productos, ... U.D.2. Bases de Datos Relacionales • El modelo E/R(Análisis de datos) ♦ Introducción. ♦ Elementos del modelo E/R. ♦ Construcción de un esquema E/R. ♦ Paso de E/R a modelo relacional(Diseño de datos) ◊ Modelo Relacional. ◊ Reglas de transformación. ◊ Operaciones básicas sobre tablas. 4 ◊ Normalización ⋅ Introducción. ⋅ Noción intuitiva de F.N(Formas Normales). ⋅ El modelo E/R(Análisis de datos) • Introducción. Propuesto por Peter P. Chen en 1976 y según este autor, el modelo E/R se usa para representar los datos y las relaciones entre ellos usando una serie de símbolos y reglas. • Elementos del modelo E/R. • Entidades. • Relaciones. • Atributos. • Generalización de entidades. Relación Atributo Atributo • Es un objeto real o abstracto acerca del cual queremos almacenar información en la base de datos. Ejemplos: persona, cosa, lugar. Hay dos tipos: − Fuertes o regulares: La que tiene existencia por si misma y se representa así: − Débil: Aquella cuya existencia depende de una entidad fuerte y se representa así: Ejemplos: Si desaparece el empleado, familiar sería una entidad débil. Si desaparece el funcionario, hijo sería una entidad débil. Si desaparecen los libros, ejemplar sería débil. 2. Es la asociación entre entidades y se representa así: . Cada relación tiene un nombre que la identifica. El grado de una relación es el número de entidades que intervienen en la relación y puede haber: − Grado 2: Unen dos entidades. − Grado 1: Une una entidad consigo misma. − Grado n: Más de dos entidades. Tipo de correspondencia: Es el nº máximo de ocurrencias de cada entidad que pueden intervenir en una ocurrencia de la relación que se está tratando. − 1:1. 5 − 1:N. Uno a muchos. − N:1. Muchos a uno. − N:M. Muchos a muchos. Cardinalidad: Nº máximo y mínimo de ocurrencias de una entidad que pueden estar relacionados con una ocurrencia de otra u otras entidades que participan en la relacion. Puede tomar los valores (0,1), (1,1), (0,n), (1,n), (n,m). (0,n) (1,1) (1,1) (0,1) Si la relación es entre una entidad débil y una fuerte, se habla de una dependencia en identificación y en existencia. ♦ Se dice que hay dependencia en existencia cuando las ocurrencias de una entidad débil no pueden existir si desaparece la entidad regular de la que depende. ♦ Dependencia en identificación es cuando además de lo anterior, las ocurrencias de la débil no se pueden identificar únicamente mediante los atributos propios y exigen añadir la clave de la entidad de la que dependen(toda dependencia en identificación lo es en existencia). Las dependencias en identificación se representan y las de existencia Ejemplo: Cod_planta Num_habitación Otro aspecto a tener en cuenta es que las relaciones pueden ser exclusivas y se representa mediante un . Ejemplo: Un empleado es responsable de un departamento o bien trabaja en varios proyectos. 3. Son las propiedades de las entidades o las relaciones. Toman sus valores de los dominios, siendo un dominio el conjunto de valores que puede tomar un atributo. Nombre: Es el atributo identificador principal, los que identifican unívocamente las entidades. Nombre: Atributo identificador alternativo. Nombre: Atributos normales. En las relaciones se pueden encontrar los atributos normales. 6 Generalización: La generalización es una necesidad muy habitual. La relación que se establece entre un supertipo de entidad y sus subtipos corresponde a la notación de es un o es un tipo de. Se representa por un triángulo invertido y en esta relación toda ocurrencia de un subtipo es una ocurrencia del supertipo aunque no sucede lo contrario, con lo que las cardinalidades serán (1,1) en el supertipo y (n,1) en el subtipo. Tiene una característica importantísima: La herencia: Es el modo que todo lo que le pase al supertipo le pasa también al subtipo, de modo que todos los atributos del subtipo serán también del supertipo. Los específicos del subtipo serán también al subtipo. Las relaciones que afecten a todos los subtipos se asocian al supertipo asociando al subtipo las específicas. Ejemplo: Tipo Supertipo Cargo (1,1) (0,1) (0,1) Subtipo Cualidad Fecha ♦ Construcción de un esquema E/R No existen reglas que nos digan que elemento va a ser entidad o relación, pero existen normas generales que podemos aplicar: ♦ Un sustantivo que actúa como sujeto o O.D es una entidad(puede ser un atributo). ♦ Los nombres propios suelen ser ocurrencias de una entidad. ♦ Un verbo suele ser una relación. ♦ Preposición entre dos nombres suele ser o una relación o asocia entidad y su atributo. Batini−1993: • Descendente: Se parte de una entidad y se descompone al detalle de los atributos. • Ascendente: Se parten los atributos, se agrupan en entidades y se agrupan por relaciones. • Inside − Out: Se empieza creando el esquema entidad−relación en una parte del papel y luego se va ocupando todo el papel. • Mixto: Descendente y mancha de aceite. Ejemplo de redundancia: Sólo N:M. (1,n) 7 (1,1) (1,1) (1,1) (1,n) (1,n) C1 Fecha (1,n) (1,n) C1 asignado adscrito se encuentra D1 P1 C1 D1 C1 P2 C2 C2 no es redundante P3 C3 C3 C2 C1 C2 C1 P1 D1 C1 D1 P2 D2 P3 D3 Adscrito asignado Cardinalidad Vivienda pertenece como mínimo ( ) municipio (,)(,) Mínimo de municipios Máximo de municipios Un municipio tiene Vivienda como máximo ( ) municipio como mínimo ( ) viviendas. Un municipio tiene como máximo ( ) viviendas. 8 Ejemplo: NO ES LO MISMO • Paso de E/R a modelo Relacional(Diseño de datos) ♦ Modelo Relacional Surge en 1960 por Codd, pero no se usa hasta el año 1980. El elemento más importante es la relación y está representada mediante tablas. Las tablas tienen columnas que son los atributos de la relación y filas llamadas tuplas y son las distintas ocurrencias de la relación. Modelo Relacional Gráficamente Relación Atributos Tuplas Tablas Columnas Filas Información tradicional Ficheros Campos Registros ♦ Cardinalidad: Es el número de tuplas. ♦ Grado: Es el número de atributos. ♦ Dominio: Conjunto de valores que puede tomar un atributo. ♦ Claves: Se distingue entre clave candidata: Conjunto de atributos que determina mínima y unívocamente cada tupla. En una relación pueden existir varias claves candidatas. Ejemplo: Empleados(Cod_E, DNI, Nombre, Sueldo, ...). Aquí las claves candidatas pueden ser o Cod_E o el DNI y de entre éstas dos, una debe ser la clave principal llamada también clave primaria y el resto de claves se llaman claves alternativas. Claves ajenas: Es el conjunto de atributos, cuyos valores coinciden con los valores de la clave primaria de otra relación(o de ella misma). Ejemplo: Cod_E DNI Nombre (1,n) (1,1) (0,n) (1,1) Cod_D Local Nombre Empleados(Cod_E, Nombre, Sueldo, Cod_D[fk], Cod_E_Superior[fk]) Departamentos(Cod_D, Nombre, Localidad) Dos reglas importantes: 9 ♦ Integridad de entidad: Ningún atributo que forma parte de la clave primaria de una relación puede tomar un valor nulo. ♦ Integridad referencial: Los valores de la clave ajena o bien coinciden con los de la clave primaria a la que referencian, o bien son nulos, por tanto, para cada clave ajena se debe especificar si puede o no tomar valores nulos. Operaciones Es necesario determinar las consecuencias del borrado y modificación realizadas sobre tuplas de la relación referenciada. Ejemplo: Empleados(Cod_E, DNI, Nombre, Sueldo, Cod_D[fk]) Departamentos(Cod_D, Nombre, Localidad) ♦ Operación restringida: El borrado o la modificación de tuplas de la relación que contiene la clave primaria referenciada, sólo se permite si no existen tuplas con dicha clave en la relación que contiene la clave ajena. Ejemplo: Cod_Dep Nombre Local 1 Administración Vall 2 Comercial Burgos Cod_EDNI Nombre Sueldo Cod_Dep 12 12 Pepe 1 15 15 Juan 1 16 16 Lola 1 En este caso sólo se puede borrar el departamento 2. ♦ Operación en cascada: Lleva consigo el borrado o la modificación en cascada de las tuplas con dicha clave en la relación que contiene la clave ajena. En este caso si se borra el departamento 1 desaparecen todos los empleados de ese departamento. ♦ Con puesta a nulos(Set Null): Lleva consigo poner a nulos los valores de la clave ajena de la relación que referencia. Esta opción es posible cuando la clave ajena puede ser puesta a nulo. ♦ Operación con puesta a valor por defecto: Lleva consigo poner a valor por defecto a la clave ajena de la relación que referencia. Este valor por defecto se habrá definido al crear la tabla. ♦ Operación que desencadena un procedimiento de usuario: El borrado o modificación de tuplas de la tabla referenciada, pone en marcha un procedimiento determinado por el usuario. ♦ Reglas de transformación 10 ♦ Toda entidad se transforma en una relación. ♦ Toda entidad N:M se transforma en una relación. ♦ Toda interrelación 1:N se traduce en una propagación de claves. Ejemplo: Código Título Idioma País Nombre Dire Ciudad Nombre Nación Libro (Código, título, idioma, nombre_e[fk]) Editorial (Nombre_e, dirección, ciudad, país). Autor (Nombre_a, nacionalidad). Escribe (Código[fk], Nombre_a[fk]). Otro ejemplo: Clientes (Cod_cli). Pedidos (Cod_ped , Fecha). Artículos (Cod_art). Agrupa (Cod_ped[fk], Cod_art[fk]). Casos a considerar: ◊ Interrelaciones 1:1: Se pueden representar de distintas maneras atendiendo a las cardinalidades de la relación. ◊ Si las entidades que se asocian tienen (0,1): Se puede propagar la clave a cualquiera de las dos entidades o crear una nueva relación además de las dos relaciones que representan cada una de las dos entidades. Ejemplo: (0,1) (0,1) DNI_H DNI_M 11 Sol 1: Hombre (DNI_H ,..., DNI_M[fk]). Mujer (DNI_M). Sol 2: Hombre (DNI_H). Mujer (DNI_M, DNI_H[fk]). Sol 3: Hombre (DNI_H). Mujer (DNI_M). Matrimonio (DNI_H[fk], DNI_M[fk]). ◊ Las entidades que se asocian tienen como cardinalidades (0,1) (1,1): Se propaga la clave de la entidad con cardinalidad (1,1) a la tabla resultante de cardinalidad (0,1). Ejemplo: (1,1) (0,1) Cod_emp Nombre_emp Cod_D Nombre_D Empleado (Cod_emp, Nombre_emp) Departamento (Cod_D, Nombre_D, Cod_emp[fk]). ◊ Si las dos entidades tienen cardinalidad (1,1): Se puede propagar la clave de cada una de ellas a la tabla resultante de la otra. También se puede plantear la propagación de las dos claves pero puede atraer redundancias. Ejemplo: (1,1) (1,1) Cod_X Cod_Y X (Cod_X). Y (Cod_Y, Cod_X[fk]). X (Cod_X, Cod _Y[fk]). Y (Cod_Y,). X (Cod_X, Cod_Y[fk]). Y (Cod_Y, Cod_X[fk]). 12 ⋅ Interrelaciones 1:N: Se traduce como propagación de claves y se van a analizar las reflexivas. Ejemplo 1: (0,n) (0,1) Cod_Tema Ejemplo 2: (0,1) (0,n) Cod_E Para este ejemplo la solución es una tabla. Sol 1: Empleado (Cod_E,..., Cod_E_Sup[fk]). Sol 2: Empleado (Cod_E). Jefe (Cod_E[fk], Cod_E_Sup[fk]). Ejemplo 3: (1,1) (0,n) Cod_E Aquí la solución correcta sería: Empleado (Cod_E,..., Cod_E_Sup[fk]). Borrado restringido en cascada. Y la modificación restringida o en cascada. Y Cod_E_Sup es NOT NULL. Ejemplo 4: (1,1) (1,n) Editorial (Cod_Ed). Libro (Cod_L, Cod_Ed[fk]). Modificación restringida y borrado restringido, y Cod_Ed es NOT NULL. 13 En existencia y en identificación No se recoge en el modelo relacional. a) Dependencia en existencia(mecanismo de propagación de claves): Creando una clave ajena con nulos no permitidos en la relación de la entidad dependiente con la característica de obligar a una modificación y un borrado en cascada. Ejemplo: (1,1) (0,n) Cod_emple Nombre DNI Nombre Empleado(Cod_emple[pk], Nombre) Familiar(DNI[pk],Nombre,Cod_emple[fk])Borrado y modificación en cascada y es not null. b) Dependencia en identificación: Además de la dependencia en existencia la clave primaria de la relación de la entidad débil debe estar formada por la concatenación de las claves de las dos entidades participantes en la relación. Ejemplo: (1,1) (0,n) Cod_libro Cod_ejemplar Libro(Cod_libro[pk]) Ejemplar(Cod_ejemplar[pk],Cod_libro[fk])Borrado y modificación en cascada y es not null. ⋅ Transformación de relaciones N:M: Se transforma en tres tablas. Ejemplo: Fecha_ent Fecha_sal Cod_autor Cod_libro Autor(Cod_autor[pk]) Escribe(Cod_autor[fk], Cod_libro[fk], Fecha_ent, Fecha_sal) Libro(Cod_libro[pk]) 14 ⋅ Transformación de tipos y subtipos: Hay varias soluciones. Ejemplo: Título Código Idioma Suplemento Páginas SOL1: Documento(Código[pk], Idioma, Título, Suplemento, Páginas, tipo) SOL2: Dcumento(Código[pk], Título, Idioma) Artículo(Código[pk], Suplemento) Libro(Código[pk], Páginas) SOL3: Libro(Código[pk], Título, Idioma, Páginas) Artículo(Código[pk], Título, Idioma, Suplemento) ◊ Crear una tabla con todos los atributos de la entidad y de los subtipos. Se utiliza cuando los subtipos se diferencian en poco y las entidades que los asocian es la misma. Se añade un atributo adicional llamado tipo que discrimina a los subtipos y se llama discriminante. ◊ Se crea una relación para el supertipo y tantas relaciones como subtipos haya con sus atributos correspondientes. Se adopta esta solución cuando hay muchos atributos distintos para los subtipos queriéndose mantener de todas formas los atributos de todos ellos en una relación. ◊ Relaciones distintas para cada subtipo, conteniendo además de sus propios atributos, los atributos comunes. ⋅ Transformación de interrelaciones exclusivas: Cod_libro Cod_editorial Cod_uni Libro(Cod_libro[pk],..., Cod_editorial[fk], Cod_uni[fk]) Editorial(Cod_editorial([pk]) 15 Universidad(Cod_universidad[pk]) ⋅ Operaciones básicas sobre tablas Está basado en el álgebra relacional y los operandos son dos tablas y el resto es otra tabla. Operaciones básicas ⋅ Operaciones unarias(1 tabla): Selección y proyección. ⋅ Operaciones binarias(2 tablas): Unión, diferencia y producto cartesiano. ⋅ Operaciones derivadas: Intersección, cociente y combinación o join. ⋅ Selección: Obtiene un subconjunto de filas de una tabla con todas sus columnas. Se pueden seleccionar determinadas filas incluyendo en una operación una condición. condición (Tabla) NºDPTO=20 (Empleados) ⋅ Proyección: Da como resultado una nueva tabla a partir de otra con el subconjunto de columnas indicado. Las filas duplicadas sólo aparecen una vez. col1 col2 (Tabla) apellido salario (Empleados) ⋅ Unión: Dos tablas se pueden unir si tienen el mismo número de columnas y dominios compatibles y el resultado es otra tabla con las filas de esas dos tablas y las filas repetidas sólo aparecen una vez. Tabla1 Tabla2 Emple1 Emple2 Emple 1 Emple 2 Emple1 Emple2 Nº Nombre emp 1001 Rosa 1005 Fernando Nº Nombre emp 16 1001 1005 2001 2010 Nº emp 2001 2010 1005 Rosa Fernando Pilar Octavio Nombre Pilar Octavio Fernando ⋅ Diferencia: Sólo es posible si tienen el mismo nº de columnas y dominios compatibles. El resultado es otra tabla con las filas que estén en una tabla y no pertenecientes a la otra. Tabla 1 − Tabla2 S = Emple1 − Emple2 S = Emple1 − Emple 2 S = Emple2 − Emple1 Nº Nombre emp 1001 Rosa Nº emp Nombre 2001 Pilar 2010 Octavio ⋅ Producto cartesiano: Se puede realizar entre dos tablas que tengan distinto número de columnas. El resultado es otra tabla que contiene la suma de columnas de ambas tablas y el conjunto formado por todas las filas de ambas tablas. No pueden existir columnas con el mismo nombre. Tabla1 x Tabla2 Ventas Artículos Cod Fecha Cant 5100 18/11/05 100 5200 19/11/05 120 5100 19/11/05 45 Código Denom Exist PVP 17 5100 5200 Patatas 500 78 Cebollas 250 90 S = Ventas x Artículos Cod Fecha Cant Código Denom Exist PVP 5100 18/11/05 100 5100 Patatas 500 78 5100 18/11/05 100 5200 Cebollas 2500 90 5200 19/11/05 120 5100 Patatas 5200 19/11/05 120 5200 Cebollas 5100 19/11/05 45 5100 Patatas 5100 19/11/05 45 5200 Cebollas ⋅ Intersección: Es otra tabla formada por las filas que aparecen en ambas tablas y las columnas de una de las tablas. Las tablas han de tener el mismo número de columnas y dominios compatibles. Tabla1 Tabla2 Emple1 Emple2 Nº Nombre emp 1005 Fernando ⋅ Cociente: Se realiza entre dos tablas que cumplan las siguientes condiciones: ⋅ T1 debe tener columnas de T2 y el número de columnas ha de ser mayor que el de T2. ⋅ T2 debe tener al menos una fila. El cociente es una nueva tabla formada por las columnas de T1 que no están en T2 y por las filas obtenidas al concatenar con T2 que estén contenidas en T1. Tabla1 Tabla2 A 1 4 7 1 A 2 7 BC 64 31 02 23 B 3 1 18 S = Tabla1 : Tabla2 Concatenación A 1 A 1 1 4 4 7 7 1 1 B 2 7 2 7 2 7 2 7 C 3 1 3 1 3 1 3 1 ⋅ Combinación o join: Se obtiene el producto cartesiano de dos tablas cuyas filas cumplan una determinada condición. La condición determina el criterio de combinación de ambas tablas. (Tabla1 x Tabla2)cond (Ventas x Artículos)cód = código Cod Fecha Cant 5100 5200 5100 45 Denom Exist PVP Patatas Cebollas Patatas ⋅ Normalización • Introducción La normalización ayuda a detectar fallos en el modelo E/R y en el relacional. Evita problemas de redundancia, ambigüedades, pérdida de información. Consiste en ir descomponiendo los registros en otros de menor tamaño de forma que satisfagan una serie de restricciones específicas que se conocen como Formas Normales. La teoría de normalización se resume en Hechos distintos se almacenan en objetos distintos. Ejemplo: En este ejemplo se repiten los presupuestos. Nombre_emp Proyecto Nombre Presupuesto Pepe P1 Programador 5000€ 19 Pepe Juan Juan P2 P1 P2 Analista 10000€ Jefe 5000€ Programador 10000€ • Noción intuitiva de las Formas Normales(FN) Las 3 primeras Codd entre el 70−72 Relaciones en FNBC: Óbice−Codd en el 74 Relaciones en 4ª FN: Fagin en el 77. Relaciones en 5ª FN: Fagin en el 79. 1ª Forma Normal: Prohíbe que en un registro haya grupos repetidos, es decir, que todos los campos deben ser atómicos, es decir, no está en 1ª FN si existe más de un valor a la vez para un mismo atributo. Ejemplo: Cod 5050 5060 Nombre Idioma Italiano Manuel Español Pedro Español SOL1: Una sola tabla donde esté el nombre del empleado y el código del empleado. SOL2: Una tabla que tenga el código del empleado y el nombre y otra tabla donde está el código y el idioma. SOL3: Una tabla donde esté el código, el nombre, el idioma1 y el idioma2. Otro ejemplo: LIBRO(Cod_libro,autor) SOL1: Libro (L1, {Pepe} {Luis}) SOL2: L1|Pepe L2| Luis 20 SOL3: L1|Pepe|Luis| 2ª FN: Se dice que un registro está en 2ª FN si además de estar todos los atributos que no formen parte de ninguna clave candidata suministran información acerca de la clave completa. Ejemplo: Almacén (Cod_alm, Dir_alm, Cod_pieza, cantidad) CC: Cod_alm + Cod_pieza ANP: Dir_alm y cantidad Dir_alm no da información acerca de CC, sólo de Cod_alm, sin embargo cantidad sí. SOL: Se divide la tabla en tantas como necesitemos para conseguir la 2ª FN. Dir_alm Cantidad Almacén1 (Cod_alm, Cod_pieza, Cantidad) Almacén2 (Cod_alm, Dir_alm) Otro ejemplo: Préstamos (Num_socio, Nombre_socio, Cod_libro, Fecha_préstamo, Editorial, País) CC: Num_socio + Cod_libro ó Nombre_socio + Cod_libro ANP: Fecha_préstamo (sí), Editorial (No), País (No) O1 N1 L1 F1 E1 P1 O1 N1 L2 F2 E2 P2 O2 N2 L3 F3 E1 P1 No está en 2ª FN Préstamo (Num_socio, Nombre_socio, Cod_libro, Fecha_préstamo) en 2ª FN 21 CC: Fecha_préstamo Libros (Cod_libro, Editorial, País) en 2ª FN pero no en 3ª FN 3ª FN: Además de englobar las dos restricciones anteriores puesto que toda relación que está en 3ª FN está en 2ª FN y se añade que todos los atributos que no forman parte de ninguna clave candidata, da información acerca de la clave y no de los atributos. Para que esté en 3ª FN sus campos deben ser mutuamente independientes y completamente dependientes de las claves. Ejemplo: Libro (Cod_libro, Editorial, País) CC: Cod_libro ANP: Editorial, País SOL1: Una tabla que sea Cod_libro y editorial y otra tabla que sea Editorial y País. L1 (Cod_libro, Editorial) L2(Cod_libro, País) SOL2: L1 (Cod_libro, País) L2 (Editorial, País) SOL3: L1 (Cod_libro, Editorial) L2 (Editorial, País) Si no está en 3ª FN al dividir para que no se pierda información el atributo común tiene que ser la clave al menos de una de las tablas y no hay que perder dependencias funcionales. Dependencia funcional: Se dice que depende funcionalmente de x si y sólo si cada valor de x tiene asociado en todo momento un único valor de y lo que se representa así: x y x es el implicante 22 y es el implicado Ejemplo: DNI−>nombre Sí DNI_prof−>Teléfono No dep_funcional Disco−>Cantante No Año, prueba−>Atleta No Prueba, récord−>Atleta, año Sí DNI−>Nombre_padre ¿Sí? Cod_dep−>Localidad ¿No? Entidad Entidad Dpto Empleado Hospital Hijo Empleado Familiar Funcionario Hijo de funcionario Libro Ejemplar X Y Es jefe Empleado Hombre 23 Mujer Hombre Mujer Hombre Mujer Hombre Mujer pertenece responsable Empleado Dpto E I I|hay Planta Habitaciones responsabl trabaja Empleado Dpto proyecto Empleado Vendedor Analista Dpto Facultad 24 Profesor Cátedra está asignado Encontrar adscrito pertenece Municipio Vivienda tiene Programador Lenguaje proyecto usa Programador usa trabaja Proyecto Lenguaje en Empleado Dpto jefe Editorial Libro Autor 25 edita escribe Clientes Pedidos Artículos agrupa agrupa Hombre Mujer Se casa Empleado Departamento resp X Y Tema consta Empleado jefe Empleado jefe Editorial Libros edita Empleado Familiar 26 Tiene Ex Libro Ejemplar Id tiene Autor Libro escribe Documento Artículo Libro Libro Editorial Universidad edita Edita 2 Rel en 1ª FN Rel en 2ª FN Rel en 3ª FN Rel en FNBC Rel en 4ª FN Relaciones en 5ª FN Cod_alm Cod_pieza Num_socio + Cod_libro 27 Nombre_socio + Cod_libro 28