Claves candidatas y primarias Una clave candidata para una relación R es un subconjunto C de los atributos de R tales que se cumplen las siguientes propiedades: Propiedad de unicidad. No existen dos tuplas de R con los mismos valores para C. Propiedad de irreducibilidad. No existe un subconjunto de C que cumpla con la propiedad de unicidad. Diseño de Bases de Datos Franco Guidi Polanco Escuela de Ingeniería Industrial Pontificia Universidad Católica de Valparaíso, Chile fguidi@ucv.cl Consecuencia: debido a que una relación no puede tener tuplas duplicadas, esta debe contener al menos una clave candidata. Revisión: 7 de Junio de 2005 Franco Guidi Polanco Claves candidatas y primarias 2 Clave primaria y claves alternas Es posible que una relación tenga más de una clave candidata. Cuando existe más de una clave candidata, a una de ellas se le llama clave primaria, y a las restantes, claves alternas. Una clave candidata puede componerse de más de un atributo. Si existe solo una clave candidata, esta debe ser la clave primaria. Clave simple: compuesta por un atributo. Clave compuesta: compuesta por más de un atributo. Si existe más de una clave candidata, se determina cuál de ellas será clave primaria sólo en función de la simplicidad. Franco Guidi Polanco 3 Franco Guidi Polanco 4 Clave primaria y claves alternas: ejemplos Claves foráneas Relación ESTUDIANTE Rut Nombre Fecha nacimiento Ciudad nacimiento 15.332.241-5 Nicanor Neruda 12/03/1984 Talca 14.102.999-3 Violeta Paz 01/05/1983 16.290.412-k Vicente Parra 25/10/1985 17.221.332-8 Marcela Huidobro 01/12/1985 Carrera año ingreso Orden ingreso 515056-5 77 2003 12 Iquique 532292-1 77 2003 122 Linares 497642-3 25 2002 4 Castro Rol UCV 500023-4 54 2001 Colegio 15 Claves: - Rut - Rol UCV - Carrera + año ingreso + orden ingreso - Nombre + fecha nacimiento + ciudad nacimiento Franco Guidi Polanco Supongamos que existe una tabla “Colegio” en la que se registran los colegios con sus datos (nombre_colegio, direccion, telefono, etc.) y una tabla “Alumno” en que se registran datos de alumnos (nombre_alumno, direccion, colegio_origen, etc.). Es claro que el atributo “colegio_origen” de la tabla alumnos sólo puede tomar un valor si este existe en la tabla “colegios”. 5 Claves foráneas definición Dirección Teléfono Nombre_alumno Dirección Colegio_origen Escuela agrícola Piggley Winks Camino Internacional 1000 877767 Pedro Unamuno Los Almendros 1222 Clifford School Clifford School Av. Dos 234 332120 Luis Pérez Los Espinos 2653 Liceo Técnico Bob el Constructor Liceo Técnico Bob el Constructor Calle Tres 3000 554536 Angel Picapiedra El Sauce 1010 Clifford School Franco Guidi Polanco 6 Claves foráneas: ejemplo Sea R2 una relación. Una clave foránea en R2 es un subconjunto Fk de atributos de R2, tal que: Relación “productos” Existe una relación R1 (con R1 no necesariamente distinto a R2) con una clave candidata Ck, y En todo momento, cada valor de Fk en R2 es idéntico al valor de Ck en alguna tupla en R1. En otras palabras, cada valor de una clave foránea debe aparecer como valor de la clave candidata correspondiente en otra relación. Franco Guidi Polanco Alumno Nombre_colegio código descripcion costo unidad_medida 06421654-5 52464646-4 63446345-8 Cable cobre Poste Interruptor 500 50.000 300 Metro Pieza Pieza Relación “ventas” 7 Franco Guidi Polanco Clave foránea nro_venta código fecha cantidad 1 2 3 52464646-4 52464646-4 06421654-5 10/05/1999 12/06/1999 12/06/1999 200 4 25 8 Representación de asociaciones generadas por claves foráneas Más sobre claves foráneas Pueden existir claves foráneas compuestas (la clave candidata correspondiente también debe ser compuesta). ventas.codigo ventas productos Las claves foráneas y su correspondiente clave candidata deben estar definidas sobre el mismo dominio. En este caso, “codigo” es clave foránea en “ventas”, para acceder a los datos de “productos”. El valor de una clave foránea representa una referencia a la tupla que contiene la clave candidata asociada (tupla referenciada o tupla objetivo). Se suele decir que las referencias de clave foránea a clave candidata son el “pegamento” que mantiene unida a la base de datos. Franco Guidi Polanco 9 Integridad referencial Franco Guidi Polanco Ejemplo de falla en integridad referencial El problema de asegurar que la BD no contenga algún valor inválido de clave foránea se denomina problema de integridad referencial. Tabla “productos” Integridad referencial: la BD no debe contener algún valor de clave foránea no existente en la relación de destino. Franco Guidi Polanco 10 código descripcion costo unidad_medida 06421654-5 52464646-4 Cable cobre Poste 500 50.000 Metro Pieza Tabla “ventas” 11 Franco Guidi Polanco ERROR nro_venta código fecha cantidad 1 2 3 52464646-4 94615886-4 06421654-5 10/05/1999 12/06/1999 12/06/1999 200 4 25 12 ¿Cómo asegurar la integridad referencial? Dependencias funcionales Restricción. Rechazar cualquier operación que, de ser ejecutada, deje a la base de datos en un estado ilegal. Restricción de integridad que describe vínculos de tipo funcional entre atributos de una relación. Ejemplos: Cascada. Aceptar la operación, y efectuar ciertas acciones compensatorias para asegurar que la base de datos se mantenga en un estado legal. Franco Guidi Polanco Rut Æ Nombre_persona Patente Æ Marca, Modelo, Año RolUcv ClaveCurso Æ Nota 13 14 Ejemplo: abastecimiento de una empresa importadora Diseño de bases de datos relacionales Diseño de B.D.: Dado un conjunto de datos a ser representados en una B.D., decidir la estructura lógica más adecuada para estos datos. En otras palabras, se trata de decidir que tablas (relaciones) deben existir, que campos (atributos) deben tener, y las asociaciones entre estos elementos (claves primarias y foráneas). Franco Guidi Polanco Franco Guidi Polanco 15 Una empresa importadora es abastecida por un conjunto de proveedores. Cada uno de los proveedores tiene un código, que los identifica, un nombre y una dirección. Los artículos se identifican también con un código, y tienen una descripción. Los pedidos se identifican con un número correlativo y se registra la fecha en la que son realizados, y el proveedor al que van dirigidos. Cada pedido consta de la solicitud de uno o más artículos, con sus respectivas cantidades. Franco Guidi Polanco 16 Documento utilizado en la empresa Diseñando la base de datos El modelo relacional exige que todo sea expresado en términos de tablas. Una primera aproximación podría ser: Pedido Nº del pedido: 1 Nombre del proveedor: Fecha del pedido: 10/03/1999 Dirección del proveedor: Calle 4, nº... ABC Código del proveedor: 5645462-8 Código del Nombre del articulo articulo Cantidad pedida 685431-4 878795-7 50 48 LAPIZ TIJERAS Franco Guidi Polanco Nº del pedido 17 ¿Cuál es el diseño correcto para la B.D.? Código del proveedor Nombre del proveedor Dirección del proveedor Código del articulo Nombre del Cantidad articulo pedida 1 10/03/1999 5645462-8 ABC Calle 4, nº... 685431-4 878795-7 LAPIZ TIJERAS 50 48 2 11/03/1999 6353134-4 MSF Av. 9, nº... 468624-8 AGENDA 500 3 11/03/1999 8545432-8 FGP Calle 6, nº... 556546-3 878795-7 CD-ROM TIJERAS 10 12 Franco Guidi Polanco 18 Normalización El diseño recién presentado presenta redundancia. Es el proceso de identificación y eliminación de ciertas propiedades indeseables en el diseño de una B.D. Además los datos poseen estructura interna (no son escalares). Franco Guidi Polanco Fecha del pedido Se definen un conjunto de “formas normales”, y se dirá que una tabla está en una cierta forma normal, si satisface un conjunto predefinido de condiciones. 19 Franco Guidi Polanco 20 Niveles de Normalización Primera forma normal (1NF) Una relación está en primera forma normal si cumple el requisito de contener valores escalares solamente. En nuestro ejemplo, la siguiente relación está en 1NF. 1 NF 2 NF 3 NF 3 BC NF 4 NF 5 NF Nº del pedido Franco Guidi Polanco 21 Problemas con 1FN Fecha del pedido Código del proveedor Nombre del proveedor Dirección del proveedor Código del articulo Nombre del Cantidad articulo pedida 1 10/03/1999 5645462-8 ABC Calle 4, nº... 685431-4 LAPIZ 1 10/03/1999 5645462-8 ABC Calle 4, nº... 878795-7 TIJERAS 50 48 2 11/03/1999 6353134-4 MSF Av. 9, nº... 468624-8 AGENDA 500 3 11/03/1999 8545432-8 FGP Calle 6, nº... 556546-3 CD-ROM 10 3 11/03/1999 8545432-8 FGP Calle 6, nº... 878795-7 TIJERAS 12 Franco Guidi Polanco 22 Ejemplos de anomalías de actualización en 1FN La redundancia en 1FN llevan a la existencia de una serie de anomalías de actualización, esto es, dificultades con las operaciones de actualización (adición, eliminación o modificación registros). No se pueden agregar los datos de un nuevo artículo, a menos que exista un pedido asociado a éste. Si elimina un pedido y este es el único asociado a un artículo, se eliminan también los datos del artículo. Como los datos de un artículo se pueden repetir en diferentes registros de la tabla, si se desea actualizar los datos de un artículo, deben actualizarse todos los registros que tienen el dato (riesgo de inconsistencia). Franco Guidi Polanco 23 Franco Guidi Polanco 24 Análisis de dependencias funcionales en 1FN Segunda forma normal (2FN) Una tabla está en 2FN si y solo si está en 1FN y todos los atributos no claves dependen irreduciblemente de la clave primaria (no dependen solo de parte de ella). Fecha del pedido Clave primaria Código del proveedor Nº del pedido Dirección del proveedor Nombre del proveedor En el caso de nuestro ejemplo, esto implicará separar la tabla en tres partes... Cantidad pedida Código del articulo Nombre del articulo Las flechas en este diagrama indican dependencias funcionales entre atributos, es decir que el valor de un atributo está determinado por el valor de otro. Franco Guidi Polanco 25 Base de datos de abastecimiento en 2FN Tabla 1 Tabla 2 (Pedido-artículo) (Pedido) Clave primaria Nº del pedido Cantidad pedida Nº del pedido Código del articulo Con este nuevo diseño se pueden ingresar datos de artículos aun cuando no existan pedidos asociados a ellos. Código del proveedor Se pueden eliminar todos los pedidos de un artículo, sin que esto implique eliminar los datos del artículo. Dirección del proveedor Nombre del proveedor Cada artículo tiene sus datos en un solo registro, lo que facilita la actualización. Tabla 3 (Artículo) Clave primaria Código del articulo Franco Guidi Polanco 26 Pros y contras de 2FN Fecha del pedido Clave primaria Franco Guidi Polanco Sin embargo, las anomalías subsisten con los proveedores. Nombre del articulo 27 Franco Guidi Polanco 28 Tercera forma normal (3FN) Base de datos de abastecimiento en 3FN Una tabla está en 3FN si y solo si está en 2FN, y cada atributo no clave depende no transitivamente de la clave primaria. Se requiere dividir la tabla 2 en dos partes: Tabla 2 (Pedido) Fecha del pedido Clave primaria Dependencia transitiva a través del código del proveedor Tabla 2 (Pedido) Fecha del pedido Clave primaria Nº del pedido Nº del pedido Dirección del proveedor Nombre del proveedor Código del proveedor Dirección del proveedor Tabla 2.1 Tabla 2.2 (Pedido) (Proveedor) Clave primaria Franco Guidi Polanco 29 Dirección del proveedor Código del proveedor Código del proveedor Nombre del proveedor Franco Guidi Polanco Esquema relacional final de la base de datos de abastecimiento 30 Ejemplos de tablas de la B.D. Artículo Código del artículo Nro del pedido Pedido-artículo Tabla pedido-artículo Tabla pedido Nº del pedido Código del articulo Cantidad pedida Nº del pedido 1 685431-4 50 1 10/03/1999 5645462-8 1 878795-7 48 2 11/03/1999 6353134-4 2 468624-8 500 3 11/03/1999 8545432-8 3 556546-3 10 3 878795-7 12 Código del proveedor Proveedor Franco Guidi Polanco Clave primaria Fecha del pedido Nº del pedido Nombre del proveedor Pedido Código del proveedor 31 Franco Guidi Polanco Fecha del pedido Tabla artículo Código del articulo Nombre del articulo 685431-4 LAPIZ Código del proveedor Tabla proveedor Código del proveedor Dirección del proveedor Calle 4, nº... 878795-7 TIJERAS 5645462-8 468624-8 AGENDA 6353134-4 Av. 9, nº... 556546-3 CD-ROM 8545432-8 Calle 6, nº... 32