Fundamentos de Sistemas de Bases de Datos
February 12, 2023 | Author: Anonymous | Category: N/A
Short Description
Download Fundamentos de Sistemas de Bases de Datos...
Description
UNIVERSIDAD DE COSTA RICA UNIVERSIDAD NACIONAL MAESTRÍA EN SIG Y TELEDETECCIÓN
Elaborado por G. Dra. Elzbieta Malinowski
El siguiente material en su mayoría está basado en el libro de R. Elmasri y S. Navathe “Fundamentos de Sistemas de Bases de Datos”, 5 edición, 2007 y de ninguna forma ninguna forma reemplaza este libro como libro de texto.
Universidad de Costa Rica, Universidad Nacional
PARTE I: INFORMACIÓN GENERAL DEFINICIONES VARIAS datos Base de datos
Colección de datos lógicamente relacionados que puede tener cualquier tamaño yEjemplos: complejidad. la base de datos para el procesamiento de matrícula, las compras en el supermercado, compras utilizando tarjetas de crédito, sistema de inventario, figura 1.2 del libro de texto:
Dato
Hecho que puede ser recopilado y que tiene un significado específico. Ejemplos: Nº telefónico, Nº cédula, dirección, nombre. DBMS (SGBD, SABD) (Database Management System, Sistema de Gestión
de de Datos, de que Administración Es Bases una colección de Sistema programas permite: de Bases de Datos) • Definir la base de datos → especificar su estructura, tipos de datos, relaciones entre datos, restricciones y otros. • Construir, poblar o cargar la base de datos → insertar los datos. • Manipular los datos → consultar, actualizar, generar reportes y otros. • Compartir los datos → permitir acceso simultáneo a varios usuarios y programas. • Proteger los datos → proteger contra el funcionamiento defectuoso del hardware y software como también contra accesos no autorizados o malintencionados. • Mantener la base de datos → permitir la evolución de la base de datos según cambian los requisitos con el tiempo. Ejemplos: Oracle, SQL Server, DB2, Postgres, MySQL. Diseño y explotación de bases de datos
Dra. Elzbieta Malinowski
Material de apoyo
2
Universidad de Costa Rica, Universidad Nacional
Catálogo
Conocido también como diccionario de datos, directorio de datos o metadatos. Contiene información sobre los datos, como por ejemplo el tipo y formato de almacenamiento de cada elemento, estructura de cada archivo, información sobre derechos de acceso y tipos de usuario. Ejemplo: Figura 1.3 del libro de texto.
Sistema de Base de Datos
Es la combinación de los datos y el DBMS (Figura 1.1 del libro de texto).
Diseño y explotación de bases de datos
Dra. Elzbieta Malinowski
Material de apoyo
3
Universidad de Costa Rica, Universidad Nacional
Propiedades de una Base de Datos •
Una base base de datos representa un subconjunto de aspectos del mundo real (llamado minimundo o universo de discurso). Por ejemplo, una base de datos para manejo de inventario, matrícula u operaciones bancarias. propósito opósito • Una base de datos se diseña, construye y manipula para un pr específico y un grupo de usuarios particular, con algunas aplicaciones preconcebidas.. Por ejemplo, en un banco se puede requerir diferentes preconcebidas bases de datos: algunas que manejan las transacciones de cajeros automáticos, otros que guardan los datos referentes a los préstamos, salarios de los empleados, etc. PARTICIPANTES DEL SISTEMA DE BASE DE DATOS DBA (Database administrator ), ), Administrador de la base de datos
Encargado de la administración de los recursos del sistema de base de datos. Responsable de la seguridad de la base de datos, y del monitoreo de su uso.
Diseñadores de bases de datos
Identifican los datos a almacenar, especifican la estructura de la base de datos, entienden los requerimientos de los usuarios y definen las vistas, entre otras cosas.
Diseño y explotación de bases de datos
Dra. Elzbieta Malinowski
Material de apoyo
4
Universidad de Costa Rica, Universidad Nacional
Usuarios finales • Casuales o esporádicos: Necesitan una información diferente cada vez
que acceden la base de datos. Ejemplo: estudiantes del curso de base de datos. • Paramétricos: Usan Usan casi las mismas consultas cada vez que acceden la BD (transacciones enlatadas). Ejemplo: empleados bancarios, de aerolíneas, hoteles, etc. • Avanzados: Conocen muy bien el DBMS e implementan aplicaciones que les permitan satisfacer sus complejos requerimientos. Ejemplo: ingenieros, científicos, analistas. • Autónomos: mantienen bases de datos personales mediante la utilización de paquetes de programas comerciales que cuentan con interfaces de fácil uso. Ejemplo: los usuarios de paquetes de impuestos que guardan sus datos financieros para declarar la renta.
Analistas de sistemas y programadores de las aplicaciones
Los analistas de sistemas recopilan los requerimientos de los usuarios finales (causales y paramétricos, especialmente) y desarrollan las especificaciones para las transacciones satisfagan estas dichosespecificaciones requerimientos. como Los programadores de enlatadas aplicacionesqueimplementan programas, los depuran (debug ), ), documentan y mantienen.
HISTORIA DE LOS SISTEMAS DE BASES DE DATOS EVENTO
CONSECUENCIA
ANTES DE LOS 60’s 1945 1957 1959 1959
Se desarrollan las cintas Se reemplazan las tarjetas magnéticas. perforadas y las cintas de papel Se instala la primera computadora comercial McGree propone la noción de acceso generalizado a los datos almacenados electrónicamente IBM introduce el sistema Ramac Los datos son leídos de manera no secuencial y el acceso a los archivos es factible.
LOS 60’S 1961
1965-1970
Bachman diseña el primer DBMS generalizado -GE’s Integrated Data Store (IDS)- Se distribuye en 1964. Se popularizan los diagramas de estructura de datos.
Se forman las bases del modelo de datos para red desarrollado por CODASYL DBTG (Conference on Data Systems Languages Database Task Group )
proveen dos sistemas Se generaliza el sistema de Se manejo de archivos desarrollado conceptuales/ vista al usuario de la organización de los datos. por numerosos vendedores.
Diseño y explotación de bases de datos
Dra. Elzbieta Malinowski
Material de apoyo
5
Universidad de Costa Rica, Universidad Nacional
Sistema de manejo de información Se forman las bases del Modelo de Datos Jerárquicos. (IMS) desarrollado por IBM. IMS DB/DC (database/data Se da soporte a las vistas de la communication). Fue el primer jerarquía más alta. sistema DB/DC a gran escala. accesos de usuariosunaa SABRE. por IBM y Múltiples datos, desarrollaron American Desarrollado Airlines. comunicación de red. LOS 70’ s 1970
El modelo relacional es Nace la Fundación para la teoría desarrollado por Tedd Codd, una de bases de datos. investigación de IBM.
1971
CODASYL Database Task Group Report
1975
El Grupo Especial de Interés de la Dio pie la creación de un foro de ACM sobre Manejo de Datos discernimiento sobre la organizó la primera conferencia investigación de base de datos. internacional SIGMOD.
1975
La
conferencia VLDB. 1976
Dio pie a la creación de otro foro de discernimiento sobre la de investigación de base de datos.
Very Large Data Base Foundation organizó la primera
internacional
El modelo Entidad-Relación (ER) Se introduce la necesidad de fue introducido por Chen. modelado conceptual •
Proyectos de Investigación en los 70’s: System R (IBM), INGRES (University of California, Berkeley), System 2000 (University of Texas, Austin). •
Lenguajes de Consultas desarrollados en los 70’s: SQUARE, SEQUEL(SQL), QBE, QUEL. Los 80’s Se desarrollaron DBMS para Permitió a los usuarios de PC computadoras personales definir y manipular los datos. Carecían de multivistas (DBASE, PARADOX, etc.) /multiacceso y existía aislamiento entre programas y datos. 1985
Se publicó el estándar de SQL. El Generated complete application mundo de negocios es programs comenzaron desde un influenciado por los lenguajes de alto nivel de lenguaje de interfaz. “Cuarta Generación”. Se propone
Diseño y explotación de bases de datos
Dra. Elzbieta Malinowski
Material de apoyo
6
Universidad de Costa Rica, Universidad Nacional
el Network Definition Language (NDL) hecho por ANSI. Permitieron nuevas aplicaciones Tendencias en los 80’s: Sistemas de Bases de Datos de bases de datos, trabajo de red Expertos, DBMS orientados a y manejo de datos distribuidos. objetos, Arquitectura cliente / servidor para bases de datos •
distribuidas. Los 90’s Demanda de las capacidades de DBMS con características para los DBMS para usarlas en nuevas datos espaciales, temporales y aplicaciones. multimedia, incorporando capacidades activas y deductivas. Aparecen los DBMS comerciales orientados a objetos. Demanda del desarrollo de Desarrollo de software que permite aplicaciones utilizando datos de la conectividad abierta con bases de datos (Open Databa fuentes variadas. Connectivity ) Demanda de la explotación de Diferentes sistemas de DBMS Massively Parallel Processors incluyen componentes que (MPPs) permiten procesamiento paralelo. Los 2000’
Demanda de usar los datos para Aparecen nuevos componentes en convertirlos en la información útil DBMS capaces de manejar en para la empresa. forma especial los almacenes de datos. Nuevas formas de acceder la Las DBMS tienen incorporada las información desde Internet y su herramientas de acceso desde uso en el comercio electrónico. Internet, manejo de formato libre por medio de XML. Crecimiento de volumen de datos Nuevos tipos de bases de datos para la manipulación y análisis (de grafos, no-sql, new-sql y otros). Aparición de término “Big data” y “Big Data Anlaysis”.
Diseño y explotación de bases de datos
Dra. Elzbieta Malinowski
Material de apoyo
7
Universidad de Costa Rica, Universidad Nacional
CONCEPTOS BÁSICOS Y ARQUITECTURA DE LOS SISTEMAS DE BASES DE DATOS
Modelo de Datos
Conjunto de conceptos usados para describir la estructura de la BD (tipos (tipos de datos, relaciones, y restricciones). Además contiene un conjunto de operaciones básicas para especificar consultas y actualizaciones sobre la base de datos. Esquema de la BD (intensión)
Descripción de la BD que incluye su estructura (elementos, grupos de elementos y relaciones entre ellos), tipos de datos y restricciones. Ejemplo: Figura 2.1 del libro de texto:
Estado de la BD (snapshot , instancia, extensión)
Conjunto de datos que se encuentra en la BD en un momento específico. Ejemplo: Figura 1.2 del libro de texto:
Diseño y explotación de bases de datos
Dra. Elzbieta Malinowski
Material de apoyo
8
Universidad de Costa Rica, Universidad Nacional
NIVELES DE ABSTRACCIÓN
La arquitectura de las BDs es conocida como arquitectura de tres niveles (o esquemas). Esta arquitectura fue propuesta por ANSI (American National Standards Institute , Instituto Americano Nacional de Estándares) y SPARC (Standard Planning and Requirements Committee , Comité de Requisitos y Planificación de Estándares) (ANSI/SPARC). Arquitectura de tres niveles o esquemas Sirve para separar las aplicaciones de usuario de la base de datos física.
1. Nivel interno (físico) Contiene la descripción del almacenamiento físico de los datos y los métodos de acceso. Usa un Ejemplo: Figura 1.4modelo del librodededatos texto:físico.
2. Nivel conceptual Describe la estructura (elementos, relaciones, operaciones de usuarios y restricciones) de la BD para una comunidad de usuarios, omitiendo los detalles almacenamiento.orientado Se usanalos modelos conceptuales (por ejemplo,físicos modelodeentidad-relación, objetos, semántico) o modelos Diseño y explotación de bases de datos
Dra. Elzbieta Malinowski
Material de apoyo
9
Universidad de Costa Rica, Universidad Nacional
de representación/implementación (por ejemplo, relacional, objeto-relacional, orientado a objetos, jerárquico). Ejemplo: Figura 2.1 del libro de texto:
3. Nivel externo (conjunto de vi vistas stas de usuario) Una vista describe la parte de la BD en la cual un grupo de usuarios está interesado, y oculta los demás componentes de la base de datos. Ejemplo: Figura 1.5 del libro de texto:
Los tres niveles representan distintas descripciones de los datos. Los datos realmente sólo existen en el nivel físico de la BD. La mayoría de los DBMS comerciales no tiene esta separación de niveles tan clara.
Diseño y explotación de bases de datos
Dra. Elzbieta Malinowski
Material de apoyo
10
Universidad de Costa Rica, Universidad Nacional
LENGUAJES DE
BASES DE DE DA DATOS TOS
Sirven para diferentes propósitos y pueden ser agrupados de la siguiente manera: DDL (Data Definition Language)
Es la el BD Lenguaje de definición de datos permite especificar el esquema lógico de y guardar esta descripción enque el catálogo. Ejemplo: CREATE TABLE EMPLEADO ( CEDULA CHAR(9) NOT NULL, NOMBRE VARCHAR(30) NOT NULL, NACIM DATE, DIRECCION VARCHAR(50), SALARIO DECIMAL(10,2) SUPERCED CHAR(9), NUMDEP INT NOT NULL, PRIMARY KEY (CEDULA), FOREIGN KEY (NUM_DEP) ); ALTER TABLE EMPLEADO ADD SEX CHAR;
Otros comandos: CREATE INDEX, DROP TABLE, TABL E, DROP INDEX. VDL (View Definition Language)
Es el lenguaje de definición de vistas que permite especificar las vistas de usuario. En la mayoría de los DBMSs se usa el DDL como VDL. Algunos comandos: CREATE VIEW, DROP VIEW. Ejemplo: CREATE VIEW EMPMUSIC (NOM, PAGO) AS SELECT NOMBRE, SALARIO FROM EMPLEADO WHERE NUMDEP = 5;
Diseño y explotación de bases de datos
Dra. Elzbieta Malinowski
Material de apoyo
11
Universidad de Costa Rica, Universidad Nacional
DML (Data Manipulation Language)
Es el lenguaje de manipulación de datos que permite recuperar, insertar, borrar y modificar los datos almacenados. Ejemplos: 1. 1. SELECT NOMBRE, NUMDEP FROM EMPLEADO = ‘SAN PEDRO’ AND SALARIO < 600000 WHERE DIRECCION 2. 2. INSERT INTO EMPLEADO VALUES (‘1-000-2222’,’JUAN PERE PEREZ’, Z’, 12-MAY-1934, ‘SA ‘SAN N PEDRO’, 78000, ‘2-345-678’, 5); 3. DELETE FROM EMPLEADO WHERE DIRECCION = ‘ZAPOTE’; 4. UPDATE EMPLEADO SET SALARIO = 100000 WHERE CEDULA = ‘8-876-543’; DCL (Data Control Language)
Lenguaje de control de datos que permite controlar el acceso a los recursos de sistema. Algunos comandos: ALTER PASSWORD, GRANT, REVOKE. Ejemplos: GRANT ALL PRIVILEDGES ON price TO manager WITH GRANT OPTION; GRANT SELECT ON direcciones TO Juan; REVOKE SELECT ON direcciones FROM Juan;
Diseño y explotación de bases de datos
Dra. Elzbieta Malinowski
Material de apoyo
12
Universidad de Costa Rica, Universidad Nacional
ARQUITECTURAS PARA LOS DBMS Arquitectura centralizada Los primeros sistemas de base de datos fueron sistemas centralizados, donde la base de datos, el DBMS y las aplicaciones de usuario estaban en una misma computadora (típicamente mainframe ). ). Los usuarios accedían a estos sistemas por medio de terminales con muy baja capacidad de procesamiento que prácticamente sólo servían para visualizar la información enviada por el computador central o mainframe . Un ejemplo de arquitectura centralizada se presenta en la siguiente figura (figura 2.4 del libro de texto):
Posteriormente, las terminales fueron reemplazadas por PCs y estaciones de trabajo, sin embargo, eran los usadas de tomaron modo similar sólo para visualización). Gradualmente DBMSs ventaja(es de decir, la capacidad de procesamiento del lado del usuario, dando paso a las arquitecturas cliente/servidor.
Diseño y explotación de bases de datos
Dra. Elzbieta Malinowski
Material de apoyo
13
Universidad de Costa Rica, Universidad Nacional
Arquitectura cliente/servidor de dos capas La arquitectura cliente/servidor se desarrolló para entornos de redes de computadoras donde existían máquinas cliente con cierta capacidad de procesamiento y máquinas servidor poderosas que ofrecían diferentes tipos de servicios. Un ejemplo de la arquitectura cliente/servidor al nivel lógico (figura 2.5 del libro de texto).
Servidores: máquinas con funcionalidades específicas. Pueden ser de diferentes tipos, por ejemplo: servidores de impresión, de archivos, de e-mail, y de DBMS. Los últimos se usan para todas las tareas relacionadas con la creación, manipulación y mantenimiento de bases de datos. Clientes: máquinas con capacidad de procesamiento local para ejecutar las aplicaciones locales y usar los servicios ofrecidos por las computadoras servidor. En la siguiente figura se presenta la arquitectura física y algunas variaciones que se pueden dar en el uso de las computadoras como servidores, clientes, o ambos.
Diseño y explotación de bases de datos
Dra. Elzbieta Malinowski
Material de apoyo
14
Universidad de Costa Rica, Universidad Nacional
Arquitectura cliente/servidor de dos capas para los DBMS En la arquitectura cliente/servidor de dos capas para los DBMS, los programas de interfaz de usuario y los programas de aplicación se ejecutan del lado del cliente. El cliente puede comunicarse con el DBMS siempre y cuando tenga instalado el software necesario y obtenga la conexión requerida. El servidor ejecuta la funcionalidad de SQL. consulta y transacción,de relacionada con por el procesamiento de comandos Los componentes software están, ende, distribuidos en dos sistemas: cliente y servidor. Ventajas de tener aplicaciones (o algunos de sus componentes) en el servidor: • Se pueden compartir entre diferentes diferentes usuarios. usuarios. • Es más fácil optimizarlas y modificarlas. modificarlas. • Se puede rrestringir estringir su uso a personas autorizadas con con más facilidad. • Se puede guardar su versión y yaa compilada disminuyendo el tiempo de respuesta a la consulta. Desventajas: • Sobrecarga del servidor. •
Demasiado tráfico en la red. Arquitectura cliente/servidor de tres capas para aplicaciones web La arquitectura de tres capas contiene una capa intermedia entre el cliente y el servidor de la base de datos, como se muestra en la siguiente figura (figura 2.7 (a) del libro de texto). Esta capa intermedia almacena las reglas de comercio (procedimientos o restricciones) que se usan para acceder a los datos del servidor de BD. La opción (a) presenta las tres capas usadas en el ambiente Web y la opción (b) de la figura muestra nomenclatura general. La capa de presentación es la interfaz de usuario y permite la entrada de datos. La capa lógica comercial maneja las reglas y restricciones comerciales. La capa de servicios incluye todo lo referente a la administración de los datos.
Diseño y explotación de bases de datos
Dra. Elzbieta Malinowski
Material de apoyo
15
Universidad de Costa Rica, Universidad Nacional
CLASIFICACIÓN DE LOS DBMS Criterio Modelo de datos Número de usuarios Número de sitios
Propósito de uso
Clasificación relacional, objeto-relacional, de objetos, de red y jerárquico . Actualmente otros modelos, por ejemplo, Non-SQL, NewSQL, grafos, entre otros. monousuario y multiusuario. centralizado (un solo sitio) y distribuido (muchos sitios). • Dist. homogéneo: el mismo software DBMS es usado en todos los sitios. • Dist. heterogéneo: múltiples DBMSs autónomas se acoplan en un DBMS federado (loosely coupled , highly coupled )).. general, específico (multimedia, espaciales, OLTP y OLAP).
1
El modelo de red representa los datos como “tipos de registros” y sólo tiene un tipo de relación, 1:N, llamada “tipo conjunto”. Este modelo tiene un lenguaje record-at-a-time que debe incluirse en un lenguaje de programación huésped (e.g., COBOL). Ejemplos de DBMSs basados en en modelos de datos de red: IDMS, DMS 1100, IMAGE, VAX-DBMS y SUPRA. 2 El modelo jerárquico j erárquico representa los datos en estructuras jerárquicas tipo árbol. Cada jjerarquía erarquía representa registros relacionados. El DML jerárquico más popular fue DL/1 de IMS (IBM). Ejemplos de DBMS basados en modelos de datos jerárquicos: IMS, System 2K y TDMS.
Diseño y explotación de bases de datos
Dra. Elzbieta Malinowski
Material de apoyo
16
Universidad de Costa Rica, Universidad Nacional
PARTE II: ETAPAS DE DISEÑO Y MODELO ENTIDADRELACION DISEÑO DE UNA BASE DE DATOS El diseño de 3.1 unadelBD incluye varias etapas, como se presenta en la siguiente figura (figura libro de texto).
Diseño y explotación de bases de datos
Dra. Elzbieta Malinowski
Material de apoyo
17
Universidad de Costa Rica, Universidad Nacional
1. Recopilación y análisis de requerimientos Se entrevista a los usuarios para entender y documentar sus requerimientos de datos.. Además se especifican los requerimientos funcionales datos funcionales que la aplicación debe implementar (operaciones o transacciones definidas por el usuario). 2. Diseño conceptual Se crear el esquema conceptual conceptual usando un modelo de datos de alto nivel. Dicho esquema describe detalladamente tipos de entidades, relaciones entre ellas y restricciones. Paralelamente se especifican las operaciones de usuario como transacciones de alto nivel. 3. Diseño lógico (mapeo de modelo de datos) Se implementa la BD en algún DBMS comercial, usando el modelo de datos específico del DBMS (modelo de datos de implementación), e.g., relacional u orientado a objetos. 4. Diseño físico Se especifica la estructura estructura de almacenamiento de los archivos, su organización, índices, y rutas de acceso. Paralelamente se diseñan e implementan implementan los programas de aplicación correspondientes a las transacciones de alto nivel . Ejemplo La base de datos para una compañía, que mantiene información sobre los empleados, los departamentos y los proyectos de la la compañía. Recopilación y análisis de requerimientos La descripción del mini-mundo después de entrevistar a los usuarios es: • La compañía está dividida dividida en departamentos. Cada departamento tiene un nombre único, un número único que lo identifica y un empleado concreto que es el gerente del departamento. Es necesario registrar la fecha en que el gerente comenzó a dirigir el departamento. Un departamento puede estar ubicado en varios lugares. • Un departamento contr controla ola vvarios arios proyectos, cada uno de los cuales tiene un nombre único, un número único y una sola ubicación. • Para cada empleado se necesita guardar su nombre, número de cédula, dirección, salario, salario, sexo y fecha de nacimiento. Cada empleado está asignado a un departamento pero puede trabajar en varios proyectos que no necesariamente están controlados por el mismo mismo departamento. Es necesario registrar el número de horas que cada empleado trabaja en un proyecto. Además, hay que mantener información sobre el supervisor directo de cada empleado. •
Se requiere mantener información de cada empleado paramantener propósitos de seguro sobre social.los Paradependientes cada dependiente se
Diseño y explotación de bases de datos
Dra. Elzbieta Malinowski
Material de apoyo
18
Universidad de Costa Rica, Universidad Nacional
almacenará su nombre, sexo, fecha de nacimiento y relación con el empleado. Diseño conceptual El esquema conceptual se puede visualizar por medio del diagrama EntidadRelación (ER), como se observa en la siguiente figura (figura 3.2 del libro de texto). Esta figura se explicará gradualmente, conforme se vayan presentando los conceptos del modelo ER.
Diseño y explotación de bases de datos
Dra. Elzbieta Malinowski
Material de apoyo
19
Universidad de Costa Rica, Universidad Nacional
DEFINICIONES SOBRE ENTIDADES Entidad
Es el objeto básico que representa el modelo ER. Es un objeto que existe en el mundo real y que puede distinguirse de otros objetos. Puede ser un objeto con existencia física o conceptual. Toda entidad posee características llamadas atributos. Ejemplos (Figura 3.3 del libro de texto: empleado e 1 y compañía c 1):
Tipo de entidad
Define una colección de entidades que tienen las mismas características. Se representa en el diagrama ER como un rectángulo con el nombre del tipo de entidad en su interior. Ejemplos: • Empleado, Departamento y Proyecto de la BD COMPAÑÍA. • Automóvil, Estudiante, Curso, Supermercado.
Atributo
Propiedad que describe a la entidad (o relación). Los atributos se representan en el diagrama ER como óvalos con el nombre del atributo en su interior. Ejemplos: • número de cédula • nombre • número de teléfono Dominio
Tipo y rango de los valores que se pueden asignar a cada atributo. Es un tipo de restricción. Ejemplos: • Dominio de salario: salario: número real entre 230,000 y 950,000. • Dominio de edad: número entero entre 18 y 65 años.
Diseño y explotación de bases de datos
Dra. Elzbieta Malinowski
Material de apoyo
20
Universidad de Costa Rica, Universidad Nacional
Esquema (Intención)
Es la descripción, por medio de un tipo de entidad, de un conjunto de entidades que comparten su estructura. Conjunto de entidades (Extensión)
Colección de todas las entidades de un tipo de entidad de la BD en un instante del tiempo. Ejemplos: figura 3.6 del libro de texto • Empleados particulares: e 1, e 2, e 3. • Compañías particulares: c 1, c 2.
TIPOS DE ATRIBUTOS Atributos simples (atómicos)
Son aquellos que no pueden ser divididos en atributos más simples (o subpartes con significado propio). Ejemplos: • Atributos Sexo y y Salario de de la entidad EMPLEADO en el esquema ER de la BD COMPAÑIA . • Número de teléfono, número de hijos de una persona. Atributos compuestos
Son aquellos que pueden ser divididos en subpartes que representan atributos más simples (o atómicos) con significado independiente. Un atributo se define compuesto cuando el usuario a veces se refiere al atributo como una unidad y a veces se refiere a los componentes individuales del atributo.
Diseño y explotación de bases de datos
Dra. Elzbieta Malinowski
Material de apoyo
21
Universidad de Costa Rica, Universidad Nacional
Se representan en el diagrama ER como óvalo con el nombre general del atributo en su interior y óvalos para representar cada atributo simple que forma el atributo compuesto Ejemplos: • El atributo Nombre de de la entidad EMPLEADO en el esquema ER de la BD COMPAÑIA; compuesto por NombreP, Apellido1, Apellido2. • Un atributo atributo Dirección Dirección puede puede estar compuesto por el nombre y número de calle, la ciudad, la provincia, y el código postal como presentado en la figura 3.4 del libro de texto
Atributos monovalor
Tienen un solo valor para una entidad específica. Ejemplos: • Sexo y salario en el modelo ER de la BD COMPAÑIA. Atributos multivalor
Pueden tener un conjunto de valores para la misma entidad en la misma instancia del tiempo. Pueden tener límites inferior y superior para el número de valores permitidos por entidad. Se representan en el diagrama ER como óvalos de doble línea. Ejemplos: • Ubicación de la entidad DEPARTAMENTO en el esquema ER de la BD COMPAÑIA (atributo LUGARES), donde pueden existen varios lugares para el mismo departamento. • Grado universitario si la persona tiene varios. • Color de un auto pintado de rojo, azul y blanco (figura 3.7 del libro del texto).
Diseño y explotación de bases de datos
Dra. Elzbieta Malinowski
Material de apoyo
22
Universidad de Costa Rica, Universidad Nacional
La condición que define si un atributo puede tener uno o más valores se llama cardinalidad del atributo. atributo. Razones para definir un atributo multivalor: 1. El atributo tiene varios valores al mismo tiempo para una entidad. 2. Se requiere consultar los valores individuales individuales que forman el atributo. Atributos derivados
Su valor puede determinarse a partir de otro atributo o derivarse de entidades relacionadas. Ejemplos: • Número de empleados de la entidad DEPARTAMENTO DEPARTAMENTO en el esquema ER de la BD COMPAÑIA (se deriva de la relación con la entidad EMPLEADO). (se calcula a partir del atributo Fecha de nacimiento). • Edad (se Atributos base (o almacenados)
Sirven para derivar otros atributos. Ejemplo: Fecha de nacimiento (del cual se deriva el atributo Edad). Atributos nulos (NULL)
No tienen valor para una entidad particular. Razones para definir un atributo nulo: 1. Su valor existe pero es desconocido. 2. Su valor no existe (atributo no es aplicable para una entidad). 3. No se sabe si el valor existe.
Diseño y explotación de bases de datos
Dra. Elzbieta Malinowski
Material de apoyo
23
Universidad de Costa Rica, Universidad Nacional
Ejemplos: (valor existe pero pero lo desconocemos) • Altura y peso de una persona (valor en una dirección (no (no aplica para personas que • Número de apartamento en viven en casas). • Número de teléfono de una persona (no sabemos sabemos si existe o no). Atributo llave o clave
Es un atributo o conjunto de atributos cuyo valor es distinto para cada entidad del conjunto de entidades. Identifican de forma única a cada entidad. Es una restricción de unicidad, unicidad, la cual prohíbe que dos entidades tengan el mismo valor para el atributo llave al mismo tiempo. Ejemplos: • Nombre + dirección de una persona • Número de cédula de una persona • Número de placa de un vehículo Un tipo de entidad puede tener más de un atributo llave. Atributo llave candidata
Es un atributo llave con la mínima cantidad de atributos que lo conforman. Si atributos llave contiene más que un atributo, lo modelamos como un atributo compuesto. Se representa en el diagrama ER subrayando el nombre del atributo llave dentro del óvalo. Ejemplos: • Número de cédula de una persona. • Número de placa de un carro. • Número de seguridad social
Diseño y explotación de bases de datos
Dra. Elzbieta Malinowski
Material de apoyo
24
Universidad de Costa Rica, Universidad Nacional
EJERCICIOS EN CLASE – IDENTIFICACIÓN DE TIPOS DE ENTIDADES: 1. ¿Cuáles tipos de entidades se pueden distinguir para modelar las siguientes situaciones? ¿Cuáles atributos se podrían asociar y cuáles de ellos pueden formar la llave candidata? a. Profesores ofreciendo cursos. b. Médicos atendiendo a sus pacientes c. Ríos pertenecientes a las diferentes cuencas. d. Los recursos naturales, las rutas de acceso a ellos y zonas de riesgo donde se pueden ubicar. e. Otros ejemplos referentes referentes a objetos espaciales. 2. El Instituto Costarricense de Turismo desea crear uuna na base de datos que contiene los datos referentes a diferentes hoteles, sus gerentes y servicios que ofrecen. También se necesita guardar los datos relacionados con la ubicación geográfica de estos hoteles y las rutas oficinales que se usan para accederlos. Usando la notación ER presenta los tipos de entidades con sus atributos que se podría usar para crear esta base de datos incluyendo las llaves candidatas. 3. ¿Cuándo se justifica usar en el esquema ER un atributo multivaluado? Por ejemplo, si una persona tiene varios números de teléfonos, ¿Qué decisión tomaría? Dé dos ejemplos donde en uno de ellos se justifica tener un atributo multivaluado y en el otro no existe esta necesidad. Justifique su respuesta. 4. Describa algún ejemplo relacionado con su profesión con el propósito de identificar los tipos de entidades.
Diseño y explotación de bases de datos
Dra. Elzbieta Malinowski
Material de apoyo
25
Universidad de Costa Rica, Universidad Nacional
DEFINICIONES SOBRE RELACIONES Relación
Es una asociación entre dos o más entidades. Ejemplo: •
Juan trabaja para el Departamento de Contabilidad. Tipo de relación Describe una colección de relaciones del mismo tipo. Ejemplo: • PERTENECE_A (un Empleado pertenece a un Departamento) Departamento) en el esquema ER de la BD de COMAÑÍA. Conjunto de relaciones
Es la colección de todas las relaciones (instancias) de un tipo de relación de la BD en un instante dado del tiempo. Ejemplo: Figura 3.9 del libro de texto.
Grado de la relación
Es el número de tipos de entidades que participan en la relación. • Relación binaria (de grado 2): participan dos tipos de entidades. Ejemplo: tipo de relación PERTENECE_A en la BD COMAÑÍA •
Relación ternaria (de grado 3): participan tres tipos de entidades Ejemplo: tipo de relación SUPPLY (figura 3.17 del libro de texto)
Diseño y explotación de bases de datos
Dra. Elzbieta Malinowski
Material de apoyo
26
Universidad de Costa Rica, Universidad Nacional
•
Relación n -aria -aria (de grado n ): ): participan más de tres tipos de entidades (poco usada en bases de datos operacionales/transaccionales; muy común en almacenes de datos).
Relación recursiva
Es un tipo de relación donde el mismo tipo de entidad participa más de una vez con distintos roles. Un rol es el papel que juega la entidad en la relación, y es esencial para distinguir cada participación. Ejemplo: La relación SUPERVISA, donde la entidad EMPLEADO participa dos veces: una vez bajo con rol de Supervisor y otra vez con rol de Supervisado.
Diseño y explotación de bases de datos
Dra. Elzbieta Malinowski
Material de apoyo
27
Universidad de Costa Rica, Universidad Nacional
EJERCICIOS EN CLASES – IDENTIFICACIÓN DE TIPOS DE RELACIONES 1. Para los ejercicios anteriores indique los tipos de relaciones que puedan existir entre los tipos de entidades identificados anteriormente: a. Profesores ofreciendo cursos. b. Médicos atendiendo a sus pacientes c. Los Ríosrecursos pertenecientes a laslas diferentes cuencas. d. naturales, rutas de acceso a ellos y zonas de riesgo donde se pueden ubicar. e. Otros ejemplos referentes referentes a objetos espaciales. 2. La Instituto Costarricense de Turismo desea crear una base de datos que contiene los datos referentes a diferentes hoteles, sus gerentes y servicios que ofrecen. También se necesita guardar los datos relacionados con la ubicación geográfica de estos hoteles y las rutas oficinales que se usan para accederlos. Usando la notación ER incorpora los tipos de relacionales que asocian los tipos de entidades identificados anteriormente. 3. ¿Cómo modelarías los siguientes ejemplos?: a. principales con parte otros ríos que alimentan. b. Ríos Compañías que son de otras otr as los compañías, por ejemplo, Protect & Gamble es dueño de muchas compañías muy conocidas. c. Productos que tienen otros productos como substitutos. d. Registro de hijos con sus madres y padres. 4. Menciona algunos ejemplos de tipos de relaciones recursivas que pueden visualizar en su profesión.
Diseño y explotación de bases de datos
Dra. Elzbieta Malinowski
Material de apoyo
28
Universidad de Costa Rica, Universidad Nacional
MÁS SOBRE LAS ENTIDADES Y RELACIONES Tipo de entidad débil 3
Es un tipo de entidad que no tiene ningún atributo llave. Depende de la existencia de otro tipo de entidad llamado dominante dominante.. Un tipo de entidad débil posee una llave parcial (conjunto de atributos que pueden identificar a las entidades débiles que relacionadas con la misma entidad dominante), la cual se representa en elestán diagrama ER con subrayado de línea discontinua. Ejemplo: DEPENDIENTES en el esquema ER de la BD de COMPAÑÍA. Tipo de entidad subordinada
Es un tipo que depende de la existencia de otro tipo de entidad dominante, pero tiene su propio identificador. Se representa en el diagrama ER de la misma forma como tipo de entidad débil Ejemplo: El tipo de entidad Licencia de Conducir (con varios atributos) que tiene su propio identificador (su número), pero su existencia puede depender del otro tipo de entidad, por ejemplo, Persona. Tipo de entidad dominante (fuerte)
Es un tipo de entidad del cual depende lasún tipo de entidad subordinada. También se conoce como entidad fuerte. Ejemplo: EMPLEADO en el esquema ER de la BD de COMPAÑÍA.
Relación identificadora
Es un tipo de relación que asocia un tipo de entidad débil con su respectivo tipo de entidad fuerte. También se conoce como relación débil. débil. Se representa en el diagrama ER como un rombo de doble línea. Ejemplo: El tipo de relación DEPENDIENTES_DE en el esquema ER de la BD COMPAÑÍA.
3
Esta definición y la siguiente difieren de las definiciones que da el libro de texto.
Diseño y explotación de bases de datos
Dra. Elzbieta Malinowski
Material de apoyo
29
Universidad de Costa Rica, Universidad Nacional
EJERCICIOS EN CLASES – TIPOS DE ENTIDADES DÉBILES 1.
Considere la división territorial de Costa Rica en distritos, cantones y provincias con los atributos de Código, Nombre y Población. Represente los tipos de entidades con atributos llaves y tipos de relaciones para modelar esta distribución.
Modele la Incluye situación donde se representa cuencas y vertientes. las suposiciones necesarias las que sub-cuencas, justifiquen su diseño. En la UCR cada curso se maneja incluyendo su versión (que contiene algunas modificaciones con respecto a la propuesta original del curso). Modele la situación para representar los estudiantes que están matriculados en un grupo que pertenece a una versión específica del curso. 4. Proponga algún esquema ER que incluye el tipo de entidad débil o subordinada referente a los ejemplos de su profesión. 5. Interpreta el siguiente esquema en términos de sus tipos de entidades y tipos de relaciones
2. 3.
Diseño y explotación de bases de datos
Dra. Elzbieta Malinowski
Material de apoyo
30
Universidad de Costa Rica, Universidad Nacional
RESTRICCIONES ESTRUCTURALES Los tipos de relaciones típicamente tienen ciertas ciertas restricciones que limitan las posibles combinaciones de entidades que pueden participar en las instancias de relación. Existen dos tipos de restricciones: • Razones de cardinalidad •
Participación
Razones de cardinalidad (Cardinality ratio )
Especifica el número máximo de instancias de relación en las que una entidad máximo de puede participar. Es decir, limita la cantidad de entidades (de un tipo de entidad participante) que se pueden asociar o relacionar con una entidad (del otro tipo de entidad participante). Las razones de cardinalidad que existen para tipos de relación binarias son 1:1, 1:N, N:1 y M:N. Una a Una (1:1)
Una entidad de A puede asociarse sólo con una entidad de B y viceversa
Ejemplo: Tipo de relación DIRIGE entre EMPLEADO y DEPARTAMENTO en el esquema ER de la BD de COMPAÑÍA: un empleado puede dirigir/administrar sólo un departamento y un departamento puede tener sólo un gerente (figura 3.12 del libro de texto).
Diseño y explotación de bases de datos
Dra. Elzbieta Malinowski
Material de apoyo
31
Universidad de Costa Rica, Universidad Nacional
Una-a-Muchas (1:N)
Una entidad de A puede estar asociada con varias entidades de B, pero una entidad de B puede estar asociada con sólo una entidad de A.
Ejemplo: Tipo de relación DEPENDIENTES_DE entre EMPLEADO y DEPENDIENTE en el esquema ER de la BD de COMPAÑÍA: un empleado puede tener varios (uno o más) dependientes pero un dependiente depende de sólo un empleado.
Diseño y explotación de bases de datos
Dra. Elzbieta Malinowski
Material de apoyo
32
Universidad de Costa Rica, Universidad Nacional
Muchas-a-Una (N:1) Una entidad de A puede estar asociada con una sola entidad de B, pero una entidad de B puede estar asociada con varias entidades de A.
Ejemplo: Tipo de relación relación PERTENECE_A entre entre EMPLEADO y DEPARTAMENTO en el esquema ER de la BD de COMPAÑÍA: un empleado trabaja para sólo un departamento pero un departamento puede tener muchos empleados (figura 3.9 del libro de texto).
Diseño y explotación de bases de datos
Dra. Elzbieta Malinowski
Material de apoyo
33
Universidad de Costa Rica, Universidad Nacional
Muchas-a-Muchas (N:M) Una entidad de A puede estar asociada con varias entidades de B y una entidad de B puede estar asociada con varias entidades de A.
Ejemplo: Tipo de relación TRABAJA_EN entre EMPLEADO y PROYECTO en el esquema ER de la BD de COMPAÑÍA: un empleado puede trabajar en varios proyectos y en un proyecto pueden trabajar varios empleados (figura 3.13 del libro de texto).
Diseño y explotación de bases de datos
Dra. Elzbieta Malinowski
Material de apoyo
34
Universidad de Costa Rica, Universidad Nacional
Participación (Existence Dependency Constraint )
Especifica el número mínimo de instancias de relación en las que una entidad mínimo de debe participar. Existen dos tipos de restricciones de participación: Total: todas las entidades del conjunto de entidades tienen que participar Total: en la relación. También se conoce como dependencia de existencia.. Se representa en el diagrama ER con una doble línea. existencia Ejemplo: En el esquema ER de COMPAÑÍA, el tipo de entidad EMPLEADO tiene participación total en el tipo de relación PERTENECE_A, lo que significa que todo empleado debe trabajar para un departamento. Parcial: sólo un subconjunto del conjunto de entidades participa en la Parcial: relación. Ejemplo: En el esquema ER de COMPAÑÍA, el tipo de entidad EMPLEADO tiene participación parcial en el tipo de relación DIRIGE, lo que significa que algunos empleados son gerentes de departamento (lo dirigen), pero no todos. Las razones de cardinalidad junto con las restricciones de participación conforman las restricciones estructurales. estructurales.
Diseño y explotación de bases de datos
Dra. Elzbieta Malinowski
Material de apoyo
35
Universidad de Costa Rica, Universidad Nacional
EJERCICIOS EN CLASES – RESTRICCIONES ESTRUCUTRALES: 1. ¿Cuál es la razón de cardinalidad y parti participaciones cipaciones entre los siguientes tipos tipos de entidades? • Estudiante y cursos. • • • • • • • • • •
Profesoryyesposa estudiante. Esposo en nuestra sociedad. Casa y dueño. Cliente y factura. Cliente y cuenta de ahorro. Rio y distrito. Distrito y cantón. Propiedad y dueño. Reserva indígena y parque nacional. Otros ejemplos?
2. Cada una de llos os estudiantes debe escoger algún ejemplo ejemplo visto anter anteriormente iormente con los tipos de entidades y tipos de relaciones y especificar las restricciones estructurales en él. 3. Interprete las restricciones estructurales en el siguiente esquema:
Diseño y explotación de bases de datos
Dra. Elzbieta Malinowski
Material de apoyo
36
Universidad de Costa Rica, Universidad Nacional
4. Especifique las suposiciones e indíquelas en la forma de restricciones estructurales
Diseño y explotación de bases de datos
Dra. Elzbieta Malinowski
Material de apoyo
37
Universidad de Costa Rica, Universidad Nacional
ATRIBUTOS DE LAS RELACIONES Los tipos de relación, relación, al igual igual que los tipos tipos de entidad, pueden tener atributos. Sin embargo, podemos notar que: hacia uno de los tipos Los atributos de los tipos de relación 1:1 pueden migrar migrar hacia de entidad participantes, preferiblemente a la que tiene la participación total. Ejemplo: En el esquema ER de COMPAÑÍA, la relación DIRIGE con su atributo FechaInic. Los atributos de los tipos de relación 1:N pueden migrar migrar sólo sólo hacia la entidad
que participa en el lado N de relación. N de la relación.
Ejemplo: En el esquema ER de COMPAÑÍA, si la relación PERTENECE_A tuviera un atributo FechaInicio, este atributo podría migrar hacia la relación EMPLEADO. Los atributos de los tipos de relación N:M tienen que ser especificados como
atributos de la relación y no pueden migrar hacia ninguna de las entidades participantes. Ejemplo: En el esquema ER de COMPAÑÍA, la relación TRABAJA_EN con su atributo Horas.
Diseño y explotación de bases de datos
Dra. Elzbieta Malinowski
Material de apoyo
38
Universidad de Costa Rica, Universidad Nacional
EJERCICIOS EN CLASES – ATRIBUTOS DE LOS TIPOS DE RELACIONES 1. ¿Cómo se podría modelar la situación para guardar los los datos referentes a los estudiantes y los cursos que llevaron incluyendo el semestre y la nota que obtuvieron? 2. ¿Cuándo atributo para el tipo de relación?: en los siguientes ejemplos se pude incluir atributo a. Profesores oofreciendo freciendo cursos en diferentes diferentes semestres. semestres. b. Médicos atendiendo a sus pacientes en diferentes consultorios en diferentes fechas. 3. Suponga que se está representando los datos referentes a las agencias turísticas y el distrito al cuál pertenecen. De acuerdo a la ley en Costa Rica, un nuevo distrito puede aparecer cuando 10 mil habitantes lo solicitan. Esto indica que la misma agencia puede cambiar de distrito. ¿Cómo modelarías esta situación? 4. Se tiene 100temperatura estaciones yque los datos referentes nivel día. de precipitación, brillorecopilan solar. Estos datos se recopilana cada ¿Cómo se podría representar estos datos usando el modelo ER? 5. Interprete los requisitos de los datos que llevaron a construir el siguientes esquema conceptual:
Diseño y explotación de bases de datos
Dra. Elzbieta Malinowski
Material de apoyo
39
Universidad de Costa Rica, Universidad Nacional
Diseño y explotación de bases de datos
Dra. Elzbieta Malinowski
Material de apoyo
40
Universidad de Costa Rica, Universidad Nacional
RESUMEN DE NOTACIÓN BÁSICA PARA LOS DIAGRAMAS ER
o identificadora
Diseño y explotación de bases de datos
Dra. Elzbieta Malinowski
Material de apoyo
41
Universidad de Costa Rica, Universidad Nacional
NOTACIONES ALTERNATIVAS PARA LOS DIAGRAMAS ER (Figura A.1 del libro de texto)
Diseño y explotación de bases de datos
Dra. Elzbieta Malinowski
Material de apoyo
42
Universidad de Costa Rica, Universidad Nacional
La BD COMPAÑÍA puede ser representada usando la notación alternativa de la siguiente forma:
a.
Diseño y explotación de bases de datos
Dra. Elzbieta Malinowski
Material de apoyo
43
Universidad de Costa Rica, Universidad Nacional
RELACIONES TERNARIAS Las relaciones ternarias representan situaciones donde es indispensable la aparición simultánea de las tres entidades en la relación. A menudo resulta difícil decidir si una cierta relación se debe representar como una relación ternaria o si debe descomponer en varias relaciones binarias. Esta decisión debe basarse en la semántica de larepresenta situación que se está modelando. tipo de relación ternaria distinta información que En tresgeneral, tipos deun relación binaria. Por ejemplo, el siguiente tipo de relación ternaria
no es equivalente a tres tipos de relaciones binarias:
Suponga que cada proyecto sólo usa un proveedor por componente. Esto se puede representar fácilmente usando el tipo de relación ternaria SUMINISTRAR. Por ejemplo, las instancias de relación {d1, p1, c1}, {d2, p1, c2} y {d2, p2, c1} indican que los dos proveedores d1 y d2 suministran el componente c1, pero lo hacen a diferentes proyectos (p1 y p2) y aunque pueden suministrar al mismo proyecto (p1), ofrecen diferentes componentes (c1 y c2). De esta manera la restricción semántica de un solo proveedor por componente por proyecto se satisface.
Diseño y explotación de bases de datos
Dra. Elzbieta Malinowski
Material de apoyo
44
Universidad de Costa Rica, Universidad Nacional
Si en lugar de usar un tipo de relación ternaria, se usaran tres tipos de relaciones binarias, podríamos incurrir en pérdida de información. Por ejemplo, las instancias {d1, p1, c1} {d2, p1, c2} y {d2, p2, c1} de la relación ternaria se representarían en las relaciones binarias así: {d1, p1}, {d2, p1} y {d2, p2} en la relación SUMINISTRA, {p1, c1}, {p1, c2} y {p2, c1} en la la relación UTILIZA, y {d1, c1}, {d2, c2} y {d2, c1} en la relación PUEDE_SUMINISTRAR. Para saber cuál proveedor suministra componente a relaciones. cuál proyecto, hay que unir las la información provenientequé de las tres tipos de Esta unión produce siguientes instancias: {d1, p1, c1}, {d2, p1, c1}, {d2, p1, c2} y {d2, p2, c1}. El esquema con tres tipos de relaciones binarias produce pérdida de información porque indica que existen dos proveedores d1 y d2 que suministran el componente c1 al proyecto p1, lo cual viola la restricción semántica original. Consecuentemente, al tomar la decisión de descomponer la relación ternaria en varias binarias, debe considerarse si hay pérdida de información. Si no la hay, debe analizarse la semántica de la situación específica, la flexibilidad y la eficiencia que ofrece el esquema para realizar las consultas de los usuarios. Algunas herramientas para el diseño de bases de datos se fundamentan en variantes modeloternaria ER que sóloser permiten utilizar como relaciones En débil tales casos, unadel relación debe representada un tipobinarias. de entidad sin llave parcial y con tres relaciones identificadoras:
Diseño y explotación de bases de datos
Dra. Elzbieta Malinowski
Material de apoyo
45
Universidad de Costa Rica, Universidad Nacional
EJERCICIOS EN CLASES – RELACIONES TERNARIAS 1. ¿Cómo cambiaría el diseño considerando los ejemplos del punto 1 con los requerimientos ligeramente modificados?: a. Profesores oofreciendo freciendo cursos cursos en diferentes semestres. b. atendiendo a sus en acceso diferentes consultorios. c. Médicos Los recursos naturales conpacientes las rutas de a ellos y zonas de riesgo donde se encuentran tanto los recursos naturales como las rutas de acceso. 2. ¿Cómo modelaría las siguientes situaciones? situaciones? 3. a. Datos de parcelas, sus dueños y de los responsable de su registración. registración. b. Entrevistas de trabajo para diferentes departamentos de la compañía con la información sobre cuál trabajo se ofreció. 4. Interpreta los tipos de las relaciones ternarias ternarias e indica si se puede cambiarlas por una serie de tipos de relaciones binarias.
Diseño y explotación de bases de datos
Dra. Elzbieta Malinowski
Material de apoyo
46
Universidad de Costa Rica, Universidad Nacional
Diseño y explotación de bases de datos
Dra. Elzbieta Malinowski
Material de apoyo
47
Universidad de Costa Rica, Universidad Nacional
ESPECIALIZACION Y GENERALIZACION Con frecuencia un tipo de entidad tiene subgrupos de entidades significativos que deben ser modelados explícitamente (por ejemplo, las entidades Empleado pueden agruparse en secretaria, técnico, ingeniero, gerente, entre otros. Estos subgrupos se llaman subclases subclases y el tipo de entidad se llama superclase superclase.. A la relación entre la superclase y una de sus subclases se le como llama superclase/subclase superclase/subclase o simplemente clase/subclase clase/subclase (también conocida ISA o ISA o ES-UNA ES-UNA). ). Una entidad que es miembro de una subclase también debe pertenecer a la superclase (por ejemplo, una secretari secretariaa también es una empleada). Es decir, una entidad no puede existir sólo como miembro de una subclase. Sin embargo, no es necesario que una entidad de la superclase sea miembro de alguna subclase.Una entidad miembro de una subclase hereda todos los atributos y relaciones de la superclase. Especialización
Proceso de definir un conjunto de subclases de un tipo de entidad ( top-down ). ). Hay dos razones para crear especialización: 1. Ciertos atributos aplican a algunas de las entidades de la superclase pero no a todas. Ejemplo: rapidez de tecleo en secretaria. 2. En algunos titipos pos de relación sólo pueden participar entidades que sean miembros de la subclase. Ejemplo: técnico se puede relacionar con las computadoras que repara. El proceso de especialización: • Define el conjunto de subclases de una entidad. • Asocia atributos específicos con cada subclase. • Establece relaciones relaciones específicas adicionales entre cada ssubclase ubclase y otras entidades.
Diseño y explotación de bases de datos
Dra. Elzbieta Malinowski
Material de apoyo
48
Universidad de Costa Rica, Universidad Nacional
Ejemplo de diferentes especializaciones (figura 4.1 del libro de texto con las modificaciones de representación):
ST
DP DT
Generalización
El proceso inverso de la especialización es la generalización. Es el proceso de definir una clase generalizada (superclase) a partir de tipos de entidades dadas (bottom-up ). ). La generalización se realiza eliminando las diferencias entre varios tipos de entidades e identificando sus rasgos comunes. Existen dos razones para crear una generalización: 1. Algunos atributos son comunes a varias entidades. 2. Las mismas relaciones se aplican a entidades similares.
Diseño y explotación de bases de datos
Dra. Elzbieta Malinowski
Material de apoyo
49
Universidad de Costa Rica, Universidad Nacional
Ejemplo de diferentes especializaciones (figura 4.3 del libro de texto con las modificaciones de representación):
DT
Restricciones de especialización y generalización
1. Restricción de disyunción (disjointness ): ): especifica que las subclases son disjuntas, es decir, que una entidad miembro de una subclase no puede pertenecer a otra subclase de la especialización. Cuando esta restricción no existe (que es el caso por omisión o default ), ), los conjuntos de entidades de las subclases pueden solaparse solaparse,, de manera que una misma entidad puede ser miembro de más de una subclase de la especialización. Ejemplo: La relación ISA entre EMPLEADO, EMPLEADO ASALARIADO y EMPLEADO POR HORAS es disjunta: los empleados sólo pueden pertenecer a una de las subclases. 2. Restricción de integridad total o parcial: especifica parcial: cuando es total total especifica que cada entidad de la superclase es también miembro de al menos una subclase. Cuando es parcial parcial,, se permite que una entidad de la superclase no pertenezca a ninguna subclase. Ejemplo: La relación ISA entre EMPLEADO, EMPLEADO ASALARIADO y EMPLEADO POR HORAS es total: no existen empleados a quienes se les pague de otra forma que no sea por horas o por salario fijo.
Diseño y explotación de bases de datos
Dra. Elzbieta Malinowski
Material de apoyo
50
Universidad de Costa Rica, Universidad Nacional
Las dos restricciones son independientes y dan origen a cuatro combinaciones que debe considerarse para cada relación ISA: 1. Disyunción, total (DT) 2. Disyunción, parcial (DP) 3. Solapamiento, total (ST) 4. Solapamiento, parcial (SP) Estas restricciones marcar correspondientes en lase líneadeben que une la claseenconelsusesquema subclases.con las letras .
Diseño y explotación de bases de datos
Dra. Elzbieta Malinowski
Material de apoyo
51
Universidad de Costa Rica, Universidad Nacional
EJERCICIOS EN CLASES – ESPECIALIZACIÓN Y GENERALIZACIÓN 1. ¿Cómo modelarías las siguientes situaciones, incluyendo las restricciones especificadas anteriormente? a. Centros educativos que pueden ser nocturnos o diurnos, privados o públicos. b. El personal ydepersonal una unidad académicadonde incluyendo el profesorado, los estudiantes administrativo, los profesores pueden ser estudiantes del nivel de maestría. c. Parcelas que pueden ser para la construcción comercial, industrial, habitacional o escolar. 2. ¿Cuáles ejemplos de especialización?
su profesión p rofesión podría modelarse usando usan do la
3. Interprete el significado de las rrelaciones elaciones ISA presentes en las siguientes figuras (la primera es una parte de la figura 3.20 del libro de texto).
Diseño y explotación de bases de datos
Dra. Elzbieta Malinowski
Material de apoyo
52
Universidad de Costa Rica, Universidad Nacional
Diseño y explotación de bases de datos
Dra. Elzbieta Malinowski
Material de apoyo
53
Diseño y explotación de bases de datos
Dra. Elzbieta Malinowski
Material de apoyo
53
Universidad de Costa Rica, Universidad Nacional
RECOMENDACIONES GENERALES PARA EL DISEÑO DEL ESQUEMA USANDO EL MODELO ER
1. Determine primero las entidades y sus atributos, distinguiendo bien entre estos dos elementos. 2. Especifique las relaciones basándose en las consultas requeridas por el usuario. frecuenteComience del usuario.con las relaciones que responden a la consulta más 3. Revise que no existan relaciones redundantes. Si se encuentran, elimine las que no se utilizan en las consultas más frecuentes y/o las que “pasan” por muchas entidades cuando existe otra forma de responder la consulta abarcando menos entidades. Se debe tener cuidado de no eliminar las relaciones que parecen redundantes pero cuya eliminación provoca pérdida de información. 4. Analice la posibilidad de convertir las relaciones ternarias en binarias sin incurrir en pérdida de información. 5. Si existen relaciones 1:1 entre dos entidades, analice la posibili posibilidad dad de que una de ellas se convierta en atributo de la otra. 6. Especifique los atributos de las relaciones y revise si éstos pueden migrar hacia alguna de las entidades participantes. 7. Determine las razones de cardinalidad para las relaciones binarias. 8. Determine la participación para las relaci relaciones ones binarias. 9. Cuando confeccione el diagrama, ponga en la esquina superior izquierda o en el centro las entidades que tengan más relaciones. 10. Especifique las relaciones basándose en las consultas reque requeridas ridas por el usuario. Comience con las relaciones que responden a la consulta más frecuente del usuario.
Diseño y explotación de bases de datos
Dra. Elzbieta Malinowski
Material de apoyo
54
Universidad de Costa Rica, Universidad Nacional
EJERCICIOS DE DISEÑO PENDIENTE: 1. Se está construyendo una base de datos para llevar la organización de los equipos y los juegos de una liga deportiva. Cada equipo tiene varios jugadores, aunque no todos participan en un juego dado. Se desea llevar el el control de los jugadores que participan en cada juego por parte de cada equipo, de las posiciones queER ocuparon en elaplicación, juego y del resultado del mismo. Diseñe un esquema para esta describiendo las suposiciones que haga (si necesarios). 2. Diseñe un esquema de ER para mantener información sobre los votos emitidos en la Cámara de Representantes de EE.UU. La base de datos necesita mantener el nombre de cada estado de EE.UU., por ejemplo, Texas, New York, Calofornia e incluye la Región del estado, cuyo dominio es {Noreste, Medioeste, Sudeste, Sudoeste, Oeste}. Cada congresista de la Cámara de Representantes se describe por su nombre, se incluye el distrito representado, la fecha de inicio de su primera elección, y el partido político al cual pertenece, cuyo dominio es {Republicano, Demócrata, Independiente, Otros}. La base de datos mantiene cada proyecto de ley e incluye el nombre del proyecto, la fecha de votación del proyecto de ley, si el proyecto de ley se aprobó o no (dominio {Si, No}) y el proponente (congresista(s) que presentó el proyecto de ley). La base de datos mantiene que voto emitió cada congresista en cada proyecto (dominio del atributo voto es {Si, No, Abstencion, Ausente}). Anote claramente cualquier suposición adicional que se haga. 3. Diseñe un esquema ER para mantener los datos refer referentes entes a la colección de hongos, sus características y localización. Cada hongo se describe por medio de su nombre común, especie, género, edad y tamaño. Estos datos se recopilan considerando diferentes troncos en diferentes épocas de tiempo. Cada tronco está caracterizado por su diámetro, longitud, circunferencia mínima y máxima como también la condición en general. Los troncos se localizan en diferentes bosques identificados por su nombre y área. En caso necesario, anote suposiciones adicionales que fueron necesarios para realizar este diseño. 4. Describa algunos escenarios de ttuu ámbito de trabajo que te gustaría gustaría modelar para guardar los datos necesarios. 5. Aunque en este curso no vamos a utilizar UML, basándose en su conocimiento de dos diferentes notaciones usadas para el modelo ER, ¿se pueden entender los siguientes esquemas representados en UML?:
Diseño y explotación de bases de datos
Dra. Elzbieta Malinowski
Material de apoyo
Universidad de Costa Rica, Universidad Nacional
55
Diseño y explotación de bases de datos
Dra. Elzbieta Malinowski
Material de apoyo
Universidad de Costa Rica, Universidad Nacional
56
Diseño y explotación de bases de datos
Dra. Elzbieta Malinowski
Material de apoyo
57
Universidad de Costa Rica, Universidad Nacional
PARTE III: EL MODELO RELACIONAL El modelo relacional, propuesto por Ted Codd (de IBM Research) en 1970, se basa en el concepto de relación matemática, y utiliza la teoría de conjuntos y la lógica de predicado de primer orden. Informalmente una relación es una tabla de valores con columnas y filas. Cada fila de la tabla representa una colección de datos o valores relacionados entre sí, como los datos que describen una entidad o una relación. El nombre de la tabla y de las columnas se usa para ayudar a interpretar el significado de los datos contenidos en las filas de la tabla. Ejemplo (figura 5.2 del libro de texto):
DEFINICIONES Atributo (columna o campo)
Es un encabezado de columna, que describe el significado de los valores de la columna. Dominio Dominio
Es un conjunto de valores atómicos definido para cada atributo. Se denota D o A) donde A es un atributo. Un dominio tiene una definición lógica (que dom( describe su rango) y un tipo de datos o un formato.
Ejemplos: • dom (EDAD) = [0,100], número entero (int ) • dom(SALARIO) = [10000.00,5000000.00], número real (float ) • dom(NOMBRE) = cadena de caracteres (string ) • dom(TELEF) = cadena de 8 dígitos, formato: dddd-dddd Tupla (registro o fila)
Informalmente, es una fila de la relación. Formalmente es una lista ordenada de n valores valores t = < v 1, v 2, v 3,...,v n n>, donde cada valor v ii pertenece al dominio dom(Ai ) del atributo Ai , para 1 ≤ i ≤ n .
Diseño y explotación de bases de datos
Dra. Elzbieta Malinowski
Material de apoyo
58
Universidad de Costa Rica, Universidad Nacional
intensión) Esquema de relación (o intensión)
Es la descripción de la relación que especifica el nombre de la relación y sus atributos. Se denota R(A1, A2,..., An ) donde R es es el nombre de la relación y Ai es es el nombre del i -ésimo -ésimo atributo. Relación o estado de relación (tabla o extensión)
Es un conjunto de tuplas r (R ) = { t 1, t 2, t 3, ..., t m } del esquema R . Grado de una relación relación Es el número de atributos de su esquema de relación. Ejemplo: El grado de la relación ESTUDIANTE en la figura anterior es 7 porque su esquema contiene siete atributos.
MÁS FORMALMENTE La definición formal de relación (o estado de relación) se basa en el producto cartesiano de conjuntos. En particular, el producto cartesiano D 1 x D 2 de dos cartesiano conjuntos de valores D 1 y D 2 se define como el conjunto de todos los pares ordenados (v 1, v 2) donde v 1 ∈ D 1 y v 2 ∈ D 2. Ejemplo: Si D 1 = {2,4} y D 2 = {1,3,5}, entonces D 1 x D 2 = {(2,1), (2,3), (2,5), (4,1), (4,3), (4,5)} Esta definición de producto cartesiano se puede generalizar a n conjuntos conjuntos de valores D 1,D 2, ..., D n, de la siguiente forma: D 1 x D 2 x ... x D n n = {(v 1,v 2, ...,v n n) | v 1 ∈ D 1, v 2 ∈ D 2, …, v n n} n ∈ D n Una relación relación r (R ) se define entonces como un subconjunto del producto cartesiano de los dominios de los atributos de R : r (R ) ⊆ (dom(A1) x dom(A2) x … x dom(An )) ))
Ejemplo: r (R ) = {(2,1), (4,3)} es una relación sobre los dominios de atributo D 1 y D 2 definidos en el ejemplo anterior. Resumen Resumen Dado el esquema de relación R (A1, A2, ..., An ) con dominios de atributo dom(A1), dom(A2),..., dom(An ): • R (A1, A2, …, An ) es el esquema de la relación R de de grado n . • R es es el nombre de la relación. • A1, A2,
…, An son los atributos de la relación.
Diseño y explotación de bases de datos
Dra. Elzbieta Malinowski
Material de apoyo
59
Universidad de Costa Rica, Universidad Nacional
• r (R )
es un estado específico (extensión) de la relación R y y se especifica como un conjunto de tuplas (filas o registros) r (R ) = { t 1, t 2,..., t m m } ⊆ (dom(A1) x dom(A2) x … x dom(An )) donde cada t i i es una n -tupla -tupla con v j ∈ dom(A j ) para 1 ≤ jj ≤ n . • Un atributo A puede calificarse con el nombre de la relación R a a la cual o
R .A.pertenecen pertenece la nombre notaciónpero Esto se usaa para distinguir atributos que tienen usando el mismo distintas relaciones.
CARACTERÍSTICAS DE LAS RELACIONES Ordenamiento de las tuplas:
Una relación está definida como un conjunto de tuplas, por lo que las tuplas de una relación no tienen ningún orden entre sí. Sin embargo, al guardarse físicamente en un archivo, las tuplas tienen un orden. Ordenamiento de los valores dentro de las tuplas:
Una tupla se define como una lista ordenada de valores, lo que significa que el orden es importante. Sin embargo, a un nivel lógico lógico este ordenamiento no es necesario siempre que mantenga una correspondencia entre atributos y valores; por ejemplo, una tupla podría definirse como un conjunto de parejas (, ). Cuando una relación se implementa como archiv archivo, o, los atributos quedan ordenados físicamente como campos dentro de un registro. Valores atómicos:
Todo valor en una tupla es atómico. Esto significa que los atributos multivalor y compuestos no son permitidos. Valores nulos:
Existe un valor especial llamado null que puede usarse cuando el valor del atributo no se conoce o no aplica para una tupla.
MÁS DEFINICIONES Llave primaria de una relación
Es la mínima cantidad de atributos que permite en forma única cada tupla de la relación, o sea, dos tuplas cualesquiera tendrán una combinación de valores distintos para esos atributos. La llave elige el diseñador de la BD como forma principal de identificar a las tuplas de la relación. Esquema de una base de datos relacional
Es el conjunto de todos los esquemas de las relaciones que conforman la base de datos S = {R 1, R 2,..., R p p }.
Diseño y explotación de bases de datos
Dra. Elzbieta Malinowski
Material de apoyo
60
Universidad de Costa Rica, Universidad Nacional
Ejemplo (la figura 5.5 del libro de texto):
Estado de la base de datos
Es el conjunto de todos las tuplas de las relaciones que conforman la base de datos DB = = {r (R 1), r (R 2),..., r (R p p )}. Ejemplo (la figura 5.6 del libro de texto).
Diseño y explotación de bases de datos
Dra. Elzbieta Malinowski
Material de apoyo
Universidad de Costa Rica, Universidad Nacional
61
Diseño y explotación de bases de datos
Dra. Elzbieta Malinowski
Material de apoyo
62
Universidad de Costa Rica, Universidad Nacional
RESTRICCIONES DEL MODELO RELACIONAL Restricción del dominio
Especifica que para cada tupla, el valor de su atributo A debe ser un valor atómico del dominio dom(A). Restricción de llave
Todas las tuplas de una relación deben ser distintas (por la definición de relación como conjunto). Esto implica que ninguna combinación de dos tuplas tendrá los mismos valores para todos los atributos. Restricción de integridad de entidad
Ninguno de los valores correspondientes a los atributos de la llave primaria puede ser nulo en una tupla. Restricción de integridad referencial
Se especifica entre dos relaciones y se usa para mantener la consistencia entre las tuplas de ambas relaciones. Informalmente, esta restricción establece que una tupla de una relación que haga referencia a otra relación deberá referirse a una tupla existente de esa relación. La integridad referencial se basa en el uso de llaves externas ( externas ( foreign keys ). ). Una llave externa FK de de una relación R 1 que referencia a otra relación R 2 es un conjunto de atributos de R 1 cuyo dominio es el mismo que el de los atributos de la llave primaria de R 2, y cuyo valor para toda tupla del estado de relación r (R 1) es igual al valor de la llave primaria de alguna tupla del estado de relación r (R 2). Ejemplo (la figura 5.7 del libro de texto).
Diseño y explotación de bases de datos
Dra. Elzbieta Malinowski
Material de apoyo
63
Universidad de Costa Rica, Universidad Nacional
Restricciones de la integridad semántica
Están basadas en la semántica de la realidad modelada y se deben implementar dentro de las aplicaciones ya que no pueden ser expresadas por el modelo relacional. Estas restricciones se pueden especificar usando disparadores (triggers ) y aserciones (assertion s) s) en SQL-99. Ejemplos: • El salario de un empleado no debe exceder el salario de su supervisor • El número máximo de horas que un empleado puede trabajar a la semana es 40.
Diseño y explotación de bases de datos
Dra. Elzbieta Malinowski
Material de apoyo
64
Universidad de Costa Rica, Universidad Nacional
ALGORITMO DE MAPEO DEL MODELO EER AL MODELO RELACIONAL PASO 1: 1: Mapeo de tipos de entidad regulares Para cada tipo de entidad regular (no débil) E en el esquema ER, crear una relación R que incluya todos los atributos simples de E . Si E tiene atributos compuestos, incluir en R sólo los atributos componentes simples de cada atributo compuesto. Elegir uno de los atributos llave (llave candidata) de E como como la llave primaria de R . Si la llave que se eligió es compuesta, el conjunto de los atributos simples que la forman deben ir juntos como llave primaria de R. Ejemplo: la figura 7.3a del libro de texto.
PASO 2: 2: Mapeo de tipos de entidad débiles Para cada tipo de entidad débil W en en el esquema ER, crear una relación R que que incluya todos los atributos simples (o los componentes simples de un atributo compuesto) de W . Incluir como llave externa en R los atributos que son llave primaria de la(s) relación(es) correspondientes a la(s) entidad(es) fuerte(s) de la(s) cual(es) depende W . La llave primaria de R estará compuesta por la combinación de la(s) llave(s) primaria(s) de la(s) entidad(es) fuerte(s) de la(s) que depende W y y la llave parcial de W , si existe. Ejemplo: la figura 7.3b del libro de texto.
PASO 3: 3: Mapeo de tipos de relación binaria 1:1 Para cada tipo de relación binaria 1:1 R del esquema ER, identificar las relaciones S y y T (creadas (creadas en Paso 1 o 2) correspondientes a los tipos de entidad participantes en R . Elegir la relación que corresponda al tipo de entidad con participación total en R , por ejemplo S (si ambos tipos de entidad tienen participación total en R , elegir cualquiera). Incluir como llave externa en S la llave primaria de T. Incluir todos los atributos simples (o los componentes simples de los atributos compuestos) del tipo de relación R como como atributos de S . Ejemplo: la figura 5.5 del libro de texto
Diseño y explotación de bases de datos
Dra. Elzbieta Malinowski
Material de apoyo
65
Universidad de Costa Rica, Universidad Nacional
PASO 4: 4: Mapeo de tipos de relación binaria 1:N Para cada tipo de relación binaria 1:N R (no identificadora) identificadora) del esquema ER, identificar la relación S correspondiente correspondiente al tipo de entidad el lado N de R . Incluir como llave externa en S la la llave primaria de la relación T , que representa el otro tipo de entidad participante en R . Incluir los atributos simples (o los componentes simples atributos como atributos de S . Ejemplo:de la los figura 5.5 delcompuestos) libro de textodel tipo de relación R como
PASO 5: 5: Mapeo de tipos de relación binaria M:N Para cada titipo po de relación binaria M:N R del esquema ER, crear una nueva relación S . Incluir como llaves externas en S las llaves primarias de las relaciones correspondientes a tipos de entidad participantes en R . La combinación de estas llaves externas forma la llave primaria de S . Incluir los atributos simples (o los componentes simples de los atributos compuestos) de la relación R como como atributos de S . Ejemplo: la figura 7.3c del libro de texto.
PASO 6: 6: Mapeo de atributos multivalor Para cada atributo multivalor A, crear una nueva relación R que incluya el atributo A, e incluir como llave externa en R la llave primaria K de la relación correspondiente al tipo de entidad que tiene el atributo multivalor A. La llave primaria de R es es la combinación de A y K . Si el atributo multivalor es compuesto, se deben incluir sus componentes simples y todos formarían parte de la llave, junto con K . Ejemplo: la figura 7.3d del libro de texto
PASO 7: 7: Mapeo de los tipos de relación n -arios -arios Para cada tipo de relación n -aria -aria R (con n >2) >2) en el esquema ER, crear una nueva relación S . Incluir como llave externa en S las llaves primarias de las relaciones que representan los tipos de entidad participantes en R . Incluir los atributos simples (o los componentes simples de los atributos compuestos) de la relación R como atributos de S . La llave primaria de S es usualmente la combinación de todas las llaves externas. Ejemplo: la figura 7.4 del libro de texto.
Diseño y explotación de bases de datos
Dra. Elzbieta Malinowski
Material de apoyo
66
Universidad de Costa Rica, Universidad Nacional
PASO 8: 8: Mapeo de la especialización o generalización Convierta cada especialización de m subclases subclases {S 1,S 2,…,S m m} y una superclase C con atributos {k ,a 1,…,a n n} (donde k es es la llave primaria), en esquemas de relación de acuerdo a una de las siguientes opciones: •
Opción 8A 8A - Varias relaciones de superclase y subclase: Crear una relación L para la superclase C con con atributos Attrs(L) = { k , a 1, …, a n n } donde k es la llave primaria. Crear una relación Li para cada subclase S ii (1 ≤ i ≤ m), con atributos Attrs(Li ) = {k } ∪ Attrs(S i i ) donde k es es la llave primaria de Li . Esta opción funciona bien para cualquiera de las restricciones de especialización: disjunta, solapada, total o parcial. Ejemplo: las figuras 4.1 (modificada) y 7.5 a del libro de texto
•
Opción 8B - Varias relaciones de subclase: subclase: Crear una relación Li para cada subclase S i i (1 ≤ i ≤ m), con atributos Attrs(Li ) = Attrs(S ii ) ∪ {k , a 1, …, a n n } donde k es la llave primaria de Li . Esta opción sólo funciona bien cuando la especialización es disjunta y total.
Diseño y explotación de bases de datos
Dra. Elzbieta Malinowski
Material de apoyo
67
Universidad de Costa Rica, Universidad Nacional
Ejemplo: las figuras 4.3 (modificada) y 7.5b del libro de texto
•
Opción 8C - Una sola relación con un atributo de tipo: Crear una relación ∪
∪
∪
∪
L con a n}un Attrs( S 1atributo S m ) la simple atributos ) = {de ) … que Attrs( {t } donde k es llaa llave llaveAttrs( primaria primLaria dk e, a L1,, y…, t es es tipo de indica
subclase a la cual cada tupla pertenece. Funciona bien para especializaciones cuyas subclases son disjuntas. Puede potencialmente generar un gran número de valores nulos. Ejemplo: la figura 7.5c del libro de texto
•
Opción 8D – Una sola relación con varios atributos de tipo: tipo : Crear una relación simple L con atributos Attrs(L) = {k , a 1, …, a n n } ∪ Attrs(S 1) ∪ … ∪ ≤
t 1, t 2, …, t m} donde k es t i (con S m ∪ atributo 1 i es la llave primaria de L y cada Attrs( booleano que indica si una tupla pertenece a la subclase ≤ m ) es )un { S i i. Funciona bien para especializaciones cuyas subclases son solapadas. Ejemplo: las figuras 4.5 (modificada) y 7.5d del libro de texto
Diseño y explotación de bases de datos
Dra. Elzbieta Malinowski
Material de apoyo
Universidad de Costa Rica, Universidad Nacional
EJERCICIOS EN CLASES – CREACIÓN DE ESQUEMAS RELACIONALES 1. Pase los siguientes esquemas ER a esquemas relacionales:
Diagrama ER para la base de datos Banco.
Diagrama ER para base de datos de cine.
68
Diseño y explotación de bases de datos
Dra. Elzbieta Malinowski
Material de apoyo
Universidad de Costa Rica, Universidad Nacional
Diagrama ER para la base de datos de los movimientos de barcos.
Diagrama ER para una parte de la base de datos de control de aviones
69
Diseño y explotación de bases de datos
Dra. Elzbieta Malinowski
Material de apoyo
70
Universidad de Costa Rica, Universidad Nacional
Diagrama ER para la base de datos Conferencia. 2. Aplique ingeniería inversa y construya el esquema ER a partir del siguiente esquema relacional:
Esquema relacional para la BD BIBLIOTECA.
Diseño y explotación de bases de datos
Dra. Elzbieta Malinowski
Material de apoyo
71
Universidad de Costa Rica, Universidad Nacional
PARTE IV: DEPENDENCIAS FUNCIONALES Y NORMALIZACIÓN DE BASES DE DATOS RELACIONALES Hasta este momento asumimos que los atributos se agrupan en las relaciones usando el sentido del diseñador la base de datos usando elninguna mapeo del modelo ER acomún modelo relacional.deSin embargo, no otenemos herramienta que permita medir cuál agrupamiento de los atributos es mejor y porqué. Una guía informal de verificación de la calidad de diseño de una base de datos relacional incluye los siguientes elementos: Semántica de los atributos de la relación
La semántica indica cómo se interpretan los atributos guardados en la tupla, es decir, cómo los valores de la tupla se relacionan entre sí. Si es posible explicar con facilidad la semántica, semántica, es probable que el diseño sea bueno. Así pues, cada vez que agrupamos atributos, tenemos que revisar que tengan sentido común o alguna relación entre sí. Ejemplo: Los siguientes son ejemplos de diseños pobres con atributos combinados de varios tipos de entidades o relaciones (la figura 10.3 del libro de texto). EMP_DPTO NOMBREE
CED
FECHAN
DIRECCION
NUMEROD
NOMBRED
CEDGTED
EMP_PROY CED
NUMEROP
HORAS
NOMBREE
NOMBREP
LUGARP
GUIA 1:
Diseñe un esquema relacional cuyo significado sea fácil de explicar; en particular no combine atributos de diferentes tipos de entidades o de tipos de relaciones. Información redundante en tuplas y anomalías de actualización
Una de las metas del diseño es minimizar el espacio para guardar las relaciones. El agrupamiento de atributos en esquemas de relación influye directamente en la cantidad de espacio necesario para guardar la información (ver ejemplo anterior de la relación EMP_DEPT y las relaciones EMPLEADO y DEPARTAMENTO de la BD COMPAÑIA con respecto a la repetición de la información).
Diseño y explotación de bases de datos
Dra. Elzbieta Malinowski
Material de apoyo
72
Universidad de Costa Rica, Universidad Nacional
La repetición de información da origen a las siguientes anomalías: • Anomalía de inserción: Al insertar un empleado en la relación EMP_DEPT EMP_DEPT tenemos que insertar información sobre el departamento, aunque el empleado no haya sido asignado aún a algún departamento. Además, se necesita insertar la información sobre el departamento correctamente para o
asegurar consistencia de los datos. Al insertarlaun nuevo departamento se necesita asignarle por lo menos un empleado porque el campo de CED es la llave primaria y por tanto no puede tener un valor nulo.
o
•
Anomalías de borrado: Al borrar el último empleado de un departamento también borraramos el departamento porque no podemos mantener la información del departamento con un valor nulo (de empleado) en la llave primaria.
•
Anomalías de modificación: Si cambiamos el valor de algunos de los atributos de un departamento, tenemos que cambiarlo en todas las tuplas que rrepresentan epresentan empleados de ese departamento, para asegurarnos la consistencia de los datos.
GUIA 2:
Diseñe la base de datos de forma que no ocurran anomalías de actualización, esto es, de inserción, borrado y modificación. Valores nulos en tuplas
Si en un diseño agrupamos muchos atributos que no tienen una relación clara entre ellos, podemos terminar con muchos valores nulos en las tuplas de esa relación. Esto conlleva a desperdicio de espacio de almacenamiento y problemas a la hora de entender/interpretar el significado de los atr atributos ibutos en diferentes operaciones aplicadas a estos datos. Además, como ya vimos anteriormente los valores nulos pueden tener múltiples interpretaciones: El atributo no se aplica a esta tupla. El valor del atributo para esta tupla es desconocido. El valor del atributo es conocido pero todavía no se ha recopilado.
Ejemplo Si sólo el 10% de los empleados tienen oficinas individuales, no se justificará incluir un atributo NUM_OFICINA en la relación EMPLEADO, más bien, podríamos crear una relación OFICINAS_EMPS (CED, NUM_OFICINA) que contenga exclusivamente tuplas para los empleados con oficina individual.
Diseño y explotación de bases de datos
Dra. Elzbieta Malinowski
Material de apoyo
73
Universidad de Costa Rica, Universidad Nacional
GUIA 3: Hasta donde sea posible evite poner atributos cuyos valores puedan ser nulos. Si los valores nulos son inevitables, asegúrese que sean usados sólo en casos excepcionales y no sean aplicados a la mayoría de las tuplas de la relación.
Tuplas falsas tuples (descomposición con pérdida de información o reunión aditiva, spurious ) Ejemplo Considere las siguientes extensiones de relación: EMP_PLOC:
NOMBRE Juan Juan María María Ana
LUGARP Zapote San Pedro Desamparados Zapote Zapote
EMP_PROY1:
CED NUMEROP 1-111-111 1 1-111-111 2 2-222-222 3 2-222-222 1 3-333-333 1
HORAS 12 15 10 11 18
NOMBREP Invest1 Invest2 Invest3 Invest1 Invest1
LUGARP Zapote San Pedro Desamparados Zapote Zapote
Si quisiéramos unir ( join join ) las dos tablas, tendríamos que usar el único atributo común a las dos, que es LUGARP (ubicación del proyecto). La tabla resultante sería: CED NUMEROP 1-111-111 1 2-222-222 1 3-333-333 1 1-111-111 2 2-222-222 3 1-111-111 1 2-222-222 1 3-333-333 1 1-111-111 1 2-222-222 1 3-333-333 1 (*) tuplas incorrectas
HORAS 12 11 18 15 10 12 11 18 12 11 18
NOMBREP Invest1 Invest1 Invest1 Invest2 Invest3 Invest1 Invest1 Invest1 Invest1 Invest1 Invest1
LUGARP Zapote Zapote Zapote San Pedro Desamparados Zapote Zapote Zapote Zapote Zapote Zapote
NOMBRE Juan Juan * Juan * Juan María María * María María * Ana * Ana * Ana
Diseño y explotación de bases de datos
Dra. Elzbieta Malinowski
Material de apoyo
74
Universidad de Costa Rica, Universidad Nacional
El problema radica en que el atributo común a las dos tablas (LUGARP) no es ni la llave primaria ni la llave externa para ninguna de las dos relaciones. Aunque en este caso se produjeron más tuplas de lo necesario, se perdió información válida.
GUIA 4: join ” entre las Diseñe los esquemas de relación de manera que la operación “ join relaciones se realice sobre parejas de llave primaria y llave externa. Así se garantiza que no se produzcan nuevas tuplas incorrectas o se pierdan algunas correctas.
Las anteriores son guías informales para un buen diseño y pueden detectarse sin herramientas adicionales de análisis. Existe una guía más formal para el diseño de bases de datos relacionales: el proceso de normalización, que usa como base las dependencias funcionales. Este proceso define con mayor precisión qué tan bueno o malo es un esquema de relación.
DEPENDENCIAS FUNCIONALES Dependencias funcionales (DF) es el concepto más importante en el diseño de esquemas relacionales y sirve de base al proceso de normalización, es cual construye BDs relacionales sin anomalías de actualización. Una dependencia funcional es una restricción entre dos conjuntos de atributos de la BD. Se dice que Y es función de X, Y = f(X), si el valor de Y está siempre determinado por el valor de X. Aplicando esta terminología a una relación: el atributo B es funcionalmente dependiente del atributo A si el valor de B está determinado por el valor de A (AB). Es decir, dada una relación universal (con todos los atributos) R (A (A1, A2,..., An), el atributo Ak es funcionalmente dependiente del atributo Ai (AiAk), si y solo si cada valor de Ak en R tiene asociado exactamente un valor de Ai en R (en cualquier instancia). En otras palabras: Dada una relación R , el atributo Ak es funcionalmente dependiente del atributo A i si para todas las parejas t1 y t2 de las tuplas donde t 1[Ai] = t2[Ai], también es cierto que t1[Ak] = t2[Ak]. Esto implica que si existe la dependencia funcional AiAk y si dos tuplas en R tienen tienen el mismo valor del atributo Ai, también tienen que tener el mismo valor para el atributo Ak. Se dice que Ai determina de manera única los valores de Ak o que hay una dependencia funcional de Ai a Ak, o que Ak i depende Ejemplo funcionalmente de A .
Diseño y explotación de bases de datos
Dra. Elzbieta Malinowski
Material de apoyo
75
Universidad de Costa Rica, Universidad Nacional
A a1 a1 a2 a2
B b1 b2 b2 b3
C c1 c1 c2 c2
D d1 d2 d2 d3
Defina cuáles DF existen: A ? B ? D ? BC ?
a3 b3 c2 d3 CD ? Podemos notar que: 1. Si las restri restricciones cciones dicen que no podemos tener tener más de una tupla con el valor Ai en una instancia de R (llave (llave candidata), esto implica que AiAk para cualquier subconjunto de valores de A k, o sea, la llave candidata es el mínimo número de atributos que en forma directa o indirecta determinan todos los demás atributos de la relación. 2. AiAk no nos dice nada acerca de AkAi. Una DF es una propiedad de la semántica de la relación. Se necesita comprensión del sistema a modelar (o su extensión no la intensión - esquema) para especificar las DF. Siempre que la semántica de dos conjuntos de atributos de R indique indique que debe mantenerse una DF, la especificamos como una restricción. Ejemplos: la figura 10.3 del libro de texto (a) EMP_DPTO NOBREE
CED
FECHAN
DIRECCION
NUMEROD
df1
NOMBRED
(b) EMP_PROY CED
NUMEROP
HORAS
NOMBREE
df1
df2
NOMBREP
LUGARP
df3
NSSGTED
df2
Diseño y explotación de bases de datos
Dra. Elzbieta Malinowski
Material de apoyo
76
Universidad de Costa Rica, Universidad Nacional
EJERCICIOS EN CLASES – DEFINICIÓN DE DEPENDENCIAS FUNCIONALES 1. Interpreta para un usuario no experto las siguientes dependencias funcionales. • Provincia→ Región organizacional • Clinica→Provincia • Codigo de cantón → Nombre de cantón 2. Indique si existen dependencias funcionales y en el caso afirmativo afirmativo cuáles. • Un río río puede pasas por varios varios cantones y por un cantón pueden pasar varios ríos. • Distrito pertenece a solo un cantón y un cantón puede tener muchos distritos. • Una propiedad propiedad puede pertenecer a una municipalidad (cierto (cierto en nuestro país?) y una municipalidad puede tener registradas muchas propiedades. • Un pueblo indígena puede vivir en varias reservas indígenas. • Un río río puede estar ubicado solo en una cuenca y una cuenca puede tener varios ríos. •
Un cliente puede tener tener varias cuentas y una cuenta puede pertenecer a varios clientes • Una persona puede tener varios teléfonos, pero un teléfono sólo puede ser registrado a nombre de una persona . 3. Basándose en los siguientes requerimientos, determine las dependencias funcionales existentes. • La universidad guarda un registro de cada nombre de estudiante, carnet, carnet, dirección actual y número telefónico actual, dirección permanente y número de teléfono permanente, fecha de nacimiento, sexo, departamento al cual pertenece. El carné es valor único para cada estudiante. número de ofici oficina, na, • Cada departamento es descrito por su nombre, código, número teléfono y escuela. Ambos, el nombre y el código son únicos para cada departamento. • Cada curso tiene un nombre, descripción, sigla, número de horas por semestre, nivel. La sigla es única para cada curso y cada curso se imparte solo en un departamento. .
Diseño y explotación de bases de datos
Dra. Elzbieta Malinowski
Material de apoyo
77
Universidad de Costa Rica, Universidad Nacional
EL PROCESO DE NORMALIZACION El proceso de normalización fue propuesto por E. Codd (1972) y consiste en pasar el esquema de relación por una serie de transformaciones para llegar a alguna de las formas normales. Durante este proceso la relación se descompone en varias relaciones más pequeñas que poseen las propiedades deseadas, según la forma normal. En general, el objetivo de la normalización es minimizar la redundancia (duplicación innecesaria de datos) y evitar las anomalías de actualización.
PRIMERA FORMA NORMAL (1FN) Definición El dominio de los atributos tiene que incluir sólo valores atómicos y el valor de cualquier atributo en la tupla tiene que ser un elemento del dominio de ese atributo. La primera formal normal no permite que una relación tenga atributos compuestos ni multivalor ni relaciones anidadas. Ejemplo 1 (la figura 10.8 del libro de texto) (a) DEPARTAMENTO (no está en 1FN) 1FN) NOMBRED
NUMEROD
CEDGTE
LUGARESD
(b) DEPARTAMENTO (archivo en forma no plana) NOMBRED Contabilidad Administración Cómputo
NUMEROD 5 4 1
CEDGTE 1234567 1558214 4534536
LUGARESD {Bellaire, Sugarland, Houston} {Stafford} {Houston}
(c) DEPARTAMENTO (archivo en forma plana, 1FN) NOMBRED Contabilidad Contabilidad Contabilidad Administración Cómputo
NUMEROD 5 5 5 4 1
LUGARESD {Bellaire} {Sugarland} {Houston} {Stafford} {Houston}
CEDGTE 1234567 1234567 1234567 1558214 4534536
Ejemplo 2 (la figura 10.9 del libro de texto) (a) EMP_PROY CED
NUMEROP
HORAS
fd1
NOMBREE
fd2
NOMBREP
LUGARP
fd3
Diseño y explotación de bases de datos
Dra. Elzbieta Malinowski
Material de apoyo
78
Universidad de Costa Rica, Universidad Nacional
(b) EMP_PROY (archivo en forma no plana) CED 6668844 4534536 2876532 3334455
1234567 2877772 1558214 3876543
NUMEROP 1 2 3 1 2 2 3 10 20 2 10 10 30 2 20 30
HORAS NOMBREE 32.5 Narayan, Ramesh 7.5 40 English, Joyce 20 Jabbar, Ahmad 20 10 Wong, Frank 10 10 10 20 Smith, John B. 10 35 Hernandez, Luis 5 7.5 Bong, James 15 20 Wallace, Jennifer
NOMBREP ProyectoX ProyectoY ProyectoZ ProyectoX P royectoX ProyectoY ProyectoY ProyectoZ Automatización Reorganización PruyectoY Automatización Automatización Nuevasprestaciones ProyectoY Reorganización Nuevasprestaciones
LUGARP Belén Sacramento Higueras Belén Sacramento Sacramento Higueras Santiago Higueras Sacramento Santiago Santiago Santiago Sacramento Sacramento Santiago
(c) EMP_PROY (archivo en forma plana, 1FN ), CED 6668844 6668844
NUMEROP HORAS 1 32.5 2 7.5
NOMBREE Narayan, Ramesh Narayan, Ramesh
NOMBREP ProyectoX ProyectoY
LUGARP Belén Sacramento
4534536 2876532 2876532 3334455 3334455 3334455 3334455 1234567 1234567 2877772 2877772 1558214 1558214 3876543
31 2 2 3 10 20 2 10 10 30 2 20 30
English, Joyce Jabbar, Ahmad Jabbar, Ahmed Wong, Frank Wong, Frank Wong, Frank Wong, Frank Smith, John B. Smith, John B. Hernandez, Luis Hernandez, Luis Bong, James Bong, James Wallace, Jennifer
ProyectoZ ProyectoX P royectoX ProyectoY P royectoY ProyectoY ProyectoZ Automatización Reorganización PruyectoY Automatización Automatización Nuevasprestaciones ProyectoY Reorganización Nuevasprestaciones
Higueras Belén Sacramento Sacramento Higueras Santiago Higueras Sacramento Santiago Santiago Santiago Sacramento Sacramento Santiago
40 20 20 10 10 10 10 20 10 35 5 7.5 15 20
Solución para obtener 1FN: Cuando los valores), atributospara de obtener las relaciones contienen conjunto de la 1FN se necesita valores “aplanar”nolosatómicos archivos. (i.e., ¿Qué anomalías pueden existir si la tabla del ejemplo 3 se presenta en 1FN? Ejemplo 3 CLIENTE NumCliente
NumInv
Fecha
NomCliente
CiudadCliente PrecioEntrega
PrecioUnitario
Cantidad
fd1
fd2
|___________ fd4
fd3
Diseño y explotación de bases de datos
Dra. Elzbieta Malinowski
Material de apoyo
79
Universidad de Costa Rica, Universidad Nacional
Problemas:: Problemas • •
Redundancia de los datos Anomalías de inserción, borrado y modificación (especifique cuáles)
SEGUNDA FORMA NORMAL (2FN) Para definir la 2FN es necesario conocer dos conceptos: • Atributo primo primo:: atributo que forma parte de alguna llave candidata. (atributo no-primo no-primo es aquel que no forma parte de ninguna llave candidata). • DF total total:: dependencia X → Y en la cual la la eli eliminación minación de cualquier atributo de X invalida la dependencia (una DF parcial parcial es es aquella que no es total). Ejemplo En la tabla EMP_PROY en Ejemplo 2 anterior {CED, NUMEROP} → HORAS es una DF total porque ni {CED} → HORAS ni {NUMEROP} → HORAS son válidas. Sin embargo, la DF {CED, NUMEROP} → NOMBREE es parcial porque {CED} → NOMBREE.
Definición Una relación está en 2FN si está en 1FN y cada atributo no-primo de la relación es total y funcionalmente dependiente de cada llave candidata (cuando sólo hay una llave candidata, ésta se convierte en la llave primaria y entonces los atributos no-primos deben depender total y funcionalmente de la llave primaria). Ejemplos (los anteriores de CLIENTE y EMP_PROY) Ninguna de estas relaciones está en 2FN porque existen las dependencias parciales de la llave. ¿Cuáles? Solución para obtener 2FN: 2FN: 1. Quitar de la relación en 1FN los campos no-primos que no dependen totalmente y funcionalmente de alguna llave candidata. 2. Colocar cada campo no-primo removido en el paso 1, en una nueva relación que contenga también el subconjunto de atributos de la llave candidata original del cual dependa total y funcionalmente el campo no-primo. texto): EMP_PROY (figura 10.10a del libro de texto): tabla 1: { CED, NUMEROP } HORAS
tabla 3: 3: NUMEROP NOMBREP, LUGARP
tabla 2: 2: CED NOMBREE
Diseño y explotación de bases de datos
Dra. Elzbieta Malinowski
Material de apoyo
80
Universidad de Costa Rica, Universidad Nacional
CLIENTE:
tabla 1: NumCliente NomCliente, CiudadCliente, PrecioEntrega |__________ tabla 2: NumInv PrecioUnitario tabla 3: { NumCliente, NumInv, Fecha } Cantidad Problemas: •
Todavía pueden existir problemas de redundancia de datos y actualizaciones. Ejemplos • La relación EMP_PROY no tiene problemas. • La relación CLIENTE tiene problemas de redundancia, redundancia, anomalías de borrar, insertar y modificar. Por ejemplo, no se puede insertar el precio de entrega si no hay un cliente que compre algo o si se borra el último cliente desaparece la información de precio de entrega.
TERCERA FORMA NORMAL (3FN) Definición Una relación R está en 3FN si está en 2 FN y (informalmente) ningún atributo no-llave es funcionalmente dependiente de algún otro atributo no-llave. 3FN es más estricta que 2FN, es decir, si una relación está en 3FN también está en 2FN, pero no viceversa. Solución para obtener 3FN: 3FN: Descomponga las relaciones donde no exista la dependencia de no-llave. Ejemplos (la figura 10.10b del libro de texto): (a) EMP_DPTO NOMBREE
CED
FECHAN
DIRECCION
NUMEROD
CED
FECHAN
DIRECCION
tabla a2: EMP_DPTO2 NUMEROD
NOMBRED
NSSGTED
NSSGTED
tabla a1: EMP_DPTO1 NOMBREE
NOMBRED
NUMEROD
Diseño y explotación de bases de datos
Dra. Elzbieta Malinowski
Material de apoyo
81
Universidad de Costa Rica, Universidad Nacional
(b) CLIENTE
tabla b1: NumCliente NomCliente, CiudadCliente tabla b2: CiudadCliente PrecioEntrega
PROCEDIMIENTO GENERAL (INFORMAL) PARA LA NORMALIZACION Relación R1 (A, B, C, E, F, G, H, I) PASO1: Construir un diagrama de dependencias de acuerdo con la semántica PASO1: Construir de los datos R1
PASO 2: 2: Separar no-llaves que no son totalmente dependientes de la llave principal R2
R3
R4
PASO 4: Eliminar 4: Eliminar dependencia transitiva en R5 R2
R5
R6
R4
Diseño y explotación de bases de datos
Dra. Elzbieta Malinowski
Material de apoyo
82
Universidad de Costa Rica, Universidad Nacional
EJERCICIOS EN CLASES – PROCESO DE NORMALIZACIÓN Verifique en qué forma normal están las tablas de datos de diferentes shapefiles. Si no están en 3FN proponga adecuado diseño siguiendo los pasos de normalización. • Shapefile de de
distritos
• Shapefile de de
cantones
Diseño y explotación de bases de datos
Dra. Elzbieta Malinowski
Material de apoyo
Universidad de Costa Rica, Universidad Nacional
• Shapefile de de
salud
• Shapefile de de
referendum 2007
83
Diseño y explotación de bases de datos
Dra. Elzbieta Malinowski
Material de apoyo
Universidad de Costa Rica, Universidad Nacional
de • Shapefile de
hoteles (con que se relaciona, se necesita relaciones topológicas para saber en qué distrito está)
• Shapefile de de
colegios
84
Diseño y explotación de bases de datos
Dra. Elzbieta Malinowski
Material de apoyo
85
Universidad de Costa Rica, Universidad Nacional
PARTE V: LENGUAJE COMERCIAL – SQL SQL - Structured Query Language ( Lenguaje Lenguaje de Consultas Estructurado) es un lenguaje estándar de las DBs relacionales. La estandarización comenzó en el año 1986 y se ha venido efectuando periódicamente, con la última revisión hecha en el 2008. El nombre original de SQL es SEQUEL y fue diseñado y desarrollado por IBM Reseach en en el sistema “System R ”. ”. SQL es un lenguaje que cuenta con sentencias para crear, consultar y actualizar las BDs relacionales, por lo tanto se comporta como DDL y como DML. Además, tiene sentencias para definir vistas en la BD, especificar aspectos de seguridad y autorización, definir las restricciones de integridad referencial, entre otros. SQL usa las siguientes convenciones para referirse a elementos del modelo relacional: Tabla: Columna: Fila:
se refiere a la relación se refiere a un atributo se refiere a una tupla
Aunque las tablas son la unidad básica de manejo de datos, existen otras estructuras en la cuales las tablas están “incrustadas” como se presenta en la siguiente figura. Base de datos Catálogo Esquema Tablas y vistas Tuplas y columnas
La creación de base de datos y esquemas es responsabilidad de administrador de la BD.
Data Manipulation Language (Lenguaje de Manipulación de Datos) de SQL Data Manipulation language (DML) de SQL tiene una instrucción básica para recuperar la información desde la base de datos: SELECT SELECT..
Diseño y explotación de bases de datos
Dra. Elzbieta Malinowski
Material de apoyo
86
Universidad de Costa Rica, Universidad Nacional
La opción más simple de SELECT es: SELECT < lista de atributos > FROM < lista de tablas > Ejemplo SELECT
NOMBRE
FROM EMPLEADO; A esta opción se puede añadir la condición WHERE que indica la condición quen deben cumplir algunos valores en los atributos para recuperar las tuplas: SELECT FROM WHERE
< lista de atributos > < lista de tablas > < condición >
< Lista de atributos> Lista de nombres de los atributos cuyos valores se necesitan recuperar por la consulta < Lista de tablas > Lista de nombres de las relaciones que participan en la consulta < Condición > La expresión condicional (booleana ) que identifica las tuplas para su recuperación. Ejemplo SELECT NOMBRE FROM EMPLEADO E WHERE E.SEXO = ‘M’;
SELECT FORMA GENERAL SELECT FROM WHERE
< lista de atributos > < lista de tablas > < condición >
GROUP BY HAVING ORDER BY
< condición atributos de agrupación > < delagrupo > < lista de atributos >
SELECT FROM
Especifica los atributos o funciones para el despliegue Todas las relaciones necesarias para la consulta, incluyendo relaciones para join. Especifica la condición para la selección de tuplas individuales Especifica el (los) atributos de agrupación Especifica la (s) condiciones para el grupo seleccionado, no para las tuplas individuales. Sólo se usa cuando existe
WHERE GROUP BY HAVING ORDER BY
“Group by”
opcionales
Especifica en qué orden se despliegan las tuplas
Diseño y explotación de bases de datos
Dra. Elzbieta Malinowski
Material de apoyo
87
Universidad de Costa Rica, Universidad Nacional
El orden en su uso es: 1. FROM 2. WHERE 3. GROUP BY 4. HAVING 5. SELECT 6. ORDER BY CONSULTAS SQL Y SUS DIFERENTES OPCIONES: EJEMPLOS Para escribir las consultas se debe analizar primero cuáles tablas contiente los atributos que usuario necesita desplegar. 1. Seleccione todos los NSS de los empleados SELECT NSS FROM EMPLEADO; Respuesta de acuerdo a la base de datos COMPAÑIA
2. Recupere la fecha de nacimiento y la dirección del empleado “José Silva” SELECT FECHAN, DIRECCION FROM EMPLEADO WHERE NOMBRE = ’José’ AND APELLIDO=’Silva’ El sistema recorre todas las tuplas de la tabla EMPLEADO y verifica si la condición en la cláusula WHERE se cumple. Si la respuesta es verdadera (true) se despliega la información solicitada en la cláusula SELECT. Si es falsa (false) se pasa a verificar la siguiente tupla. Respuesta de acuerdo a la base de datos COMPAÑIA
Diseño y explotación de bases de datos
Dra. Elzbieta Malinowski
Material de apoyo
88
Universidad de Costa Rica, Universidad Nacional
3. Selecciones todos los atributos de la relación Empleado para el departamento #5 * SELECT FROM EMPLEADO WHERE ND=5; Respuesta de acuerdo a la base de datos COMPAÑIA EMPLEADO NOMBRE
IN IC
APELLIDO
NSS
FECHAN
DIRECCION
SE XO
SALA RIO
NSS SUPER
ND
José
B
Silva
123456789
09-ENE-55
M
30000
333445555 333445555
5
Federico
T
Vizcarr
333445555
08-DIC-45
M
40000
888665555 888665555
5
Ramón
K
Nieto
666884444
15-SEP-52
M
38000
333445555 333445555
5
Josefa
A
Esparza
453453453
31-JUL-62
Fresnos 731, Higueras, MX Valle 638, Higueras, MX Espiga 875, Heras, MX Rosas 5631, Higueras, MX
F
25000
333445555
5
4. Seleccione los salarios de los empleados SELECT SALARIO FROM EMPLEADO; Respuesta de acuerdo a la base de datos COMPAÑÍA Salario
30000 40000 25000 43000 38000 25000 25000 55000
SQL no elimina lasusar tuplas repetidas en el resultado de una consulta. Para eliminarlas se debe la opción DISTINCT. DISTINCT . SELECT DISTINCT SALARIO FROM EMPLEADO; Respuesta de acuerdo a la base de datos COMPAÑIA Salario
30000 40000 25000 43000 38000 55000
Diseño y explotación de bases de datos
Dra. Elzbieta Malinowski
Material de apoyo
89
Universidad de Costa Rica, Universidad Nacional
Si se requiere obtener los resultados ordenados, se puede incluir la cláusula ORDER BY: SELECT DISTINCT SALARIO FROM EMPLEADO; ORDER BY SALARIO BY SALARIO 5. Recuperar todos los empleados cuya dirección se encuentra en Higueras. SELECT NOMBRE, APELLIDO FROM EMPLEADO WHERE DIRECCION DIRECCION LIKE LIKE ‘%Higueras%’; ‘%Higueras%’; El operador LIKE permite comparar partes de las cadenas de caracteres. Las otras partes que no son de interés se puede representar por medio de: • % -reemplaza cualquier número de caracteres • _ - reemplaza un carácter • [a-i] - reemplaza un carácter en el rango de a hasta i.
6. Recuperar todos los empleados del departamento 5 cuyo salario está entre 30000 y 40000. SELECT * FROM EMPLEADO WHERE (SALARIO BETWEEN BETWEEN 30000 30000 AND AND 40000) 40000) AND AND ND ND = 5 5 La condición SALARIO BETWEEN 30000 AND 40000 es equivalente a (SALARIO >= 30000) AND (SALARIO < = 40000) Considerando las instancias, indique cuáles tuplas se recuperan en esta consulta. 7. Presente todas las combinaciones entra las tablas de empleado y departamento desplegando los números de cédula de los empleados y los nombres de los departamentos SELECT E.NSS, D.NOMBRED FROM EMPLEADO E, DEPARTAMENTO D;
Diseño y explotación de bases de datos
Dra. Elzbieta Malinowski
Material de apoyo
90
Universidad de Costa Rica, Universidad Nacional
Note el uso de alias (E para Empleado y D para Departamento) que facilita la distinción a cuales tablas pertenecen los atributos. En el caso que las tablas tienen atributos con el mismo nombre, el uso de los alias es obligatorio. Respuesta de acuerdo a la base de datos COMPAÑIA NSS
NOMBRED
123456789 333445555 999887777 987654321 666884444 453453453 987987987 888665555 123456789 333445555 999887777 987654321 666884444 453453453 987987987 888665555 123456789 333445555 999887777 987654321 666884444 453453453 987987987 888665555
Investigación Investigación Investigación Investigación Investigación Investigación Investigación Investigación Administración Administración Administración Administración Administración Administración Administración Administración Dirección Dirección Dirección Dirección Dirección Dirección Dirección Dirección
Se puede notar que se obtuvo todas las combinaciones posibles entre las tuplas de las dos tablas (producto cartesiano), pero se perdió la información en cual departamento trabaja cada empleado. Para obtener la respuesta correcta la cláusula WHERE debe tener la condición de igualdad entre la llave primaria de la tabla padre y su correspondiente llave foránea en la tabla hija. Esta operación tiene nombre de JOIN y es la más importante operación en bases de datos relacionales. SELECT D.NOMBRED FROM E.NSS, EMPLEADO E, DEPARTAMENTO D WHERE E.ND = D.NUMEROD; 8. Recupere los nombres y direcciones de todos los empleados que trabajan para el departamento “Investigación” Analice primero que tablas se necesita para responder a esta consulta. Después especifica las condiciones requeridas por el usuario (departamento "Investigación") y al final, si es necesario usar más que una tabla, aplicar la operación join sobre los atributos correspondientes. SELECT E.NOMBRE, E.APELLIDO, E.DIRECCION FROM EMPLEADO E, DEPARTAMENTO D WHERE D.NOMBRED= ’Investigación’ AND D.NUMEROD=E.ND;
Diseño y explotación de bases de datos
Dra. Elzbieta Malinowski
Material de apoyo
91
Universidad de Costa Rica, Universidad Nacional
Respuesta de acuerdo a la base de datos COMPAÑIA NOMBRE José Federico Ramón Josefa
APELLIDO Silva Vizcarr Nieto Esparza
DIRECCION Fresnos 731, Higueras, MX Valle 638, Higueras, MX Espiga 875, Heras, MX Rosas 5631, Higueras, MX
Nota que la cláusula WHERE contiene condiciones de join y adicionalmente cualquier otra condición necesaria para la consulta. 9. Mostrar los salarios aumentados un 10% de todos los empleados que trabajan en el proyecto Producto X Antes de verificar como se escribe esta consulta, revise el esquema relacional de la base de datos COMPAÑÍA y observe que es necesario usar la información de las tablas de Empleado y Proyecto. Para unir estas tablas por medio de las operaciones join se podría usar dos opciones si solo se considera la existencia de llaves foráneas necesarias para la operación join de tablas correspondientes: a. Empleado, Departamento, Proyecto b. Empleado, Trabaja_en, Proyecto ¿Cuál de estas opciones es correcta y por qué? SELECT FROM WHERE AND AND
E.NOMBRE, E.APELLIDO, 1.1*SALARIO AS NUEV_SUELDO EMPLEADO E, TRABAJA_EN T, PROYECTO P E.NSS = T.NSSE AND AND T.NUMP T.NUMP = P.NUMEROP P.NOMBREP = ‘PRODUCTO X’ X’
Se puede aplicar los operadores aritméticos estándar (+, -, *, /) a valores o atributos con dominios numéricos. 10.Para 10. Para cada proyecto localizado en “Santiago” especifique el número de proyecto, el número de departamento que lo controla, el nombre, la dirección y fecha de nacimiento del gerente de ese departamento. SELECT FROM WHERE AND AND
P.NUMEROP, P.NUMD, E.APELLIDO, E.DIRECCION, E.FECHAN PROYECTO P, DEPARTAMENTO D, EMPLEADO E P.NUMD=D.NUMEROD P.NUMD=D.NUMEROD D.NSSGTE=E.NSS P.LUGARP = ‘Santiago’
No existe límite de tablas para hacer las operaciones de join. Sin embargo, más tablas para unirlos, mayor tiempo de ejecución de la consulta
Diseño y explotación de bases de datos
Dra. Elzbieta Malinowski
Material de apoyo
92
Universidad de Costa Rica, Universidad Nacional
Para cada empleado especifique su nombre y el del inmediato supervisor. 11.Para 11. Para responder a esta consulta la misma tabla se considera jugando dos roles: una vez para obtener la información de los empleados y la segunda vez para obtener la información de los supervisores. Por esta razón, esta tabla aparece dos veces en la cláusula where con diferentes alias (E de empleados y S de supervisores) SELECT E.NOMBRE, E.APELLIDO, S.NOMBRE, S.APELLIDO FROM EMPLEADO E, EMPLEADO S WHERE E.NSSSUPER = S.NSS En general, alias son necesarios cuando: • Se accede dos o más veces veces la misma tabla tabla jugando diferentes papeles • Cuando se accede atributos con el mismo nombre pertenecientes a diferentes tablas • En consultas correlacionadas (vemos más adelante) • En cualquier situación de ambigüedad con respecto a cual tabla pertenecen los atributos. 12.Preparar 12. Preparar una lista con todos los nombres de los proyectos en los que participa el empleado ‘Silva’ como trabajador SELECT FROM WHERE AND AND AND
P.NOMBREP TRABAJA_EN T, EMPLEADO E, PROYECTO P E.APELLIDO = ‘Silva’ T.NSSE = E.NSS T.NUMP = P.NUMEROP
La misma consulta se puede escribir de otra forma usando los SELECT anidados,, o sea, un SELECT donde la condición WHERE contiene otro anidados SELECT. Además, se usa el operador IN IN que compara un valor v con un conjunto de valores. valores y devuelve verdadero si el valor v está incluido en el conjunto de SELECT P.NOMBREP FROM PROYECTO P P.NUMEROP WHERE P.NUMEROP IN (SELECT T.NUMP FROM TRABAJA_EN T, EMPLEADO E T.NSSE=E.NSS AND E.APELLIDO= ´Silva´) ´Silva´) WHERE T.NSSE=E.NSS Esta consulta obtiene valores de números de proyectos donde trabaja Silva (los valores de1,2) en la ejecución de SELECT interno, transformando posteriormente la consulta en algo como:
Diseño y explotación de bases de datos
Dra. Elzbieta Malinowski
Material de apoyo
93
Universidad de Costa Rica, Universidad Nacional
SELECT P.NOMBREP FROM PROYECTO P WHERE P.NUMEROP P.NUMEROP IN IN (1,2 (1,2)) El SELECT externo recorre la tabla de PROYECTO y verifica número por número si está dentro de conjunto de valores 1 o 2. Si la condición es verdadera devuelve el nombre, en este caso ProductoX y ProductoY 13.Preparar 13. Preparar una lista con todos los nombres de los proyectos en los que participa el empleado ‘Silva’, sea como trabajador o como gerente del departamento que controla ese proyecto. Antes de considerar la consulta presente a continuación analice cuáles tablas necesitas usar para obtener los datos solicitados. SELECT P.NOMBREP FROM TRABAJA_EN T, EMPLEADO E, PROYECTO P WHERE E.APELLIDO = ‘Silva’ AND AND T.NSSE = E.NSS AND T.NUMP = P.NUMEROP P.NUMEROP UNION (SELECT P.NOMBREP FROM PROYECTO P, DEPARTAMENTO D, EMPLEADO E D.NUMEROD WHERE P.NUMD = D.NUMEROD AND D.NSSGTE = E.NSS AND AND E.APELLIDO = ´Silva`) La consulta anterior utiliza operación de conjunto por medio de UNION UNION.. Otras operaciones de conjuntos son INTERSECT INTERSECT (la intersección) y EXCEPT EXCEPT (la diferencia) 14.Recupere 14. Recupere los nombres de cada empleado que tiene una persona dependiente de él con el mismo nombre y sexo. SELECT FROM WHERE
E.NOMBRE, E. APELLIDO EMPLEADO E E.NSS IN (SELECT D.NSSE E.NSS FROM DEPENDIENTE D WHERE D.NSSE = E.NSS .NSS AND E.NOMBRE = D.NOMBRE_DEPENDIENTE D.NOMBRE_DEPENDIENTE AND D.SEXO = E.SEXO )
Este tipo de consultas se llama consultas correlacionadas correlacionadas debido que una condición de la cláusula WHERE se refiere a algún atributo de unaatabla (relación) declarada en la consulta exterior. En el ejemplo anterior, la
Diseño y explotación de bases de datos
Dra. Elzbieta Malinowski
Material de apoyo
94
Universidad de Costa Rica, Universidad Nacional
condición WHERE del SELECT interno se refiere al atributo NSS de la relación EMPLEADO declarada en el SELECT externo. En este ejemplo, se recorre la tabla de EMPLEADO y para cada empleado se verifica en la tabla de DEPENDENTE si la condición de WHERE se cumple. En caso verdadera, se despliega el nombre de este empleado. En caso falso, se procede con el siguiente empleado. Esta misma consulta puede escribirse usando sólo operaciones de concatenación (join): SELECT FROM WHERE AND
E.NOMBRE, E. APELLIDO EMPLEADO E, DEPENDIENTE D E.NSS = D.NSSE AND D.NSSE AND E.SEXO = D.SEXO D.SEXO E.NOMBRE = D. NOMBRE_DEPENDIENTE;
También se puede usar el operador EXISTS EXISTS,, que permite comprobar si el resultado de una consulta anidada correlacionada es vacío (no contiene tuplas) o no. El resultado de EXISTS es un valor booleano: TRUE si hay por lo menos una tupla en el resultado de la consulta y FALSE en el caso contrario. SELECT FROM WHERE
E.NOMBRE, E.APELLIDO EMPLEADO E EXISTS (SELECT * FROM DEPENDIENTE D WHERE E.NSS = D.NSSE AND AND D.SEXO = E.SEXO AND AND E.NOMBRE = D.NOMBRE_DEPENDIENTE); D.NOMBRE_DEPENDIENTE );
15. Recupere los nombres de los empleados que no tienen dependientes. Esta consulta requiere el uso de NOT EXIST. EXIST. E.NOMBRE, E.APELLIDO SELECT FROM EMPLEADO E WHERE NOT EXISTS (SELECT * DEPENDIENTE D FROM WHERE E.NSS = D.NSSE); D.NSSE);
Diseño y explotación de bases de datos
Dra. Elzbieta Malinowski
Material de apoyo
95
Universidad de Costa Rica, Universidad Nacional
16.Recupere 16. Recupere el nombre de los gerentes que tienen al menos un dependiente. SELECT FROM WHERE
E.NOMBREP, E.APELLIDO EMPLEADO E EXISTS (SELECT * FROM DEPENDIENTE D E.NSS = D.NSSE) D.NSSE) WHERE AND EXISTS (SELECT * DEPARTAMENTO DE FROM WHERE E.NSS = DE.NSSGTE) DE.NSSGTE)
Como el operador EXISTS devuelve el resultado booleano se puede combinar con los operadores AND y OR. 17.Recupere 17. Recupere los nombres de los empleados que no tienen supervisor SELECT FROM WHERE
NOMBRE, APELLIDO EMPLEADO NSSSUPER IS NULL NSSSUPER NULL
SQL permite consultas que comprueban si el valor de un atributo es NULL por medio de los operaciones IS NULL o NULL o IS NOT NULL. NULL. Si esta comparación se hace dentro de una condición compuesta, se debe conocer las reglas para AND, OR y NOT con los tres valores TRUE, FALSE y UNKNOWN (NULL), como se presenta a continuación: AND TRUE FALSE
TRUE TRUE FALSE
FALSE FALSE FALSE
UNKNOWN UNKNOWN FALSE
UNKNOWN OR TRUE FALSE UNKNOWN
UNKNOWN TRUE TRUE TRUE TRUE
FALSE FALSE TRUE FALSE UNKNOWN
UNKNOWN UNKNOWN TRUE UNKNOWN UNKNOWN
NOT TRUE FALSE UNKNOWN
TRUE FALSE TRUE UNKNOWN
Diseño y explotación de bases de datos
Dra. Elzbieta Malinowski
Material de apoyo
96
Universidad de Costa Rica, Universidad Nacional
DIFERENTES FORMAS DE JOIN El concepto de tabla concatenada (relación concatenada) se introdujo en SQL para poder especificar la operación join la cláusula FROM y otras join en en la condiciones en el cláusula WHERE. 18.Recupere 18. Recupere los nombres y direcciones de todos los empleados que trabajan para el departamento “Investigación”. Es la misma consulta que presentada en el punto 8, escrita ahora usando tablas concatenadas: SELECT E.NOMBRE, E.APELLIDO, E.DIRECCION FROM EMPLEADO E JOIN JOIN DEPARTAMENTO DEPARTAMENTO D ON D.NUMEROD=E.ND ON D.NUMEROD=E.ND WHERE D.NOMBRED = ’Investigación’ En lugar de JOIN se puede especificar INNER JOIN. Si los nombres de los atributos de join son iguales, se puede especificar NATURAL JOIN sin JOIN sin incluir la condición ON. 19.Para 19. Para cada proyecto localizado en “Santiago” especifique el número de proyecto, el número de departamento que lo controla, el nombre, la dirección y fecha de nacimiento del gerente de ese departamento. Es la misma consulta que presentada en el punto 8, escrita ahora usando tablas concatenadas (más que dos). SELECT P.NUMEROP, P.NUMD, E.APELLIDO, E.DIRECCION, E.FECHAN FROM PROYECTO P JOIN DEPARTAMENTO JOIN DEPARTAMENTO D ON P.NUMD=D.NUMEROD JOIN EMPLEADO E ON D.NSSGTE=E.NSS D.NSSGTE=E.NSS WHERE P.LUGARP = ‘Santiago’
FUNCIONES AGREGADAS Y AGRUPACIONES Encuentre la suma y el promedio de los salarios de los empleados, así como 20.Encuentre 20. su valor máximo y mínimo. SELECT FROM
SUM (SALARIO), SUM (SALARIO), MAX(SALARIO), MAX(SALARIO), MIN MIN(SALARIO), (SALARIO), AVG(SALARIO) AVG(SALARIO) EMPLEADO;
SQL permite usar las funciones de agrupación de valores: SUM SUM,, MAX MAX,, MIN MIN,, AVG y AVG y COUNT COUNT.. La última devuelve el número de tuplas o valores específicos en una consulta. Estas funciones se pueden usar en las cláusulas SELECT y HAVING (la veremos más tarde).
Diseño y explotación de bases de datos
Dra. Elzbieta Malinowski
Material de apoyo
97
Universidad de Costa Rica, Universidad Nacional
Recupere el número total de empleados y el número de empleados que 21.Recupere 21. trabajan en el departamento de “Investigación”. SELECT FROM
COUNT (*) COUNT (*) EMPLEADO;
SELECT FROM WHERE WHERE
COUNT (*) EMPLEADO E, DEPARTAMENTO D E.ND=D.NUMEROD AND AND D.NOMBRED D.NOMBRED = ‘Investigación’;
Seleccione el número de salarios diferentes de la relación empleado. 22.Seleccione 22. SELECT FROM
COUNT (DISTINCT SALARIO SALARIO)) EMPLEADO;
23.Recupere 23. Recupere los nombres de los empleados que tienen dos o más dependientes. SELECT FROM WHERE WHERE
E.NOMBRE, E.APELLIDO EMPLEADO E (*) (SELECT COUNT (SELECT COUNT(*) FROM FROM DEPENDIENTE D WHERE E.NSS = D.NSSE ) ≥ 2; WHERE
Para cada departamento recupere el número de departamento, el número de 24.Para 24. empleados y el salario promedio. ND, COUNT ND, (SALARIO) SELECT COUNT (*), AVG AVG(SALARIO) FROM EMPLEADO GROUP BY BY ND; La cláusula GROUP BY permite BY crear especificadas subgrupos de en tuplas para las SELECT. cuales se aplican las funciones de permite agregación la cláusula Muchos sistemas obligan poner en la cláusula SELECT el atributo de agrupamiento usado en la cláusula GROUP BY. Si existen valores nulos para los atributos de agrupamiento, se crea un grupo separado para este valor. 25. Para cada proyecto recupere el número del proyecto, el nombre del proyecto y el número de empleados que trabajan en el proyecto. SELECT FROM WHERE GROUP BY
P.NUMEROP, P.NOMBREP, COUNT (*) PROYECTO P, TRABAJA_EN T P.NUMEROP = T.NUMP P.NUMEROP, P.NOMBREP
La cláusula GROUP BY puede incluir más de un atributo de agrupamiento.
Diseño y explotación de bases de datos
Dra. Elzbieta Malinowski
Material de apoyo
98
Universidad de Costa Rica, Universidad Nacional
Para cada proyecto en el que trabajan más de dos empleados recupere el 26.Para 26. número del proyecto, el nombre del proyecto y el número de empleados que trabajan en él. SELECT FROM WHERE GROUP BY HAVING HAVING
P.NUMEROP, P.NOMBREP, COUNT (*) PROYECTO P, TRABAJA_EN T P.NUMEROP = T.NUMP P.NUMEROP, P.NOMBREP COUNT(*) > 2; COUNT(*)
La cláusula HAVING se usa para especificar las condiciones de grupos (creados por medio de GROUP BY), o sea, primero agrupa por cada proyecto y después verifica si hay más que dos empleados en este proyecto. En caso verdadero, despliega la información, en el caso contrario, verifica otro grupo creado. Note que la cláusula HAVING es la condición para el grupo en contraste a WHERE que se aplica a tuplas individuales. La cláusula HAVING no puede existir sin su correspondiente cláusula GROUP BY.
ORDENAMIENTO 27.Recupere 27. Recupere los nombres de los empleados y los proyectos en los cuales trabajan, ordenados por departamento y dentro de cada departamento ordenados alfabéticamente por apellido y nombre D.NOMBRED, E.APELLIDO, E.NOMBRE, P.NOMBREP D.NOMBRED, DEPARTAMETO D, EMPLEADO E, E, PROYECTO P, TRABAJA_EN T D.NUMEROD = E.ND AND E.NSS=T.NSSE AND WHERE AND E.NSS=T.NSSE AND T.NUMP=P.NUMEROP ORDER BY BY D.NOMBRED, E.APELLIDO, E.NOMBRE SELECT FROM
El orden de las tuplas especificadas en la cláusula ORDER BY se presenta en forma ascendente, por defecto. Si se necesita cambiar este comportamiento se puede incluir la palabra DESC DESC.. Una cláusula ORDER BY puede combinar ordenamiento ascendente y descendente, por ejemplo: ORDER BY NOMBRED DESC DESC,, APELLIDO ASC ASC,, NOMBRE ASC
Diseño y explotación de bases de datos
Dra. Elzbieta Malinowski
Material de apoyo
99
Universidad de Costa Rica, Universidad Nacional
PARTE VI: LENGUAJE COMERCIAL – SQL (cont.) Data Definition Language (DDL, Lenguaje de Definición Datos) de SQL La sentencia de creación de base de datos datos incluye su nombre y diferentes aspectos de almacenamiento quededependen DBMSdeparticular. La versión más simple es crear físico la base datos pordelmedio una de las sentencias: CREATE DATABASE nombre CREATE DATABASE DATABASE nombre AUTHORIZATION nombre y aceptar la configuración física dada por defecto. Esto permite tener la base de datos al nivel conceptual y archivos físicos que guardan los datos tanto para las consultas de los usuarios como para recuperar el sistema en caso de falla. Al crear la base de datos también se crean tablas (o esquemas de) en el catálogo. Las tablas del catálogo catálogo contienen la información sobre todos los elementos que forman la base de datos, eso es, tablas, columnas, índices, vistas, usuarios, privilegios, entre otros. El esquema (o BD) se considera como un contenedor donde las tablas y objetos esquema (o relacionados pueden estar juntos bajo un nombre asignado por el administrador de la BD. La relación entre el esquema y las tablas que contiene puede ser vista como la relación entre los directorios y los archivos que contiene en algún sistema operativo. Los esquemas son creados usando la sentencia CREATE SCHEMA nombre AUTHORIZATION nombre seguido por las definiciones de las tablas, vistas, dominios y otros objetos. No todos los Anexo 1). DBMSs incluyen la opción de crear esquemas (ejemplos de esquemas Cuando el usuario de la BD no es administrador, normalmente trabaja con la BD previamente creada. Cada vez que accede a la BD desde la máquina de cliente, necesita una conexión, que se puede hacer por medio de uno de los siguientes comandos: use, start, connect, init. Tanto la BD como el esquema pueden ser borrados con el comando DROP y modificados con el comando ALTER.
Diseño y explotación de bases de datos 100
Dra. Elzbieta Malinowski
Material de apoyo
Universidad de Costa Rica, Universidad Nacional
CREAR LAS TABLAS La creación de las tablas incluye la especificación de su nombre, el nombre y tipo de sus atributos, y las restricciones. Requerimientos para crear las tablas de la B BD: D: • La base de datos debe existir. • La base de datos para guardar las tablas debe estar activa (el administrador inició todos los procesos requeridos para su funcionamiento). • Se debe tener la autorización debida para hacerlo. La sintaxis simplificada es: CREATE TABLE NombreTabla TABLE NombreTabla (atributo1 tipo, atributo2 tipo, … atributon tipo) Los atributos se especifican de primero y a cada uno se le da un nombre, tipo de datos para especificar su dominio de valores, y si es del caso, algunas restricciones. Luego se incluyen las restricciones a nivel de la tabla (por ejemplo, llave primaria), las de integridad de entidades y las de integridad referencial. Los atributos pueden ser de diferentes tipos atributos pueden tipos,, por ejemplo: • Numérico Números exactos: INTEGER, SMALLINTEGER, NUMERIC(n,m), DECIMAL(n,m) Números aproximados: FLOAT, REAL, DOUBLE PRECISION o
o
Cadena caracteres Dedelongitud fija: CHAR(n) De longitud variable: VARCHAR (n) o C CHAR HAR VARYING(n) VARYING(n) Largos: CLOB – character large object • Cadena de bits De longitud fija: BIT(n) De longitud variable: VARBIT(n) o VARYING VARYING BIT (n) Largos: BLOB – binary large objects • Booleano TRUE, FALSE, UNKOWN • Fecha y hora DATE de 10 posiciones con el formato AAAA-MM-DD AAAA-MM-DD y TIME de 8 posiciones con el formato HH:MM:SS •
o
o
o
o
o
o
o
o
Diseño y explotación de bases de datos 101
Dra. Elzbieta Malinowski
Material de apoyo
Universidad de Costa Rica, Universidad Nacional
•
Marca de tiempo TIMESTAMP incluye los campos de DATE y TIME y adicionalmente 5 posiciones para las fracciones decimales de segundos. o
Definición de las tablas de la base de datos COMPAÑÍA: CREATE TABLE EMPLEADO TABLE EMPLEADO ( NOMBRE VARCHAR(15) NOT NULL, NULL, INIC CHAR, APELLIDO VARCHAR(15) NOT NULL NSS NSS_type PRIMARY KEY, KEY, FECHAN DATE, DIRECCION VARCHAR(30), SEXO CHAR, SALARIO DECIMAL(10,2), NSSSUPER CHAR(9) EMPLEADO(NSS) FOREIGN KEY KEY REFERENCES REFERENCES EMPLEADO(NSS) ND INT NOT NULL, NULL, );
FOREIGN KEY KEY REFERENCES REFERENCES DEPARTAMENTO(NUMEROD) DEPARTAMENTO(NUMEROD)
CREATE TABLE DEPARTAMENTO ( NOMBRED VARCHAR(15) NOT NULL, NULL, NUMEROD INT NOT NULL CHECK (NUMEROD > 0 AND AND NUMEROD NUMEROD < 21), NSSGTE CHAR(9) NOT NULL, NULL, FECHAINICGTE DATE, PRIMARY KEY (NUMEROD), UNIQUE ( (NOMBRE UNIQUE NOMBRED), D), FOREIGN KEY (NSSGTE) KEY (NSSGTE) REFERENCES REFERENCES EMPLEADO(NSS) EMPLEADO(NSS) ); CREATE TABLE LUGARES_DEPTOS ( NUMEROD INT NOT NULL, NULL, LUGARD VARCHAR(15) NOT NULL, NULL, PRIMARY KEY (NUMEROD, LUGARD), DEPARTAMENTO(NUMEROD) FOREIGN KEY (NUMEROD) KEY (NUMEROD) REFERENCES REFERENCES DEPARTAMENTO(NUMEROD) ); CREATE TABLE PROYECTO ( NOMBREP VARCHAR(15) NOT NULL, NULL, NUMEROP INT NOT NULL, NULL, LUGARP VARCHAR(15), NUMD INT NOT NULL, NULL, PRIMARY KEY (NUMEROP), UNIQUE (NOMBREPR) UNIQUE (NOMBREPR) FOREIGN KEY (NUMD) KEY (NUMD) REFERENCES REFERENCES DEPARTAMENTO(NUMEROD) DEPARTAMENTO(NUMEROD) );
Diseño y explotación de bases de datos 102
Dra. Elzbieta Malinowski
Material de apoyo
Universidad de Costa Rica, Universidad Nacional
CREATE TABLE TRABAJA_EN ( NSSE CHAR(9) NOT NULL, NULL, NUMP INT NOT NULL, NULL, HORAS DECIMAL(3,1) NOT NULL, NULL, PRIMARY KEY (NSSE, NUMP), FOREIGN KEY (NSSE) KEY (NSSE) REFERENCES REFERENCES EMPLEADO(NSS), EMPLEADO(NSS), );FOREIGN KEY (NUMP) KEY (NUMP) REFERENCES REFERENCES PROYECTO PROYECTO (NUMEROP) CREATE TABLE DEPENDIENTE ( NSSE CHAR(9) NOT NULL, NULL, NOMBRE_DEPENDIENTE VARCHAR(15) NOT NULL, NULL, SEXO CHAR, FECHAN DATE, PARENTESCO VARCHAR(8), PRIMARY KEY (NSSE, NOMBRE_DEPENDIENTE), FOREIGN KEY (NSSE) KEY (NSSE) REFERENCES REFERENCES EMPLEADO(NSS) EMPLEADO(NSS) );
Restricciones de tabla En las tablas anteriores vimos cómo se incluyen diferentes tipos de restricciones, tales como NOT NULL, CHECK, UNIQUE, PRIMARY KEY, y FOREIGN KEY. Estas restricciones se pueden especificar para cada atributo de la tabla (como en ejemplo anterior de la tabla EMPLEADO) o se pueden incluir al final de la tabla (como en ejemplo anterior de la tabla TRABAJA_EN). También es posible declararlas como “constraint ” y darles un nombre, como se muestra a continuación. CREATE TABLE TRABAJA_EN ( NSSE CHAR(9) NUMP INT
NOT NULL, NULL, NOT NULL, NULL,
HORAS PKTrabajaEnDECIMAL(3,1) NOTNUMP), NULL, NULL, CONSTRAINT PRIMARY KEY (NSSE, CONSTRAINT FKaEmp FOREIGN KEY (NSSE) KEY (NSSE) REFERENCES REFERENCES EMPLEADO(NSS), EMPLEADO(NSS), CONSTRAINT FKaProy FOREIGN KEY (NUMP) KEY (NUMP) REFERENCES REFERENCES PROYECTO PROYECTO (NUMEROP) );
Además, la restricción de llave foránea puede especificar la acción requerida para las operaciones DELETE y UPDATE. Esto se refiere a la acción que se va a ejecutar sobre la tabla hijo (que tiene la llave foránea) cuando se realiza una operación DELETE o UPDATE sobre la tabla tabla padre (que tiene la la llave primaria que es referenciada por la la llave externa de llaa tabla hijo). SQL:99 define cuatro posibles acciones: SET NULL, SET DEFAULT, CASCADE, NO ACTION (REJECT).
Diseño y explotación de bases de datos 103
Dra. Elzbieta Malinowski
Material de apoyo
Universidad de Costa Rica, Universidad Nacional
CREATE TABLE EMPLEADO ( ..., ND INT NOT NULL DEFAULT 1, DEFAULT 1, CONSTRAINT CLP_EMP PRIMARY KEY (NSS), CONSTRAINT CLE_SUPEREMP FOREIGN KEY (NSSSUPER) (NSSSUPER) REFERENCES REFERENCES EMPLEADO (NSS) ON DELETE NO ACTION ON UPDATE CASCADE, CONSTRAINT CLE_DEPTOEMP FOREIGN KEY (ND) (ND) REFERENCES REFERENCES DEPARTAMENTO DEPARTAMENTO (NUMEROD) ON DELETE SET DEFAULT DEFAULT ON UPDATE CASCADE ) CREATE TABLE DEPARTAMENTO (..., NSSGTE CHAR(9) NOT NULL DEFAULT DEFAULT “888665555” ..., CONSTRAINT CLP_DEPTO PRIMARY KEY (NUMEROD), (NOMBRED), CONSTRAINT CLS_DEPTO UNIQUE UNIQUE (NOMBRED), CONSTRAINT CLE_GTEDEPTO CONSTRAINT CLE_GTEDEPTO FOREIGN KEY (NSSGTE) (NSSGTE) REFERENCES REFERENCES EMPLEADO(NSS) ON DELETE SET DELETE SET DEFAULT ON UPDATE CASCADE ) CREATE TABLE LUGARES_DEPTOS TABLE LUGARES_DEPTOS (..., PRIMARY KEY (NUMEROD, KEY (NUMEROD, LUGARD), (NUMEROD) REFERENCES FOREIGN KEY (NUMEROD) REFERENCES DEPARTAMENTO(NUMEROD) DELETE CASCADE DELETE CASCADE ON UPDATE CASCADE); UPDATE CASCADE); CREATE TABLE TRABAJA_EN (…, PRIMARY KEY (NSSE, NUMP), FOREIGN KEY (NSSE) KEY (NSSE) REFERENCES REFERENCES EMPLEADO(NSS) EMPLEADO(NSS) ON DELETE NO DELETE NO ACTION ON UPDATE CASCADE), UPDATE CASCADE), PROYECTO (NUMEROP) FOREIGN KEY (NUMP) KEY (NUMP) REFERENCES REFERENCES PROYECTO ON DELETE NO DELETE NO ACTION ON UPDATE CASCADE); UPDATE CASCADE); );
Diseño y explotación de bases de datos 104
Dra. Elzbieta Malinowski
Material de apoyo
Universidad de Costa Rica, Universidad Nacional
BORRAR LA TABLA DROP TABLE TABLE nombreTabla CASCADE RESTRICT CASCADE: RESTRICT:
Borra la tabla y todas las restricciones y vistas que referencian esta tabla, automáticamente. Solo borrará la tabla si no es referenciada en ninguna restricción (como la llave externa).
Ejemplo DROP TABLE dependientes RESTRICT MODIFICAR LA TABLA Las posibles acciones de alteración incluyen adición o eliminación de una columna, modificación de la definición de una columna y la adición o eliminación de restricciones de la tabla. ALTER TABLE nombreTabla TABLE nombreTabla ADD ADD atributo atributo DROP atributo CASCADE RESTRICT Ejemplos 1. ALTER TABLE empleado ADD job varchar(12) Aparece un atributo nuevo “job” con nulos en él para todas las tuplas. . 2. ALTER TABLE empleado DROP direccion CASCADE Todas las restricciones o vistas que hacían la referencia a la columna dirección se borran. Con la opción RESTRICT sólo se borra la columna si no hay restricciones o vistas que la referencian.
Diseño y explotación de bases de datos 105
Dra. Elzbieta Malinowski
Material de apoyo
Universidad de Costa Rica, Universidad Nacional
OPERACIONES DE ACTUALIZACIÓN INSERT 1. Inserte todos los datos de un empleado específico INSERT INTO VALUES
EMPLEADO (‘Ricardo’, ‘C’, ‘Martinez’, ‘653298653’, ‘30-DIC-52, ‘Olmo 98, Cedros, MX’, ‘M’, 37000, ‘987654321’, 4);
Si se insertan valores para todos los atributos, la especificación de los atributos puede omitirse. 2. Inserte los datos específicos de un empleado INSERT INTO VALUES
EMPLEADO (NOMBRE, APELLIDO, NSS) (‘Ricardo’, ‘Martinez’, ‘653298653’);
Cuando se insertan valores para sólo algunos atributos, los atributos deben especificarse. INSERT INTO VALUES
EMPLEADO (NOMBRE, APELLIDO, NSS, ND) (‘RicardO’, ‘Martinez’, ‘653298653’, 2);
La siguiente inserción no es aceptada (falta valor para NSS, declarado como campo NOT NULL): INSERT INTO EMPLEADO (NOMBRE, APELLIDO, ND) VALUES (‘Ricardo’, ‘Martinez’, 2); 3. Creación de una tabla nueva y carga con los valores de otra tabla: INFO_DEPTS (NOMBRE_DEPTO VARCHAR (15), CREATE TABLE VARCHAR(15), NUM_EMP INTEGER, SAL_TOT INTEGER); INTEGER ); INSERT INTO INFO_DEPTS (SELECT NOMBRED, COUNT COUNT(*), (*), SUM SUM(SALARIO) (SALARIO) FROM DEPARTAMENTO, EMPLEADO FROM WHERE NUMEROD = ND WHERE GROUP BY BY NOMBRED);
Diseño y explotación de bases de datos 106
Dra. Elzbieta Malinowski
Material de apoyo
Universidad de Costa Rica, Universidad Nacional
DELETE 1. DELETE FROM WHERE WHERE
EMPLEADO APELLIDO = ’Martinez’
2. DELETE FROM WHERE
EMPLEADO NSS = ‘123456789’;
3. DELETE FROM WHERE
EMPLEADO ND IN ND IN (SELECT FROM WHERE
4. DELETE FROM
EMPLEADO
NUMEROD DEPARTAMENTO NOMBRED = ‘Investigación’); ‘Investigación’);
UPDATE 1. Cambie el lugar y el número del departamento que controla proyecto Nº 10 UPDATE SET WHERE
PROYECTO LUGARP = ‘Belén’, NUMD = 5 NUMEROP = 10;
2. Asigne un aumento salarial de 10% a todos los empleados del departamento ‘Investigación’ UPDATE UPDATE SET WHERE
EMPLEADO SALARIO = SALARIO * 1.1 ND IN ND (SELECT NUMEROD DEPARTAMENTO FROM WHERE NOMBRED = ‘Investigación’); ‘Investigación’);
Diseño y explotación de bases de datos 107
Dra. Elzbieta Malinowski
Material de apoyo
Universidad de Costa Rica, Universidad Nacional
VISTAS Una vista es una tabla que se deriva de otras tablas. Estas otras tablas pueden ser tablas o vistas definidas previamente. Una vista puede representar la tabla virtual,, eso es no existe en formato físico o puede ser representada por medios virtual de tablas físicas cuando se crean vistas materializadas. materializadas. CREAR VISTA: 1.
CREATE VIEW AS SELECT FROM
TRABAJADORES NOMBRE, APELLIDO EMPLEADO
2. CREATE VIEW AS SELECT FROM WHERE
TRABAJA_EN_PROYE NOMBRE, APELLIDO, NOMBREP, HORAS EMPLEADO, PROYECTO, TRABAJA_EN NSS = NSSE AND NSSE AND NUMP = NUMEROP; NUMEROP;
3. CREATE VIEW AS SELECT FROM WHERE GROUP BY BY
INFO_DEPTO(NOMBRE_DEPTO, NUM_EMP, SAL_TOT) NOMBRED, COUNT (*), SUM(SALARIO) COUNT(*), DEPARTAMENTO, EMPLEADO NUMEROD = ND DNOMBRE;
CONSULTAR VISTA: SELECT FROM WHERE
NOMBREP, APELLIDO TRABAJA_EN_PROYE NOMBREP = ‘ProyectoX’
Cuando se consulta la vista virtual se ejecuta la sentencia SELECT que sirvió de base para crearla y se acceden las tablas físicas que aparecen en la cláusula FROM. De esta forma una vista virtual siempre tiene los datos actualizados de acuerdo al contenido de las tablas bases ACTUALIZAR VISTA: No se puede garantizar que las vistas vir virtuales tuales se pueden actualizar. En general se puede actualizar una vista virtual cuando: 1. 2.
Invoca sólo una posible actualización de la relación base. Si los atributos de la vista contienen la llave primaria de la relación o algún otro atributo definido como no nulo (esto hace mapeo uno a uno de la vista a relación base)
Diseño y explotación de bases de datos 108
Dra. Elzbieta Malinowski
Material de apoyo
Universidad de Costa Rica, Universidad Nacional
Las vistas virtuales definidas usando múltiples tablas (join), agrupando tuplas o usando las funciones normalmente no se pueden actualizar. Las vistas se crean para: • Facilitar las expresión de las consultas debido debido a que ttienen ienen sólo los atributos (de una o varias tablas) que se acceden con mucha frecuencia en aplicaciones. • Reforzar la seguridad debido a que el usuario sólo ve los atributos que se presentan en la vista, no todos los que están en las tablas. • Mejorar desempeño de consultas cuando se requiere agrupaciones y agregaciones de datos (solo para vistas materializadas). BORRAR VISTA: DROP VIEW VIEW
TRABAJA_EN_PROYE;
Diseño y explotación de bases de datos 109
Dra. Elzbieta Malinowski
Material de apoyo
Universidad de Costa Rica, Universidad Nacional
EJERCICIOS EN CLASES – PROCESO DE NORMALIZACIÓN Para los siguientes esquemas expresa las restricciones de integridad referencias con respectivas acciones justificando su respuesta
Diseño y explotación de bases de datos 110
Dra. Elzbieta Malinowski
Material de apoyo
Universidad de Costa Rica, Universidad Nacional
Diseño y explotación de bases de datos 111
Dra. Elzbieta Malinowski
Material de apoyo
Universidad de Costa Rica, Universidad Nacional
PARTE VII: ORGANIZACIÓN FÍSICA DE LOS ARCHIVOS El nivel lógico (conceptual) de base de datos es un nivel adecuado para los usuarios. Sin embargo, los sistemas de bases de datos también deben ser diseñados en el nivel físico para mejorar su desempeño.
MEDIOS FÍSICOS DE ALMACENAMIENTO Los medios físicos usados en sistemas informáticos se clasifican en tres categorías principales: • Almacenamiento primario: primario: incluye los medios de almacenamiento muy rápido donde la CPU puede operar. Ejemplos: caché y memoria principal. • Almacenamiento secundario: incluye los medios de almacenamiento que la CPU no puede procesar directamente (los datos deben copiarse en el almacenamiento principal) como se puede ver en la siguiente figura. Son los dispositivos más lentos, por ejemplo, los discos magnéticos. Almacenamiento secundario
Almacenamiento primario - memoria principal
Read/Write BD permanente
•
Manejador de búferes
Read/Write
Búferes de la BD volátil
Almacenamiento terciario: terciario: son el medio más lento, por ejemplo, discos ópticos y cintas magnéticas, generalmente usados para los datos más viejos, no requeridos para las consultas actuales.
Estos medios físicos se pueden organizar en la siguiente jerarquía de acuerdo a su velocidad de acceso:
Diseño y explotación de bases de datos 112
Dra. Elzbieta Malinowski
Material de apoyo
Universidad de Costa Rica, Universidad Nacional
Además de la velocidad de acceso, estos tres tipos de dispositivos se diferencian por el precio, donde el más rápido es más caro. Como las bases de datos en general guardan los datos que exceden las capacidades que ofrece el almacenamiento primario, se requiere la inclusión de estos dos tipos adicionales (o por lo menos un tipo de almacenamiento secundario). Los discos magnéticos soportan el acceso directo a una posición específica y son ampliamente usados en las aplicaciones de bases de datos. DBMS provee un acceso al disco sin que la aplicación o usuario sepan de donde se leen los datos: desde la memoria primaria o secundaria. La siguiente figura se representa un disco en la forma simplificada:
Los datos se guardan en el disco en las unidades llamados bloques (o páginas) que son la unidad básica de transferencia de datos. datos.
Los bloques se establecen durante el formateo del sistema operativo y pueden ser modificados para el uso de BD. Normalmente el bloque oscila en tamaño entre 512 y 8192 bytes. Estos bloques están colocados en los círculos llamados pistas (tracks ) en uno o más platos platos (platters). Las pistas pueden ser grabadas por un lado de plato o por los dos lados. El conjunto de todas pistas con el mismo diámetro se llama cilindro (cylinder ). ). Cada pista está dividida entre sectores, el tamaño de los cuáles es la característica de disco y no puede ser modificada. Para leer o escribir un bloque, es necesario mover el disco a la posición donde el encabezado del disco (disk head ) esté colocado encima del bloque encabezado
Diseño y explotación de bases de datos 113
Dra. Elzbieta Malinowski
Material de apoyo
Universidad de Costa Rica, Universidad Nacional
correspondiente. El tiempo para acceder el disco para leer (o escribir) un bloque depende de tres componentes: •
Tiempo de búsqueda (seek time ): ): Tiempo requerido para poner la cabeza de lectura/escritura en la pista adecuada.
•
Tiempo de rotación o latencia latencia (rotational delay ): ): Tiempo de rotación necesario para que el principio del bloque gire hasta posicionarse debajo de la cabeza de lectura/escritura. Más cerca del centro del disco, este tiempo disminuye.
•
Tiempo de transferencia del bloque bloque (block transfer time ): ): Tiempo necesario para transferir el bloque de la memoria secundaria a la memoria principal.
Debido a que todo el dato solicitado por la aplicación debe ser transferido desde el disco a la memoria principal, este tiempo debería ser minimizado. Para lograrlo, se debe considerar como los datos están guardados en el disco, en otras palabras, accedidos la organización de los registros. Si cerca dos registros son frecuentemente juntos,física deberían estar colocados en el disco. Otro aspecto a considerar es contar con los elementos necesarios para disminuir el tiempo de búsqueda de registro de interés, en otras palabras, contar con la existencia de los índices.
ORGANIZACIÓN DE ARCHIVOS Los archivos pueden ser organizados de diferente forma. Para el propósito de este curso, nos enfocamos a dos tipos: archivo secuencial y ordenado. 1. HEAP – – ARCHIVO SECUENCIAL Es el tipo de organización más sencillo, en el cual los registros se guardan en el archivo en el mismo orden en que se insertan. Cada nuevo registro se inserta al final del archivo. Características:: Características Insertar Operación muy eficiente. Se copia el último bloque del archivo en el buffer, se inserta el nuevo registro y se reescribe el bloque de nuevo al disco. La dirección del último bloque se guarda en el encabezado del archivo ( file header ). Buscar Operación muy costosa pues unapara búsqueda lineal archivo (scan ). ). En promedio se necesitan leer requiere b /2 bloques un archivo dedel b bloques. bloques.
Diseño y explotación de bases de datos 114
Dra. Elzbieta Malinowski
Material de apoyo
Universidad de Costa Rica, Universidad Nacional
Borrar Operación muy costosa. Primero se necesita encontrar el registro a borrar. Una vez encontrado, se pone una marca en el registro para indicar que fue borrado. Es necesario reorganizar el archivo periódicamente para reutilizar el espacio ocupado por los registros borrados. Ordenar Operación muy costosa para archivos grandes. En estos casos se aplican técnicas de ordenamiento externo, como por ejemplo merge externo. externo. Modificar Operación costosa debido a la necesidad de buscar el elemento para su modificación. 2. ARCHIVO ORDENADO Los registros se ordenan físicamente en el archivo usando como base uno de sus campos, llamado “campo de ordenamiento”. Características: Características: Insertar Operación muy costosa pues debe mantener el archivo ordenado, y en promedio se deben mover (leer y reescribir) b /2 bloques para un archivo de b bloques cada vez que se inserta un nuevo registro. Algunas soluciones posibles son: • Reservar espacios sin usar en cada bloque. • Crear un archivo temporal no no ordenado de desbordamiento (overflow ). ). Las búsquedas se hacen usando búsqueda binaria en el archivo “master” (ordenado) y búsqueda lineal en el archivo de desbordamiento. Periódicamente se necesita mezclar el archivo de overflow con con el master , durante una reorganización. Buscar • Buscar un registro basado en la llave llave de ordenamiento es muy eficiente eficiente (por ejemplo, usando búsqueda binaria solo se requieren leer log 2 b bloques para un archivo que contiene b bloques). bloques). • Buscar con las condiciones de , =, ≤, ≥, son también muy eficientes ya que el ordenamiento físico de los registros implica que todos los registros que satisfacen la condición están contiguos en el archivo. • Encontrar el siguiente registro registro en el orden no requiere normalmente normalmente accesar otros bloques (a menos que sea el último registro del bloque). • Buscar por un campo que no es el campo de ordenamiento se convierte en acceso secuencial. Borrar Requiere reorganizaciones periódicas.
Diseño y explotación de bases de datos 115
Dra. Elzbieta Malinowski
Material de apoyo
Universidad de Costa Rica, Universidad Nacional
Modificar Operación muy costosa por razones de reorganización. Este tipo de archivo se usa normalmente en el caso de ordenamiento físico por la llave primaria.
Í NDICES NDICES Y SUS TIPOS Independiente de la organización particular de los archivos, en las BDs se usa una estructura de datos adicional llamada índice índice.. El índice permite mejorar el tiempo de consulta sobre una tabla con respecto a alguna condición específica de búsqueda. Las estructuras de índice pueden variar, pero en general siempre requieren dos tipos de datos: el campo de indexación que sirve para el ordenamiento y las direcciones de los bloques de disco donde están los registros con valores Índice primario Representa un archivo ordenado que contiene dos campos: el campo de ordenamiento (o indexación) y una dirección a un bloque del disco. Este índice requiere que el archivo de datos esté físicamente ordenado ordenado con respecto al campo de indexación. Normalmente se usa este índice para la llave primaria de primaria de la relación. El índice primario es ralo (escaso escaso o sparse ) debido a que contiene valores para el primer registro de cada bloque pero no para todos los registros como se puede ver en la siguiente figura:
Diseño y explotación de bases de datos 116
Dra. Elzbieta Malinowski
Material de apoyo
Universidad de Costa Rica, Universidad Nacional
El archivo de índice requiere menos bloques para su almacenamiento que el archivo de datos por dos razones: 1. Existen menos entradas del índice que registros de datos. 2. Cada entrada del índice contiene solo dos campos en lugar de tener varios como lo tiene normalmente el archivo de datos. Por esta razón usando el índice para recuperar registros de acuerdo a la condición de búsqueda requiere leer menos bloques que hacer esta búsqueda sin la presencia del índice. Como consecuencia, la consulta se puede ejecutar en menos tiempo.
Diseño y explotación de bases de datos 117
Dra. Elzbieta Malinowski
Material de apoyo
Universidad de Costa Rica, Universidad Nacional
Índice agrupado (clustered ) Se usa cuando los registros están están físicamente físicamente ordenados por un campo no llave (que no tiene valores distintos para cada registro), llamado campo agrupado. El índice agrupado también es un archivo ordenado con dos campos: el campo de agrupado y un puntero a un bloque del disco. Este índice es ralo (escaso) ya que tiene una entrada para cada valor distinto del campo agrupado como se puede ver en la siguiente figura:
Un archivo de datos puede tener un índice primario o un índice agrupado pero NO ambos. NO ambos. ¿Por qué?
Diseño y explotación de bases de datos 118
Dra. Elzbieta Malinowski
Material de apoyo
Universidad de Costa Rica, Universidad Nacional
Índice secundario Este índice se usa para acceso ordenado a los registros de un archivo con respecto a un campo que no fue el que usó para ordenar físicamente el archivo. El campo de indexación puede ser un campo llave o no. Puede haber muchos índices secundarios (sobre distintos campos de indexación) para un mismo archivo. La estructura del índice secundario tiene una entrada por cada registro que se encuentra en el archivo de datos, por lo tanto este índice es denso:
Un índice secundario necesita más espacio de almacenamiento y tiempo de que ununíndice Sinesembargo, la en mejora en usar el tiempo de búsqueda usando índiceprimario. secundario mayor que caso de un índice
Diseño y explotación de bases de datos 119
Dra. Elzbieta Malinowski
Material de apoyo
Universidad de Costa Rica, Universidad Nacional
primario debido a que el archivo de datos no es ordenado y sin índice secundario se necesitan leer TODOS los bloques del archivo. ÍNDICES MULTINIVELES Los índices presentados anteriormente se llaman de un nivel ya que existe solo una tabla que los guarda. Para este tipo de índice la búsqueda de un registro requiere más accesos a bloques de índices que usando índice de multinivel como se muestra en la siguiente figura.
El árbol B+ es una estructura de datos actualmente más usada en los DBMS para almacenar el índice. Este índice aprovecha el tamaño de bloque para disminuir el número de niveles y de esta forma acceder con más rapidez a la dirección del registro donde se encuentra el dato buscado. Árbol B+ tiene dos tipos de elementos (nodos): • Interno (nodos ramas): ramas): guarda el valor del campo de indexación y la dirección del siguientes nivel
Diseño y explotación de bases de datos 120
Dra. Elzbieta Malinowski
Material de apoyo
Universidad de Costa Rica, Universidad Nacional
•
Hoja (nodos de datos): datos): guarda el campo de indexación y la dirección del bloque de datos en el disco donde se encuentra registro buscado.
Ejemplo:
Diseño y explotación de bases de datos 121
Dra. Elzbieta Malinowski
Material de apoyo
Universidad de Costa Rica, Universidad Nacional
PARTE VIII: INTRODUCCIÓN A LOS CONCEPTOS DE LA TRANSACCIÓN Procesamiento de las transacciones Transacción Transacción
Ejecución de una o varias operaciones que accedan o cambian el contenido de la base de datos dejándola en estado consistente. Por ejemplo, el retiro o depósito de dinero en un cajero automático, modificación de salario de los empleados, actualización de la geometría de una parcela, entre otros. Los límites de una transacción se establecen por medio de las sentencias de BEGIN_TRANSACTION y END_TRANSACTION. Las transacciones pueden formar parte de una aplicación o especificarse implícitamente (por DBMS) como por ejemplo durante las operaciones SQL Insert, Delete o Update. Aunque las transacciones pueden incluir varias operaciones sobre los datos, de nuestro interés son READ y WRITE, que permiten, respectivamente, leer los datos desde la BD y escribirlos. Ejemplos : Transferencia de fondos de la cuenta A a la cuenta B READ(A); A = A - N; WRITE(A); READ(B); B = B + N; WRITE(B);
Depósito a la cuenta A READ(A); A = A + M; WRITE(A);
El funcionamiento simplificado de las operaciones de READ y WRITE es el siguiente: read(X) 1. Encuentra la dirección de X en la base de datos. 2. Copia del disco a a memoria principal el bloque que contiene X.
write(X) 1. Encuentra la dirección del bloque que contiene X. 2. Si el bloque que que contiene X no se encuentra en la memoria principal, lo copia desde el disco a la memoria (o sea, ejecuta una especie de operación read internamente). 3. Modifica su valor. 4. Guarda el bloque modificado al disco (actualiza la BD en disco).
Diseño y explotación de bases de datos 122
Dra. Elzbieta Malinowski
Material de apoyo
Universidad de Costa Rica, Universidad Nacional
Estados de una transacción
Una transacción es una unidad atómica que se completa en su totalidad o no se lleva a cabo en absoluto. Por ejemplo, una transacción de transferencia de fondos de una cuenta a otra, debe ejecutarse en su totalidad para evitar que se haga retiro de una cuenta y no se deposita el dinero a la otra cuenta. Para fines de recuperación y para asegurar la consistencia de los datos, el sistema debe hacer seguimiento de los diferentes estados de la transacción: • • • • • •
begin_transaction: marca el inicio de la transacción. end_transaction: especifica que las operaciones de read y write se terminaron y marca el límite de la ejecución de la transacción. read(x):los datos x desde la la bd y lo pone en una variable x en la memori memoria. a. write(x): escribe el valor valor de la variable x de la memoria principal a la base de datos. commit_transaction: señala la ejecución exitosa exitosa de la transacción. rollback (abort): señala que la transacción se terminó sin éxito.
Podemos representar estos diferentes estados de la transacción por medio del siguiente grafo (ver la figura 2.1): 2 .1):
Ejecución concurrente de las transacciones
Las transacciones pueden ejecutarse en un ambiente de un solo usuario (monousuario) simple, por ejemplo, en una base de datos de su computadora personal. También, pueden tener acceso de múltiples usuarios, por ejemplo, cuando se trabaja en un ambiente cliente-servidor. Cuando se utiliza una DBMS en el ambiente de múltiples usuarios, la ejecución de las transacciones puede ser interpolada si solo se tiene un procesador (las transacciones A y B en la figura 2.2) o paralela si se tiene más procesadores (las transacciones C y D en la figura 2.2).
Diseño y explotación de bases de datos 123
Dra. Elzbieta Malinowski
Material de apoyo
Universidad de Costa Rica, Universidad Nacional
Figura 2.2. Concurrencia en ambiente multiusuario. La ejecución concurrente de las transacciones permite que varias de ellas accedan simultáneamente la base de datos. Esto incrementa el número total de transacciones en ejecución (throughpu t), t), permite utilizar en forma más eficiente el procesador y disminuye el tiempo de respuesta para las transacciones individuales. Sin embargo, se pueden presentar varios problemas si esta ejecución concurrente se realiza en forma no controlada. Algunos de estos problemas son: 1. The lost update problem (pérdida de actualizaciones): una transacción sobrescribe el valor de la otra; existe la dependencia write – write entre write entre las dos transacciones. Ejemplo:
T i e m p o
T1 READ(X); X = X - N; WRITE(X); READ(Y); Y = Y + N; WRITE(Y);
T2 READ(X); X = X + M; WRITE(X);
Diseño y explotación de bases de datos 124
Dra. Elzbieta Malinowski
Material de apoyo
Universidad de Costa Rica, Universidad Nacional
2. Dirty read (lectura (lectura sucia): una transacción lee el valor de la otra mientras la última aborta su ejecución; existe la dependencia write – read entre read entre las dos transacciones. Ejemplo:
T i e m p o
T1 READ(X); X = X - N; WRITE(X);
READ(Y); abort
T2
READ(X); X = X + M; WRITE(X);
3. Unrepeatable read (lectura (lectura no repetida): una transacción lee el valor varias veces mientras otra transacción lo modifica; existe la dependencia read-write read-write
T i e m p o
entre las dos transacciones. T1 READ(X); PRINT(X);
READ(X); PRINT(X);
T2 READ(X); X = X + M; WRITE(X); WRITE(X);
4. Phantom tuples (tuplas fantasma): una transacción lee el valor de varias tuplas mientras otra transacción inserta o borra los registros. Ejemplo : T1 T2 SELECT * FROM Table1 UPDATE Table1 SET column2 = 10 WHERE column1 = 5 SET column1 = 5 WHERE column1 = 8 La posibilidad de que estos problemas existan hace necesario el desarrollo de sistemas de control de concurrencia. concurrencia.
Control de concurrencia basado en candados El sistema de control de concurrencia asegura la ejecución correcta (llamada serializable – equivalente a la ejecución en serie) de las transacciones que se
Diseño y explotación de bases de datos 125
Dra. Elzbieta Malinowski
Material de apoyo
Universidad de Costa Rica, Universidad Nacional
ejecutan en un ambiente concurrente. Existen varias técnicas de control de concurrencia, donde la más conocida se refiere al protocolo basado en candados. Candados (bloqueos, locks ) es una variable asociada al dato en la base de Candados datos que describe el estatus de este dato con respecto a las posibles operaciones de read y write. Tenemos dos tipos de candados. • •
read_lock(A) (Slock(A)): write_lock(A) (Xlock(A)):
candado compartido (share, S) o de lectura candado exclusivo (exclusive, X) o de escritura
Cada transacción que ocupa leer un dato o escribir sobre él debe solicitar al sistema de control de concurrencia de la DBMS un candado adecuado. Solo los candados S son compatibles, o sea, dos o más transacciones pueden tener el candado S sobre el mismo dato (pueden leer el mismo dato). Si una de ellas tiene candado X (escribe sobre el dato), ningún otro candado se puede adquirir sobre este dato La siguiente tabla resume la compatibilidad de los candados: ADQUIRIDO MODO Ninguno S X SOLICITADO S + + X + -
+ compatible
Sin embargo, tener los candados y utilizarlos no asegura la ejecución correcta de las transacciones. Ejemplo :
Tenemos las dos siguientes transacciones: T1 SLOCK(Y); READ(Y); UNLOCK(Y); XLOCK(X); READ(X); X = X + Y; WRITE(X); UNLOCK(X);
T2 SLOCK(X); READ(X); UNLOCK(X); XLOCK(Y); READ(Y); Y = Y + X; WRITE(Y); UNLOCK(Y);
Suponiendo los valores iniciales son: X = 20 y Y = 30 si las transacciones se ejecutan en serie (que siempre da resultado correcto) T 1 y después T2
Diseño y explotación de bases de datos 126
Dra. Elzbieta Malinowski
Material de apoyo
Universidad de Costa Rica, Universidad Nacional
obtenemos: X = 50 y Y = 80; si se ejecutan T2 y después T1 obtenemos X = 70 y Y = 50. Sin embargo la ejecución concurrente concurrente de la siguiente forma: T1 SLOCK(Y); READ(Y); UNLOCK(Y);
; XLOCK(X); READ(X); X = X +Y;
T2
SLOCK(X); READ(X); UNLOCK(X); XLOCK(Y); READ(Y); Y = Y + X; WRITE(Y); UNLOCK(Y);
WRITE(X); UNLOCK(X); da resultados X = 50 y Y = 50 que no corresponden a ningún resultado de ejecución de estas transacciones en serie. Para que el uso de los candados asegure la ejecución serializable se necesita algún protocolo que establezca las reglas sobre la utilización de los candados. Uno de los protocolos más conocidos se llama Two Phase Locking (2PL) (el protocolo de dos fases de bloqueo). bloqueo) . Su nombre indica que este protocolo divide la transacción en dos fases: •
Fase de crecimiento ): los nuevos candados pueden ser crecimiento (expanding ): solicitados, ningún candado ser liberado. se permite la conversión pero de los candados, enpuede esta fase solo se Sipuede usar la promoción de los candados (de lectura a escritura).
•
Fase de encogimiento ): los candados existentes pueden ser encogimiento (shrinking ): liberados pero nuevos candados no pueden ser solicitados. Si se permite la conversión de los candados, en esta fase solo se puede usar la degradación de los candados (de escritura a lectura).
Diseño y explotación de bases de datos 127
Dra. Elzbieta Malinowski
Material de apoyo
Universidad de Costa Rica, Universidad Nacional
Sistema de recuperación El control de concurrencia no es suficiente para asegurar la consistencia en la base de datos debido a que en un sistema real pueden ocurrir diferentes tipos de fallos: 1. Fallos computadora: Ocurre un Así errorel de hardware o memoria software durantedela la ejecución de la transacción. contenido de la principal se puede perder. 2. El error en la transacción o en el sistema: Errores en la transacción (división entre cero, overflow de de enteros, etc). 3. Errores locales o condiciones de excepción: Algunas condiciones pueden pueden ocurrir durante la ejecución de la transacción, por ejemplo, el dato para la transacción no se encuentra, el dinero no es suficiente en la cuenta bancaria para satisfacer el retiro. 4. Fallo del disco: Partes del disco donde se pierden datos ppor or causa de las fallas físicas. 5. Problemas físicos y catastróficos: Descarga eléctrica, terremotos, inundaciones, etc. Los errores tipo 1, 2 y 3 ocurren más a menudo que los problemas 5 y 6. La idea principal es mantener suficiente información para recuperar el sistema de los fallos tipo 1-3. De esto se encarga el sistema de recuperación. recuperación. Si durante alguna de las fallas la transacción no logró ejecutarse con éxito en su totalidad, el sistema de recuperación debería anular las operaciones que se realizaron. Para poder recuperarse después de las fallas el sistema mantiene la bitácora (log). La bitácora bitácora incluye incluye la información sobre todas las transacciones que afectan los datos en la base de datos, tipo de operación realizada y estado de la transacción. La bitácora se guarda en el disco y de esta forma se asegura la recuperación de todas las fallas, excepto fallas del disco. Existen diferentes tipos de bitácoras que pueden tener estructuras de datos variadas. En general, la bitácora debe incluir la información de: • El identificador de la transacción, por ejemplo, T1. • La operación ejecutada, por ejemplo read o o write . • El identificador del elemento de datos, por por ejemplo, salario. • El valor anterior antes de la modificación llamado BFIM BFIM ( (before image ). ). • En valor nuevo después de la modificación llamado AFIM AFIM ( (after image ). ). 1 ejecuta la escritura sobre un dato A y lo modifica del Así, si5 ala 10, transacción valor la entradaTa la bitácora tendría el siguiente registro:
< T1, write, A, 5, 10> Diseño y explotación de bases de datos 128
Dra. Elzbieta Malinowski
Material de apoyo
Universidad de Costa Rica, Universidad Nacional
La bitácora contiene los registros con la información de cada una de las transacciones que están en ejecución. Ejemplo:
Suponga que tenemos las siguientes transacciones: T1 T2 READ(D); READ(B); D = D + 15; B = B + 8; WRITE(D); WRITE(B); READ(D); D = D + 5; WRITE(D); Si las transacciones se ejecutan en serie, se crea la siguiente bitácora: [T1, begin] [T1, read, D, 5] write, D, 5, 20] [T11, commit] [T2, begin] [T2, read, B, 2] [T2, write, B, 2, 10] [T2, read, D, 20] [T2, write, D, 20, 25] [T2, commit] En la ejecución concurrente la diferencia consiste que las operaciones de las transacciones se intercalan entre sí. Además, en muchos sistemas reales no se guarda la información sobre la operación de lectura. Después de ylarealiza falla, eldiferentes sistema de recuperación lee la bitácora que sealencuentra en el disco pasos de recuperación de acuerdo protocolo usado por la DBMS. Transacciones que no lograron su ejecución con éxito se anulan, mientras se confirman las que terminaron su ejecución con éxito.
Diseño y explotación de bases de datos 129
Dra. Elzbieta Malinowski
Material de apoyo
Universidad de Costa Rica, Universidad Nacional
ANEXO 1 EJEMPLOS DE ESQUEMAS ESQUEMA DE ADVENTURE WORKS LT
El El esquema de AdventureWorksLT se puede bajar desde http://www.codeplex.com/MSFTDBProdSamples/Wiki/View.aspx?title=%20Adve ntureWorksLTDiagram&referringTitle=AWSchemaDiag ntureWorksLTDiagram&referringTitle=AWSchemaDiag
Diseño y explotación de bases de datos 130
Dra. Elzbieta Malinowski
Material de apoyo
Universidad de Costa Rica, Universidad Nacional
ESQUEMA DE ADVENTURE WORKS El esquema de AdventureWorks (incluida en la siguiente página) se puede bajar desde http://www.microsoft.com/downloads/details.aspx?familyid=0f6e0bcf-a1b5-47608d79-67970f93d5ff&displaylang=en 8d79-67970f93d5ff&displaylang=en o desde http://www.codeplex.com/MSFTDBProdSamples/Wiki/View.aspx?title=%20AdvW orks2005Diagram&referringTitle=AWSchemaDiag orks2005Diagram&referringTitle=AWSchemaDiag Descripción de tablas se encuentra en http://msdn2.microsoft.com/enus/library/ms124438(SQL.100).aspx us/library/ms124438(SQL.100).aspx
Diseño y explotación de bases de datos 131
Dra. Elzbieta Malinowski
Material de apoyo
Universidad de Costa Rica, Universidad Nacional
7
View more...
Comments