Bases de Datos Relacionales. Conceptos y consideraciones para su uso. Eduardo Mora Departamento de Matemática Aplicada y Ciencias de la Computación Universidad de Cantabria Bases de Datos. Finalidad Base de Datos: Datos colección organizada de datos, relativa a un problema concreto, que puede ser compartida por un conjunto de usuarios/aplicaciones. ALMACENAR CONTROLAR CONSULTAR INFORMACIÓN ACTUALIZAR DATOS RELACIONES RESTRICCIONES Sistema Gestor de Bases de Datos: Datos programa o conjunto de programas que sirve para mantener bases de datos y responder consultas sobre ellas. Niveles de abstracción Programa 1 Programa 2 Programa n Vista A Sistema Gestor de Bases de Datos (SGBD) Nivel Lógico Nivel Interno Bases de Datos. Justificación • Flexibilidad de adaptación a cada problema. • Optimización en la gestión de la información. • Independencia física y lógica de los datos. • Control de la integridad de los datos. • Garantía sobre la consistencia de la información. • Facilidad de acceso concurrente. • Protección ante fallos del sistema. • Seguridad ante accesos restringidos. Modelo Relacional I Personal NOMBRE PROFESION LOCALIDAD Pedro profesor Santander Luis estudiante Santander María estudiante Las Palmas Ana estudiante Madrid Los datos se conciben agrupados en forma de tablas Cada fila establece una relación entre un conjunto de valores Operadores generan nuevas tablas SELECT NOMBRE, LOCALIDAD FROM Personal WHERE PROFESION = ”estudiante” NOMBRE LOCALIDAD Luis Santander María Las Palmas Ana Madrid Modelo Relacional II BANCOS ENTIDAD NOMBRE 0893 Santander 0059 Popular 3428 Bilbao Vizcaya 5632 Banesto • Toda tabla tiene una columna o conjunto de columnas que permiten identificar cada una de sus filas; éstas componen la llamada clave principal de la tabla. • Los valores de la clave principal no se pueden repetir. OFICINAS ENTIDAD CODIGO_OFICINA POBLACION DIRECCION • Unas tablas se refieren a otras mediante vínculos de tipo jerárquico. 0893 001 Madrid Castellana, 73 3428 022 Las Palmas Triana, 21 0893 022 Gáldar R. Moreno, 3 • Este vínculo de referencia entre dos tablas se establece mediante columnas de idénticos tipos de datos en las dos tablas. 5632 213 Oviedo Uría, 43 0893 300 Barcelona Diagonal, 435 •La referencia de una fila de una tabla a otra de la otra tabla se produce cuando ambas tienen el mismo valor. Tipos de datos Tipos de datos Cadena de caracteres (character string). Cada carácter requiere un byte para su almacenamiento. Numérico (numeric). Enteros: Cortos (ocupan 2 bytes). Largos (ocupan 4 bytes). Decimales: definidos por su precisión y escala. Notación científica: Simple precisión (ocupan 4 bytes). Doble precisión (ocupan 8 bytes). Fecha y hora (datetime). Diferentes opciones según nivel de precisión. Objeto grande (large object). Binary large object. Character large object. Otros. Índices PEDIDOS Fecha_ped Num_ped 5-7-2002 10-8-2002 11-8-2002 ... ARTÍCULOS LÍNEAS_DE_PEDIDO 742 849 860 ... Num_ped Num_lin Cod_art Versión Unidades 742 742 742 849 ... 2002 2000 97 2002 ... 1 2 3 1 ... ACC EXC WRD ACC ... 50 30 4 30 ... Índice de unicidad Cod_art Versión Descripción WRD ACC EXC ACC ... 97 97 2000 2002 ... Word-97 Access-97 Excel-2000 Acces-2002 ... ARTÍCULOS Cod_art Versión Cod_art Versión Descripción ACC ACC 97 2002 WRD ACC 97 97 Word-97 Access-97 EXC WRD ... 2000 97 ... EXC ACC ... 2000 2002 ... Excel-2000 Acces-2002 ... Índice con repeticiones LÍNEAS_DE_PEDIDO Cod_art Versión Num_ped ACC 2002 ACC 2002 742 742 EXC WRD ... 2000 97 ... 742 849 ... Num_lin Cod_art Versión Unidades 1 2 3 ACC EXC WRD 2002 2000 97 1 ... ACC ... 2002 ... 50 30 4 30 ... El problema del diseño I Ejemplo aclaratorio PROPIETARIOS: DNI NOMBRE DIRECCION LOCALES: CODIGO UBICACION SUPERFICIE Primera alternativa Locales_propietarios CODIGO UBICACION SUPERFICIE DNI NOMBRE DIRECCION Problemas del diseño Repetición de información Posibilidad de contradicciones en los datos Problemas en inserciones Pérdida de información al borrar El problema del diseño II Segunda alternativa Propietarios DNI NOMBRE DIRECCION Locales CODIGO UBICACION SUPERFICIE Problemas del diseño Pérdida de dependencias funcionales El problema del diseño III Tercera alternativa Propietarios DNI NOMBRE DIRECCION Locales DNI CODIGO UBICACION SUPERFICIE Problemas del diseño Sólo un propietario para cada local El problema del diseño IV La referencia entre tablas siempre es una relación “de 1 a n” o “de n a 1” Tercera Cuartaalternativa alternativa Un propietario Propietariospuede tener varios locales (n) mientras Propietarios que un local sólo puede ser de un propietario (1). DNI NOMBRE DIRECCION DNI NOMBRE DIRECCION Propiedad DNI CODIGO Locales DNI Locales CODIGO UBICACION SUPERFICIE CODIGO UBICACION SUPERFICIE Si se desea que un propietario pueda tener varios locales y, al mismo tiempo, que un local pueda se de varios propietarios, la relación es simétrica, es “de n a n” y no puede ser resuelta con sólo dos tablas. Para conseguirlo, es necesario introducir una tabla auxiliar que tenga relaciones de “de n a 1” con las de propietarios y locales. El lenguaje SQL I SQL (Structured Query Language) Lenguaje declarativo de acceso a los datos. Estándar para las bases de datos relacionales. Incluye la capacidad de actuar tanto sobre la estructura de la base de datos como sobre sus propios datos. Desarrollado en el San José Research Center (IBM) Fue utilizado por primera vez en 1970. En 1986: ANSI (American National Standards Institute) e ISO (International Standards Organization) publicaron las normas SQL/ANSI y SQL-86. Ésta tuvo dos actualizaciones: SQL-89 y SQL-92 En la actualidad, se trabaja con el SQL:1999 (parte del SQL3) y se está elaborando el SQL4 El lenguaje SQL II Definición de datos. Ejemplo: CREATE DATABASE GESTION; CREATE TABLE PROPIETARIOS (DNI CHAR(10) NOT NULL CONSTRAINT pk_prop PRIMARY KEY, NOMBRE CHAR(25) NOT NULL, DIRECCION CHAR(30)); CREATE TABLE LOCALES (CODIGO DNI CHAR(5) NOT NULL CONSTRAINT pk_loc PRIMARY KEY, CHAR(10) NOT NULL, UBICACION CHAR(30) NOT NULL, SUPERFICIE DEC(8,2) NOT NULL, CONSTRAINT fk_loc FOREIGN KEY ( DNI ) REFERENCES PROPIETARIOS ( DNI )); PROPIETARIOS DNI NOMBRE DIRECCION LOCALES CODIGO DNI UBICACION SUPERFICIE El lenguaje SQL III Manipulación de datos. Ejemplos: Insertar una nueva fila en la tabla PROPIETARIOS PROPIETARIOS INSERT INTO PROPIETARIOS (DNI, NOMBRE, DIRECCION) VALUES (‘13234567R‘, ‘Sanz, Luis‘, ‘Gran Vía 26‘) DNI NOMBRE DIRECCION LOCALES CODIGO DNI UBICACION SUPERFICIE Encontrar los locales con superficie mayor que 200 y su propietario SELECT CODIGO, UBICACION, NOMBRE, DIRECCION FROM LOCALES, PROPIETARIOS WHERE LOCALES.DNI = PROPIETARIOS.DNI AND SUPERFICIE > 200 Resultado Modificar la dirección del propietario cuyo D.N.I. es 20333444F CODIGO UBICACION NOMBRE DIRECCION PROPIETARIOS L-31UPDATE Alta 236 Sanz, Luis Gran Vía 26 L-234 Isabel II 38 L-9 SET Bailén DIRECCION =‘Alta 87’ 46 Laso, Ana WHERE DNI = ‘20333444F‘ L-302 Cuesta 2 Sanz , Luis Becedo 10 Fe, Pedro Gran Vía 26 Borrar el local de código L-234 DELETE FROM LOCALES WHERE CODIGO = ‘L-234‘