Bases de Datos I Cursada 2008 Clase 1: Introducción Facultad de Ciencias Exactas Universidad Nac. Centro de la Pcia. de Bs. As. BASES DE DATOS I INTRODUCCION • Sistemas de archivos. Creados sin seguir un enfoque metodológico producen: Duplicación de datos datos redundantes. Separación y aislamiento de datos. Distintos formatos para los mismos datos. Dependencia de datos Programas dependientes de la estructura física de los archivos. Formatos de archivos incompatibles. Consultas fijas / proliferación de programas de aplicación. BASES DE DATOS I BASE DE DATOS: Base de datos: conjunto de datos almacenados inter-relacionados. Diseñada para satisfacer los requerimientos de información de una organización. Almacena: - los datos de la organización y - una descripción de dichos datos (datos acerca de los datos) metadatos diccionario de datos independencia de datos lógica – física. BASES DE DATOS I BASE DE DATOS: Sistemas de bases de datos Surgen a causa de los problemas que plantean los sistemas de archivos. Punto de vista lógico (usuarios): - almacenan todos los datos en un solo lugar - almacenan definiciones de las relaciones entre los datos. Punto de vista físico: - los datos se almacenan en uno o varios discos y en uno o varios archivos (aún en una o varias locaciones). Acceso a datos: - a través del DBMS (Database Management System) y mediante sentencias específicas (lenguajes de cuarta generación). ARQUITECTURA EN TRES NIVELES BASES DE DATOS I ARQUITECTURA EN TRES NIVELES Propuesta de arquitectura del grupo de estudio ANSI/SPARC (1977) para los DBMS Nivel conceptual Esquema conceptual descripción de la BD sin considerar el DBMS Nivel interno Esquema interno descripción de la BD en términos de su representación física Nivel externo Esquema externo descripción de las vistas parciales de la BD para cada grupo de usuarios BASES DE DATOS I ARQUITECTURA EN TRES NIVELES Debido a que no existe un modelo conceptual generalizado y accesible a los distintos tipos de DBMS, se prefiere distinguir cuatro niveles: – Nivel conceptual Esquema conceptual descripción organizativa de la BD – Nivel lógico Esquema lógico descripción de la BD en términos del modelo de datos del DBMS – Nivel interno Esquema interno descripción de la BD en términos de su representación física – Nivel externo Esquema externo descripción de las vistas parciales de la BD que poseen los distintos usuarios BASES DE DATOS I ESQUEMA DE ACCESO DEL SGBD A LOS DATOS BASES DE DATOS I INDEPENDENCIA DE DATOS Propiedad que asegura que los programas de aplicación sean independientes o inmunes a los cambios realizados en datos que no usan o en detalles de representación física de los datos a los que acceden. Independencia lógica entre el esquema lógico/conceptual y los externos: – Los esquemas externos y los programas de aplicación no deben ser afectados por alteraciones del esquema lógico/conceptual sobre datos que no usan. Independencia física entre el esquema interno y el lógico/conceptual: – el esquema lógico/conceptual no debe verse afectado por cambios en el esquema interno referentes a la implementación de las estructuras de datos, modos de acceso, tamaños de páginas, caminos de acceso, etc. BASES DE DATOS I SGBD / DBMS: SISTEMA DE GESTIÓN DE LA BASE DE DATOS El SGBD/DBMS es una aplicación de alta complejidad que: -Permite a los usuarios definir, crear la base de datos mediante el lenguaje de definición de datos (DDL). - Permite la inserción, actualización, eliminación y consulta de datos mediante el lenguaje de manejo de datos (DML). Hay dos tipos de lenguajes de manejo de datos: Operativos (‘Procedurales’). No operativos (declarativos) (SQL) -Proporciona un acceso controlado a la base de datos mediante: · sistema de seguridad. · sistema de integridad. · sistema de control de concurrencia. · sistema de control de recuperación. · catálogo o diccionario de datos (metadatos). BASES DE DATOS I SGBD / DBMS: SISTEMA DE GESTIÓN DE LA BASE DE DATOS (cont) - Permite definir subesquemas o vistas: cada usuario “ve” la parte de la base de datos que necesita. . Proporcionan un nivel de seguridad adicional. . Proporcionan un mecanismo para que los usuarios vean los datos en el formato deseado. . Representan una imagen consistente y permanente de la base de datos, aunque ésta cambie su estructura. BASES DE DATOS I FUNCIONES DE LOS DBMS 1. Permitir a los usuarios almacenar datos, acceder a ellos y actualizarlos, ocultando su estructura física. 2. Proporcionar un catálogo accesible por los usuarios. 3. Proporcionar un mecanismo que garantice el procesamiento de las transacciones. 4. Proporcionar un mecanismo que realice el control de la concurrencia. 5. Proporcionar un mecanismo para recuperación ante fallos. 6. Proporcionar un mecanismo de seguridad. 7. Integrarse con algún software de comunicación. 8. Encargarse de mantener las reglas de integridad. 9. Encargarse de mantener la independencia entre los programas y la estructura de la base de datos. 10. Proporcionar herramientas para administrar la base de datos. BASES DE DATOS I ROLES EN EL AMBIENTE DE LAS BASES DE DATOS - Administrador de la base de datos: realiza las siguientes tareas: · Diseño físico e implementación de la base de datos. · Control de la seguridad y la concurrencia. · Mantenimiento del sistema. · Mantenimiento de las prestaciones. - Diseñadores de la base de datos: llevan a cabo el diseño lógico de la base de datos. - Programadores de aplicaciones: implementan los programas que darán servicio a los usuarios finales. - Usuarios finales: son los clientes de la base de datos. BASES DE DATOS I SISTEMAS DE BASE DE DATOS Mantiene tres formas de ver los datos (en concordancia con los niveles): -El esquema de la base de datos: visión lógica global. diseñador de la base de datos administrador de la base de datos -El subesquema o vista: visión lógica de los datos relacionados con una aplicación. programadores de aplicaciones usuarios finales -El esquema físico: el modo en que los datos están almacenados. programadores de sistemas creadores de DBMS BASES DE DATOS I HISTORIA DE LOS SISTEMAS DE BASES DE DATOS - Primera generación: sistema jerárquico y sistema de red. · Requieren complejos programas de aplicación. · La independencia de datos es mínima. · No tienen un fundamento teórico. - Segunda generación: modelo relacional. · Lenguaje de consultas estructurado: SQL. · Desarrollo de DBMS relacionales comerciales. · Limitada capacidad para modelar datos. - Tercera generación: modelo orientado a objetos y modelo relacional extendido. · Subsana falencias del modelo relacional puro BASES DE DATOS I VENTAJAS DE LOS SISTEMAS DE BASES DE DATOS Por la integración de datos: . Se reduce la redundancia de datos, por lo tanto, se ocupa menos espacio en disco. . Se pueden evitar los problemas de inconsistencia de datos. . Se puede extraer información adicional sobre los datos. . Se pueden compartir los datos. . Se facilita el mantenimiento de estándares. BASES DE DATOS I VENTAJAS DE LOS SISTEMAS DE BASES DE DATOS Por las funciones del DBMS: . Se reduce el problema de la integridad de los datos mediante la especificación de reglas de integridad. . Se mejora la seguridad de la BD frente a accesos no autorizados. . Se pueden consultar los datos sin tener que programar aplicaciones. . Se mejora la productividad de los programadores. . Proporciona independencia de datos lógica – física. . Se aumenta la concurrencia. . Mejoran los servicios de copias de seguridad y de recuperación. Estructura General de un DBMS Fundamentos y Modelos de Bases de Datos Adoración de Miguel y Mario Piattini. Ed.: 2º Ed. RA-MA, 1999. BASES DE DATOS I INCONVENIENTES DE LOS SISTEMAS DE BASES DE DATOS -Los DBMSs son conjuntos de programas muy complejos y muy extensos. -Son caros. -Frecuentemente se requiere adquirir equipamiento adicional. -Si se pasa de un sistema de archivos a un sistema de bases de datos, el costo de la migración es elevado. -Algunas prestaciones pueden disminuir su desempeño. - Son más vulnerables a los fallos. BASES DE DATOS I MODELOS DE DATOS Un modelo de datos está formado por: - Un conjunto de conceptos para definir la estructura de la base de datos: • Datos y Relaciones entre datos SENTENCIAS del lenguaje (DDL) para creación/modificación de la estructura/supresión de tablas -Un conjunto de conceptos para definir vínculos significativos (semánticos) entre los datos y relaciones: • Restricciones sobre datos y relaciones. SENTENCIAS del lenguaje (DDL) para creación, modificación, supresión de restricciones - Un conjunto de operaciones para realizar consultas y actualizaciones de datos. SENTENCIAS del lenguaje (DML) para consultar, insertar, borrar, modificar tuplas BASES DE DATOS I MODELOS DE DATOS Dependiendo de los tipos de conceptos, los modelos de datos se clasifican en: Modelos conceptuales Entidades Atributos Relaciones Modelos lógicos Registros / Objetos Modelos físicos Formato de los registros Estructura de los ficheros Métodos de acceso BASES DE DATOS I LENGUAJES DE LOS DBMS . Lenguaje de Definición de Datos (DDL): Definición del esquema de la base de datos. Definición de vistas. Definición de las estructuras de almacenamiento. . Lenguaje de Manejo de Datos (DML): Leer datos. Actualizar datos. . Lenguajes de Cuarta Generación (4GL): Generadores de formularios. Generadores de informes. Generadores de gráficos. Generadores de aplicaciones. BASES DE DATOS I MODELO RELACIONAL Una relación R definida sobre un conjunto de dominios D1, D2, ... Dn consta de: Cabecera: conjunto fijo de pares atributo:dominio. {(A1:D1), (A2:D2), ... (An:Dn)} Cada Aj corresponde a un único Dj. Los Aj son distintos, los Dj pueden coincidir. Cuerpo: conjunto variable de tuplas. Tupla: conjunto de pares atributo:valor. {(A1:vi1), (A2:vi2), ... (An:vin)} con i = 1, 2, ... m En cada (Aj:vij) se tiene que vij Dj. n: grado de R (relación n-aria) m: cardinalidad de R (número de tuplas) BASES DE DATOS I TIPOS DE RELACIONES Relaciones base: tienen nombre, son reales (archivos) (componentes básicos de la base de datos). Vistas: tienen nombre, se obtienen operando sobre tablas base u otras vistas, habitualmente virtuales. Instantáneas: tienen nombre, son derivadas, reales (sólo lectura), refresco periódico. Resultados de consultas: con o sin nombre, no persisten en la base de datos. Resultados intermedios: sin nombre, no persisten en la base de datos. Resultados temporales: con nombre, se destruyen automáticamente. BASES DE DATOS I REGLAS DE INTEGRIDAD Regla de integridad : restricción que debe cumplirse sobre una BD en todos sus estados. Reglas inherentes al modelo relacional: Regla de integridad de entidades claves primarias Regla de integridad referencial claves extranjeras Reglas de negocio : concepto general que abarca reglas de integridad específicas de cada universo de discurso (plasmadas en la BD) Restricciones de dominios : al definir cada atributo sobre un dominio, se impone una restricción sobre el conjunto de valores permitidos (nulidad, unicidad) BASES DE DATOS I REGLA DE INTEGRIDAD DE ENTIDADES "Ninguno de los atributos que componen la clave primaria puede ser nulo." Superclave: conjunto de atributos que identifica de modo único las tuplas de una relación. Clave candidata: superclave en la que ninguno de sus subconjuntos es una superclave de la relación. Clave: Debe satisfacer: Unicidad Irreducibilidad (minimalidad) Observaciones: La regla se aplica a las relaciones base (tablas base en la BD) La regla se aplica sólo a la clave primaria (no a las claves alternativas). BASES DE DATOS I REGLA DE INTEGRIDAD REFERENCIAL "Si en una relación hay alguna clave extranjera, sus valores deben coincidir con valores de la clave primaria a la que hace referencia, o bien, deben ser nulos." Claves extranjeras de más de un atributos pueden ser parcial o totalmente nulas diferentes formas de “matching” Si estando en un estado legal, una operación sobre los datos conduce a un estado ilegal dos estrategias: Rechazar la operación (restrict / no action). Aceptar la operación y Reparar realizando operaciones compensatorias adicionales que conduzcan a un estado legal (cascade / set null / set default). BASES DE DATOS I SQL SQL es un lenguaje para la definición y manipulación de datos, desarrollado inicialmente en los laboratorios de investigación de IBM en California Se transformó en un estándar en 1986 (SQL-1986) La última versión desarrollada es SQL:1999 (también conocida como SQL3), e incluye características orientadas a objetos El estándar previo es SQL-92 (SQL2) BASES DE DATOS I SQL Componentes DDL (definición de esquemas, relaciones, índices …) DML (manipulación de datos: inserciones, borrados, modificaciones, consultas) Manipulación de datos empotrada (permite ser usado desde otro lenguaje anfitrión) BASES DE DATOS I SQL permite: • Crear y modificar esquemas, tablas, índices. • Definir dominios para cada atributo de las relaciones. • Forzar restricciones de integridad: de dominio, de clave primaria, referenciales, de semántica compleja y/o arbitraria. • Definir acciones ante violaciones de restricciones. • Consultar tuplas mediante una combinación de álgebra y cálculo relacional. • Definir vistas de una relación o combinación de ellas. • Insertar, borrar y actualizar tuplas en una relación. BASES DE DATOS I CREACIÓN DE TABLAS EL SQL se basa en el modelo relacional: implementa las relaciones como tablas, los atributos como columnas y las tuplas como filas de las tablas. Para definir una tabla en SQL se usa la sentencia CREATE TABLE: BASES DE DATOS I CREACIÓN DE TABLAS CREATE TABLE NombreTabla ({NombreCol TipoDato [NOT NULL] [UNIQUE] [DEFAULT ValorDefecto] [CHECK Condicion] [,...]} [PRIMARY KEY (ListaColumnas),] {[UNIQUE (ListaColumnas),] […,]} {[FOREIGN KEY (ListaColumnasFK) REFERENCES NbreTablaPadre [(ListaColumnasCK)], [ON UPDATE AccionReferencial] [ON DELETE AccionReferencial ]] [,…]} {[CHECK (Condicion)] [,…] }); BASES DE DATOS I CREACIÓN DE TABLAS Crea una tabla con una o más columnas con su TipoDato especificado. NOT NULL, indica que el sistema debe rechazar cualquier intento de insertar un nulo en esa columna. Se puede especificar un valor por defecto (DEFAULT) para esa columna. Las claves primarias deben especificarse siempre como NOT NULL. La cláusula FOREIGN KEY especifica las claves extranjeras y su correspondiente acción referencial BASES DE DATOS I TIPOS DE DATOS Los tipos de datos dependen de la implementación de SQL para cada sistema dialectos adhesión al estándar SQL Generalmente se tienen: • int: enteros. • float: números decimales de punto flotante. • datetime: tipo de dato para fechas. • money: tipo de dato especial para cantidades contables. • char(n): cadena de caracteres de largo fijo. • varchar(n): cadena de caracteres de largo variable. • binary: para tipos de datos en formato binario (archivos) BASES DE DATOS I TIPOS DE DATOS Es posible definir dominios y utilizarlos en la definición de las tablas Un dominio es una definición de un tipo de dato, que usualmente incluye otra información: valor por defecto, alguna restricción. syntaxis: CREATE DOMAIN NombreDominio [AS] TipoDato [DEFAULT ValorDefecto] [CHECK (Condicion)]; BASES DE DATOS I EJEMPLO CREATE TABLE Propiedad ( NroPropiedad NroPpiedad NOT NULL, Ambientes Integer NOT NULL DEFAULT 0, Valor Integer NOT NULL, Propietario Prop NOT NULL, NroEmpleado NroEmp, NroSucursal Integer NOT NULL, PRIMARY KEY (NroPropiedad), FOREIGN KEY (NroEmpleado ) REFERENCES Empleado ON DELETE SET NULL ON UPDATE CASCADE ….); NroPpiedad, IdProp, NroEmp son dominios definidos por el usuario: CREATE DOMAIN Prop AS char(35) DEFAULT ‘Inmobiliaria’; BASES DE DATOS I BORRADO DE TABLAS Para eliminar una tabla se usa la sentencia DROP TABLE: DROP TABLE NombreTabla [RESTRICT | CASCADE] BASES DE DATOS I MODIFICAR UNA TABLA Se usa la sentencia ALTER TABLE, para modificar la especificación de tipo y/o la longitud de una columna y/o el esquema de atributos: ALTER TABLE NombreTabla [ADD[COLUMN] NbreColumna tipoDato [NOT NULL] [UNIQUE] [DEFAULT Valor] [CHECK (Condicion)]] [DROP[COLUMN] NbreColumna [RESTRICT|CASCADE]] [ADD[CONSTRAINT[NbreRestriccion]] DefinicionRestr] [DROP[CONSTRAINT] nombreRes [RESTRICT|CASCADE]] [ALTER[COLUMN] SET DEFAULT opciónPredeterminada] [ALTER[COLUMN] DROP DEFAULT]