álgebra relacional 2

Documentos relacionados
Álgebra Relacional (1 de 2)

Operador Restricción

BASES DE DATOS (IG18 Semipresencial) El Modelo Relacional Algebra Relacional y SQL

FUNDAMENTOS DE LAS BASES DE DATOS ( ) Datos Generales

4. Algebra relacional

ESQUEMA DE BASE DE DATOS ATROPELLOS

El Modelo Relacional - Dinámica-

select nombre from profesores where categoria='aso6';

1. DML. Las consultas multitabla

BASES DE DATOS I. Algebra Relacional

Tema 5 Algebra Relacional

SQL, Consultas. Son Importantes las Consultas? Cuál es el Resultado de SELECT? Andrés Moreno S.

El Modelo Relacional: Dinámica y Álgebra Relacional. El Modelo Relacional Tema 8

Álgebra Relacional. Carlos A. Olarte BDI

Lenguaje de consulta de datos SELECT PARTE 2

Bases de Datos 1. Teórico: Structured Query Language

CC BASES DE DATOS PRIMAVERA Clase 5: Álgebra Relacional. Aidan Hogan

Catedra de Base de Datos

CC BASES DE DATOS PRIMAVERA Clase 7: SQL (II) Aidan Hogan

Tema 8 Álgebra Relacional

Oracle Database 12c SQL and PLSQL Fundamentals

TEMA: CONSULTAS (ALGEBRA RELACIONAL Y SQL)

Universidad Nacional de Luján Departamento de Ciencias Básicas Base de Datos

Cátedra de Base de Datos

SQL: Lenguaje de Interrogación Estructurado

Bases de Datos. Práctica 7 WinRDBI. Consultas en cálculo relacional y SQL

Laboratorios de BASES DE DATOS. (I.T. Informática)

EXAMEN DE ESTRUCTURAS DE LA INFORMACIÓN (Junio de 2008)

S.Q.L. (Lenguaje de Consulta Estructurada) Consultas Avanzadas. Sistemas de Bases de Datos II - ITS EMT CETP

SQL. Amparo López Gaona. México, D.F. Noviembre 2003

Unidad 3. Álgebra Relacional y Cálculo Relacional

Consultas Complejas:

DI SEÑO DE BASES DE DATOS Y SEGURIDAD DE LA INFORMACIÓN (31 de mayo de 2005) 3DUFLDO. APELLIDOS: NOMBRE: TITULACIÓN (Sistemas/Gestión):

Sistemas de Datos Curso: Ernesto Chinkes. SQL Básico Algebra Relacional

BASES DE DATOS I ALTERNATIVA DE SOLUCIÓN AL TALLER 2: SQL ( ) Persona( doc_id, nombre, direccion ) Vehiculo( numero_licencia, año, marca )

ÍNDICE. Introducción... Capítulo 1. Características, instalación, inicio y entorno de trabajo... 1

BASES DE DATOS I CONSULTA DE DATOS

Modulo I: Introducción Gestores de Bases De Datos

20761 Querying Data with Transact-SQL

Práctica 3: El lenguaje SQL (1ª parte). Programa de prácticas: (5ª sesión). Lenguaje SQL: manipulación de datos (consulta y actualización):

Operadores. Además se pueden emplear en sentencias SET.

CC BASES DE DATOS OTOÑO 2018

SQL: Consultas Avanzadas. Bases de Datos

Uso de sentencias avanzadas

Asignatura: Base de Datos FA.C.E.N.A. - UNNE Cursado 2011

Introducción al Álgebra Relacional

GUIA DE CURSO: ELABORADO POR: ING. LUIS TAMAYO PARA: FECHA DE PRESENTACIÓN: INTELIGENCIA DE NEGOCIOS CON PENTAHO- Versión 1.0.

1. DML. Las consultas de resumen

Base de Datos. Docente: Ing. Francisco Rodríguez BASE DATOS. Resultados. Internet. Requerimientos

Unidad III: Lenguaje de manipulación de datos (DML) 3.1 Inserción, eliminación y modificación de registros

ÍNDICE PRIMERA PARTE... 17

6.1 Introducción. Fund. Bases de Datos Ing. Felipe Alanís González -ITD- 1

El Lenguaje SQL TEMA V. Grupo de Bas ses de Datos Avanzadas Univ. Carlo os III de Madrid. V.1 SQL como Lenguaje de Definición de Datos

CC BASES DE DATOS OTOÑO Clase 3: ER II y Álgebra Relacional. Aidan Hogan

Tarea 2 - Consultas en SQL Solución propuesta por los docentes

Bases de Datos y Sistemas de Información Curso Ingeniería Superior Primer Parcial.

Algebra Relacional Curso Bases de Datos

Bases de datos 1. Teórico: Algebra Relacional

UNIDAD4. 1. Procedimentales 2. No Procedimentales

Unidad 5 Algebra Relacional

OPERACIONES FUNDAMENTALES DEL ÁLGEBRA RELACIONAL. Bases de Datos Ingeniería de Sistemas y Computación Universidad Nacional de Colombia 2007

SELECT listadecampos FROM nombredetablas WHERE condicionesdebúsqueda;

Bases de Datos: Structured Query Language (SQL)

FUNDAMENTOS ORACLE 12C

Guía práctica SQL. (c) Francisco Charte Ojeda

Procesamiento y Optimización de Consultas

Práctica 3: El lenguaje SQL (1ª parte). (4ª sesión)

Algebra Relacional Algebra Relacional

Vistas en InformiX Sistemas de Bases de Datos II EMT CETP A/S Leonardo Carámbula

Introducción 1 Recuperación de Datos mediante la Sentencia SQL SELECT

Ser capaces de realizar una consulta dentro de otra

Agrupamiento de registros. Elaboración de claúsulas avanzadas de selección. 31/12/2011. Unidad 9

Transcripción:

16/04/2012 1

La división es un operador "extraño" dentro del álgebra relacional por su especificidad. Suponemos que su inclusión en AR tiene que ver con el "para todos" ( x F) del cálculo relacional puesto que la intención de Codd era ofrecer tres lenguajes de definición y manipulación de datos con la misma potencia expresiva para establecer los mínimos del "lenguaje completo relacionalmente". La división, como veremos, soluciona enunciados del tipo "alumnos matriculados en TODAS las asignaturas", entendiendo por "todas" la totalidad de tuplas almacenadas en la relación ASIGNATURAS es ese estado de base de datos. Para lo que viene a continuación, diferenciaremos entre dividendo (parte izquierda del operador) y divisor (parte derecha). álgebra relacional 2

La división tiene unas restricciones sintácticas bastante exigentes que nacen de la definición de la división como operador derivado de la combinación de primitivas que se vio en la sesión anterior, principalmente por el uso de la diferencia de conjuntos que necesita relaciones compatibles. Estas restricciones tienen que ver con los conjuntos de atributos utilizados en dividendo y divisor: 1. debe haber columnas comunes (mismo nombre y dominio asociado) 2. deben ser las únicas del divisor 3. deben ser las últimas del dividendo 4. deben estar ordenados de igual forma tanto en el dividendo como en el divisor. álgebra relacional 3

Supongamos este estado de base de datos. Se supone que MATRÍCULA es una relación muchos a muchos entre alumno y asignatura. En realidad, solo vamos a utilizar MATRÍCULA y ASIGNATURA ya que nada más necesitamos el identificador del alumno. álgebra relacional 4

El resultado esperado es el alumno 234, que es el único que está matriculado de las 3 asignaturas existentes. álgebra relacional 5

La expresión en álgebra relacional muestra las restricciones mencionadas antes en cuanto a la sintaxis. Aquí hay un único atributo común MATRÍCULA.asig = ASIGNATURA.asig. Es el único del divisor, el último del dividendo y, obviamente, este conjunto de un único atributo mantiene el mismo orden en uno y otro. Para conseguir estas condiciones, hemos tenido que poner paréntesis al divisor para que lo primero que se obtenga sea ese resultado intermedio con la estructura adecuada. Puesto que en el álgebra se obtienen relaciones (tablas) y en el modelo relacional formalmente no se pueden dar duplicados de tuplas, el resultado es una única tupla. Si somos "muy programadores" podemos pensar que la última operación antes de devolver el resultado por parte del motor de base de datos sería la aplicación del modificador distinct. Nota: esto no ocurre en los motores "reales", salvo que explícitamente lo pidamos precisamente con ese modificador, se pueden obtener filas duplicadas. álgebra relacional 6

La división obtiene como resultado solo los atributos no comunes del dividendo, es el resultado esperado. Los atributos comunes expresan la relación que hay entre una y otra tabla (como cuando elegimos ciertas columnas para el where en una consulta select de SQL). La forma más fácil de abordar la solución de un enunciado como este es identificar la expresión que resuelve el "...TODAS LAS...", que en este caso es muy sencillo: todas las asignaturas es la propia tabla ASIGNATURA, solo que tenemos que prepararla (realizar previamente la proyección) para acomodarla a la división. álgebra relacional 7

Como ya se ha comentado, el origen de las restricciones sintácticas de la división vienen de su definición a partir de proyecciones, diferencias y producto cartesiano. álgebra relacional 8

Diversos ejemplos de divisiones bien y mal resueltas desde el punto de vista sintáctico. álgebra relacional 9

Aunque depende de la consulta concreta a resolver el que haya alternativas, el uso del operador exists soluciona en SQL la división. Este es uno de esos casos que tienen solución alternativa (y para algunos más evidente): select alumno from matriculado group by alumno having count(*) = (select count(*) from asignatura) álgebra relacional 10

11