introduccion a bases de datos

139
©Silberschatz, Korth and Sudarsha 1.1 Database System Concepts Sistema Manejador de Bases de Sistema Manejador de Bases de Datos (SMBD) Datos (SMBD) Colección de datos interrelacionados Conjunto de programas para acceder a los datos DBMS contiene información acerca de una empresa DBMS proporciona un entorno práctico y eficiente de usar, almacenar y recuperar información Proporcionan fiabilidad de la información a pesar de las caidas del sistema e intentos de acceso no autorizados

Upload: luismmontielg

Post on 13-Nov-2014

113 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.1Database System Concepts

Sistema Manejador de Bases de Datos Sistema Manejador de Bases de Datos (SMBD)(SMBD)

Colección de datos interrelacionados Conjunto de programas para acceder a los datos DBMS contiene información acerca de una empresa DBMS proporciona un entorno práctico y eficiente de usar, almacenar

y recuperar información Proporcionan fiabilidad de la información a pesar de las caidas del

sistema e intentos de acceso no autorizados

Page 2: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.2Database System Concepts

Propósito de un sistema de Bases de Propósito de un sistema de Bases de DatosDatos

En un principio las bases de datos fueron construidad en un sistema de archivos

Inconvenientes importantes de del sistema de archivos: Redundancia e inconsistencia de datos

Diferentes formatos de archivos, información duplicada en diferentes archivsos

Dificultad en el acceso a los datos

Necesidad de escribir un nuevo programa para nuevas tareas

Aislamiento de datos — multipleas archivos y formatos

Problemas de integridad

Ligaduras de integridad (e.j. Saldo minimo > 0) es parte del codigo del programa

Dificultad en cambiar o adicionar nuevas ligaduras de integridad

Page 3: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.3Database System Concepts

Purpose of Database Systems (Cont.)Purpose of Database Systems (Cont.)

Inconvenientes de sistemas de archivos (cont.) Atomicidad

Las fallas pueden dejar a la base de datos en un estado de inconsistencia debido a actualizaciones parciales

E.j. La tranferencia de fondos de una cuenta a otra debe ocurrir completamente o no realizarce

Anomalias en el acceso concurrente

Nivel de respuesta aceptable a accesos concurrentes

Accesos concurrentes sin control dejan la DB en un estado inconsistente

– E.j. Dos personas leyendo un balance y actualizandolo al mismo tiempo

Problemas de seguridad

Un sistema de bases de datos ofrece soluciones a todos estos aspectos

Page 4: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.4Database System Concepts

Niveles de abstracciónNiveles de abstracción Nivel Físico: describe cómo se almacenan realmente los datos.

Nivel Lógico: describe qué datos se almacenan en la base de datos y qué relaciones existen entre esos datos.

Nivel de Vista: describe sólo una parte de la base de datos. Pueden esconder información con propósitos de seguridad

Page 5: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.5Database System Concepts

View of DataView of Data

An architecture for a database system

Page 6: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.6Database System Concepts

Ejemplares y EsquemasEjemplares y Esquemas

Similar a los tipos de datos y las variables en lenguajes de programación

Esquema – la estructura lógica de la base de datos Esquema Físico: diseño de la base de datos a nivel físico

Esquema Lógico: diseño de la base de datos a nivel lógico

Ejemplar (instancia) – el actual contenido de la base de datos en un tiempo especifico

Physical Data Independence – la habilidad para modificar el esquema físico sin realizar cambios en el esquema lógico

Page 7: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.7Database System Concepts

Modelo de DatosModelo de Datos

Colección de herramientas conceptuales para describir datos relaciones de datos semantica de los datos ligaduras de consistencia

Modelo Entidad - Relación

Modelo Relacional

Otros Modelos: modelo orientado a objetos modelo de datos semiestructurado modelos viejos: modelo jerarquico y modelo de red

Page 8: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.8Database System Concepts

Modelo Entidad - RelaciónModelo Entidad - Relación

Ejemplo de un esquema en un modelo entidad - relación

Page 9: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.9Database System Concepts

Modelo Entidad - Relación (Cont.)Modelo Entidad - Relación (Cont.)

Modelo E-R del mundo real Entidades (objeto o cosa en el mundo real distingible de otros

objetos)

Relaciones (asociación entre entidades)

Ampliamente usado para el diseño de bases de datos El diseño de una base de datos en modelo E-R normalmemte es

convertido en un diseño de modelo Relacional, el cual es usado para almacenamiento y procesamiento.

Page 10: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.10Database System Concepts

Modelo RelacionalModelo Relacional

Ejemplo de datos tabulados en un modelo relacional

Nombre-clienteCliente_id Calle-cliente Ciudad-cliente Numero-cuenta

Johnson

Smith

Johnson

Jones

Smith

192-83-7465

019-28-3746

192-83-7465

321-12-3123

019-28-3746

Alma

North

Alma

Main

North

Palo Alto

Rye

Palo Alto

Harrison

Rye

A-101

A-215

A-201

A-217

A-201

Atributos

Page 11: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.11Database System Concepts

Un Ejemplo de Base de Dato RelacionalUn Ejemplo de Base de Dato Relacional

Page 12: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.12Database System Concepts

Lenguaje de Definición de DatosLenguaje de Definición de Datos (DDL) (DDL)

Especifica detalles de implementación del esquema dela base de datos

E.j. create table cuenta (

numero-cuenta char(10), saldo integer)

El compilador DDL genera un conjunto de tablas que se almacena en el diccionario de datos

El diccionario de datos contiene los metadatos (datos acerca de los datos)

Page 13: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.13Database System Concepts

Lenguaje de Manipulación de Datos Lenguaje de Manipulación de Datos (DML)(DML)

Lenguaje para accesar o manipular los datos organizados por un modelo de datos apropiado. DML también es conocido como lenguaje de consultas

Tipo de lenguajes Procedimental – el usuario especifica qué datos de necesitan y

cómo obtener estos datos

No procedimental – el usuario especifica qué datos se necesitan, sin especificar cómo obtener estos datos

SQL es el lenguaje de consultas más amplimente usado

Page 14: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.14Database System Concepts

SQLSQL

SQL: widely used non-procedural language E.g. find the name of the customer with customer-id 192-83-7465

select customer.customer-namefrom customerwhere customer.customer-id = ‘192-83-7465’

E.g. find the balances of all accounts held by the customer with customer-id 192-83-7465

select account.balancefrom depositor, accountwhere depositor.customer-id = ‘192-83-7465’ and depositor.account-number = account.account-

number

Application programs generally access databases through one of Language extensions to allow embedded SQL

Application program interface (e.g. ODBC/JDBC) which allow SQL queries to be sent to a database

Page 15: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.15Database System Concepts

Usuarios de la Base de DatosUsuarios de la Base de Datos

Los usuarios se diferencian por la forma como esperan interactuar con el sistema

Programador de aplicaciones – interactuan con el sistema atravez de llamadas del DML

Usuario

s sofisticados – forman sus consultas en un lenguaje de consultas de bases de datos

Usuarios especializados – escriben aplicaciones de bases de datos especializadas que no son adecuadas en el marcode procesamiento de datos tradicional

Usiarios normales – invocan programas de aplicación permanente que se han escrito prevbiamente

Page 16: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.16Database System Concepts

Administrador de la Base de DatosAdministrador de la Base de Datos

Coordina todas las actividades del sisetma de base de datos

Sus funciones incluyen: Definición del esquema

Estructura de almacenamiento y definición del método de acceso

Esquema y modificación de la organización física

Concesión de autorizaciones para el acceso a los datos

Especificación de las ligaduras de integridad

Actua como un liaison con los usuarios

Monitorea el performance y responde a los cambios de requerimientos

Page 17: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.17Database System Concepts

Administración de TransaccionesAdministración de Transacciones

Una transacción es una colección de operaciones que se llevan a cabo como una función lógica simple en una aplicación de base de datos

Es responsabilidad del administrador de transacciones, asegurar el estado de consistencia aún despues de haber ocurrido fallas en el sistema o transacciones (atomicidad y durabilidad)

El administrador de control de concurrencia controla la interacción entre las transacciones concurrentes para asegurar la consistencia de la base de datos.

Page 18: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.18Database System Concepts

Gestión de AlmacenamientoGestión de Almacenamiento

Un gestor de almacenammiento es un módulo de programa que proporciona la interfaz entre los datos de bajo nivel en la base de datos y los programas de aplicación y consultas suministradas al sistema.

El gestor de almacenamiento es responsable de las siguientes tareas: interacción con el administrador de archivos

eficiente almacenamiento, recuperación y actualización de los datos en la base de datos

Page 19: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.19Database System Concepts

Estructura del SistemaEstructura del Sistema

Page 20: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.20Database System Concepts

Modelo Entidad - RelaciónModelo Entidad - Relación

Conjunto de Entidades

Conjunto de Relaciones

Cuestiones de Diseño

Ligaduras de Correspondencia

Claves

Diagrama E-R

Características del Modelo E-R Extendido

Diseño de un Esquema de Bases de Datos E-R

Reducción de un Esquema E-R a Tablas

Page 21: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.21Database System Concepts

Conjunto de EntidadesConjunto de Entidades

Una base de datos puede ser modelada como: un conjunto de entidades,

relaciones entre las entidades.

Una entidad es un objeto que existe y es distinguble de otros objetos.

Ejemplos: persona específica, empresa, evento, planta

Las entidadades tienen atributos Ejemplo: las personas tienen nombre, dirección, etc.

Un conjunto de entidades es un conjunto de entidades del mismo tipo que comparten las mismas propiedades Ejemplo:conjunto de todas las personas, empresas, arboles

Page 22: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.22Database System Concepts

Conjunto de Entidades Clientes y Conjunto de Entidades Clientes y PrestamosPrestamos

cliente-id cliente cliente- cliente- prestamo- monto nombre calle ciudad numero

Page 23: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.23Database System Concepts

AtributosAtributos

Una entidad es representada por un conjunto de atributos, los cuales describen las propiedades de todos los miembros de unconjunto de entidades.

Dominio – conjunto de valores permitidos para cada atributo Tipos de atributos:

Simples y compuestos Univalorados y multivalorados

E.j. multivalorado : numero-telefono Derivados

Puede ser derivado de valores de otros atributos o entidades E.j. edad, dada la fecha de nacimiento

Ejemplo:

clienter = (cliente-id, cliente-nombre, cliente-calle, cliente-ciudad)prestamo = (prestamo-numerp, monto)

Page 24: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.24Database System Concepts

Atributos CompuestosAtributos Compuestos

Page 25: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.25Database System Concepts

Conjunto de RelacionesConjunto de Relaciones

Una relación es una asociación etre diferentes entidades

Ejemplo:Ortiz posee A-102

entidad cliente conjunto relaciones entidad cuenta

Una relación también puede tener atributos descriptivos

Page 26: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.26Database System Concepts

Conjunto de Relaciones PrestatarioConjunto de Relaciones Prestatario

Page 27: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.27Database System Concepts

Conjunto de Relaciones (Cont.)Conjunto de Relaciones (Cont.)

Page 28: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.28Database System Concepts

Grado de una RelacionGrado de una Relacion

Se refiere al número de conjunto de entidades que participan en un conjunto de relaciones.

Un conjunto de relaciones en la cual se involucran dos conjuntos de entidades se denomina binaria(o grado dos). La mayoría de relaciones entreconjunto de entidades son binarias

Page 29: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.29Database System Concepts

Correspondencia de CardinalidadCorrespondencia de Cardinalidad

Expresa en número de entidades a las que otra entidad puede estar asociada vía un conjunto de relaciones.

Para un conjunto de relaciones benarias las correspondencia de cardinalidades debe ser una de los siguinetes tipos: uno a uno

uno a muchos

muchos a uno

muchos a muchos

Page 30: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.30Database System Concepts

Correspondencia de CardinalidadCorrespondencia de Cardinalidad

Uno a uno Uno a muchos

Page 31: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.31Database System Concepts

Correspondencia de CardinalidadCorrespondencia de Cardinalidad

Muchos a uno Muchos a muchos

Page 32: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.32Database System Concepts

Mapping Cardinalities affect ER DesignMapping Cardinalities affect ER Design

Can make access-date an attribute of account, instead of a relationship attribute, if each account can have only one customer

I.e., the relationship from account to customer is many to one, or equivalently, customer to account is one to many

Page 33: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.33Database System Concepts

Diagramas E-RDiagramas E-R

Rectangulos representa conjunto de entidades.

Ronbos representa relaciones.

Lineas une atributos o conjunto de entidades a conjuntos de relaciones.

Elipses representa atributos

Elipses dobles representa atributos multivalorados.

Elipses discontinuasdenotan atributos derivados.

Subrayado indica atributo de llave primaria

Page 34: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.34Database System Concepts

Diagrama E-R con Atributos Compuestos, Diagrama E-R con Atributos Compuestos, Multivalorados y DerivadosMultivalorados y Derivados

Page 35: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.35Database System Concepts

Conjunto de Relaciones con AtributosConjunto de Relaciones con Atributos

Page 36: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.36Database System Concepts

RolesRoles El conjunto de entidades en una relación no necesita ser

distingido Las etiquetas “manager” y “worker” son llamadas roles; ellas

especifican cómo la entidad employee interactua atravéz de la relación works-for.

Los roles se indican como etiquetas sobre las líneas que contienen los rombos y los rectangulos en el modelo E-R.

Los roles son opcionales, y son usados para clarificar la semantica de la relación

Page 37: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.37Database System Concepts

Restricciones de CardinalidadRestricciones de Cardinalidad Las restricciones de cardinalidad se pueden expresar dibujando

una linea dirigida (), para indicar uno, o una linea sin dirección (—), para indicar muchos, entre un conjunto de relaciones y uno de relaciones.

E.j.: Relación uno a uno: Un cliente es asociado con máximo un prestamo vía prestatario

Un prestamo es asociado con máximo un cliente vía prestatario

Page 38: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.38Database System Concepts

Relación Uno a MuchosRelación Uno a Muchos

En la relación uno a muchos, un préstamo es asociado con máximo un cliente vía prestatario, y un cliente asociado con muchos prestamos (incluyendo 0) vía prestatario.

Page 39: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.39Database System Concepts

Relaciones Muchos a UnoRelaciones Muchos a Uno

En la relación muchos a uno el prestamo es asociado con varios(incluido 0) clientes, y un cliente con máximo un prestamo vía prestatario.

Page 40: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.40Database System Concepts

Relaciones Muchos a MuchosRelaciones Muchos a Muchos

Un cliente es asociado con varios (posiblemente 0) prestamos vía prestatario

Un prestamo es asociado con varios (posiblemente 0) clientes vía prestatario

Page 41: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.41Database System Concepts

Notación Alternativa para Límites de Notación Alternativa para Límites de CardinalidadCardinalidad

Se pueden expresar límites de cardinalidad

Page 42: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.42Database System Concepts

ClavesClaves

Una super clave es un conjunto de uno o mas atributos que, tomados colectivamente, permiten identificar de forma única una entidad en el conjunto de entidades.

Una clave candidata de un conjunto de entidades es una super clave minima (los subconjuntos de ella no son super claves) Cliente-id es llave candidata para cliente

cuenta-numero es llave candidata para cuenta

Aunque pueden existir varias claves candidatas, una de ellas es seleccionada para ser llave primaria.

Page 43: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.43Database System Concepts

Claves para un Conjunto de RelacionesClaves para un Conjunto de Relaciones

La combinación de las claves primarias de los conjuntos de relaciones participantes forman una super clave del conjunto de relaciones. (cliente-id, cuenta-numero) es la super clave de depositor

Se debe considerar especificar la cardinalidad del conjunto de relaciones

Se necesita considerar la semantica del conjunto de relaciones seleccionando la clave primaria en caso de tener mas de una clave candidata.

Page 44: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.44Database System Concepts

Diagrama E-R con Relaciones TernariasDiagrama E-R con Relaciones Ternarias

Page 45: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.45Database System Concepts

Convirtiendo una Relación No-Binaria en Convirtiendo una Relación No-Binaria en forma Binariaforma Binaria

En general, cualquier relacion no-binaria puede ser representada usando relaciones binarias creando un conjunto de entidades artificial

Page 46: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.46Database System Concepts

EspecializaciónEspecialización

Un conjunto de entidades puede incluir subgrupos de entidades que se diferencian de alguna forma de las otras entidades del conjunto.

Estos subgrupos llegan a ser entidades de bajo nivel que tienen atributos o participan en relaciones que no aplican al conjunto de relaciones de alto nivel.

Attributos heredados – un conjunto de entidades de bajo nivel hereda todos los atributos y relaciones que participan en el conjunto de entidades de alto nivel.

Page 47: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.47Database System Concepts

Ejemplo de EspecializaciónEjemplo de Especialización

Page 48: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.48Database System Concepts

Resumen de simbolos usados en la Resumen de simbolos usados en la notación E-Rnotación E-R

Page 49: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.49Database System Concepts

Resumen de Simbolos (Cont.)Resumen de Simbolos (Cont.)

Page 50: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.50Database System Concepts

Notaciones Alternativas para E-RNotaciones Alternativas para E-R

Page 51: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.51Database System Concepts

Reducción de un Esquema E-R a TablasReducción de un Esquema E-R a Tablas

Las claves primarias Primary keys allow entity sets and relationship sets to be expressed uniformly as tables which represent the contents of the database.

Una base de datos conformada por un diagrama E-R puede ser representado cmo una colección de tablas.

Por cada conjunto de entidades y conjunto de relaciones hay una única tabla a la cual se le asigna el nombre correspondiente al conjunto derelaciones o conjunto de entidades.

Cada tabla tiene un númeri de columnas (correspondientes a los atributos), los cuales tienen nombres únicos.

Convertir una representación de base de datos de un diagrama E-R a un formato de tablas es la base para la derivación de un diseño de bases de datos relacional

Page 52: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.52Database System Concepts

Modelo RelacionalModelo Relacional

Estructura de Bases de Datos Relacionales

Algebra Relacional

Tuplas del Cálculo Relacional

Dominio del Cálculo Relacional

Operaciones del Algebra Relacional Extendido

Modificaciones de la Base de Datos

Vistas

Page 53: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.53Database System Concepts

Ejemplo de una RelaciónEjemplo de una Relación

Page 54: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.54Database System Concepts

Tipos de AtributosTipos de Atributos

Cada atributo de una relación tiene un nombre

El conjunto de valores permitidos para casa atributo es llamado dominio del atributo

Los valores de los atributos (normalmente) se requieren que sean atómicos, esto es, indivisible E.j. atributos multivalorados no son atómicos

E.j. atributos compuestos no son atómicos

El valos especial null es parte de todos los dominios

Page 55: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.55Database System Concepts

Instancia de las RelacionesInstancia de las Relaciones

Los valores actuales (instancia de la relación) son especificados en una tabla

Un elemento t de r es una tupla, representado por una fila en la tabla

JonesSmithCurry

Lindsay

Cliente-nombre

MainNorthNorthPark

Cliente-calle

HarrisonRyeRye

Pittsfield

Cliente-ciudad

clientes

atributos(o columnas)

tuplas(o filas)

Page 56: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.56Database System Concepts

Base de DatosBase de Datos

Una base de datos consiste en muchas relaciones La información de la empresa es dividida en partes, las cuales forman

una relación que almacena parte la información

E.j.: cuenta : almacena la información de las cuentas depositario : almacena información de los clientes que son propietarios de cuentas cliente : almacena información de los clientes

Almacenar toda la información en una simple relación como: banco(numero de cuenta, saldo, cliente-nombre, ..)resulta en Repetición de información (e.j. 2 clientes propietarios de una

cuenta) Necesidad de valores nulos (e.j. representar clientes sin una

cuenta) La teoría de la normalización permite hacer un buen diseño de

esquemas relacionales

Page 57: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.57Database System Concepts

La Relación ClienteLa Relación Cliente

Page 58: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.58Database System Concepts

La Relación DepositorLa Relación Depositor

Page 59: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.59Database System Concepts

Diagrama E-R para un BancoDiagrama E-R para un Banco

Page 60: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.60Database System Concepts

Diagrama de un Esquema de un BancoDiagrama de un Esquema de un Banco

Page 61: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.61Database System Concepts

Lenguaje de ConsultasLenguaje de Consultas

Lenguaje en el cual los usuarios hacen requisitos de información a la base de datos.

Categorias de los lenguajes procedimental

No-procedimental

“Puros” languajes: Algebra Relacional

Tuplas del Cálculo Relacional

Dominio del Cálculo Relacional

Page 62: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.62Database System Concepts

Algebra RelacionalAlgebra Relacional

Lenguaje Procedimental

Seis operaciones básicas selección

proyección

union

diferencia de conjunto

producto cartesiano

renombramiento

Los operadores toman dos o más relaciones como entrada y su resultado es una nueva relación.

Page 63: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.63Database System Concepts

Ejemplo de la Operación de SelecciónEjemplo de la Operación de Selección

• Relación r A B C D

1

5

12

23

7

7

3

10

A=B ^ D > 5 (r)A B C D

1

23

7

10

Page 64: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.64Database System Concepts

Operación de SelecciónOperación de Selección

Notación: p(r)

p es llamado predicado de la selección

Definido como:

p(r) = {t | t r and p(t)}

Donde p es una formula consistente con el cálculo proposicional de terminos conectados por : (y), (o), (no)Cada termino es uno de:

<atributo> op <atributo> o <constante>

donde op es uno de: =, , >, . <. Ejemplo de selección:

sucursal-nombre=“Perryridge”(cuenta)

Page 65: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.65Database System Concepts

Ejemplo de la operación de ProyecciónEjemplo de la operación de Proyección

Relación r: A B C

10

20

30

40

1

1

1

2

A C

1

1

1

2

=

A C

1

1

2

A,C (r)

Page 66: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.66Database System Concepts

Operación de ProyecciónOperación de Proyección

Notación:

A1, A2, …, Ak (r)

donde A1, A2 son nombres de atributos y r es el nombre de la relación.

El resultado es definido como una relación de k columnas obtenidas de borrar las columnas que no están listadas

Las filas duplicadas son removidas del resultado

E.j. Para eliminar el atributo sucursal-nombre de cuenta account-number, balance (cuenta)

Page 67: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.67Database System Concepts

Ejemplo de la Operación UniónEjemplo de la Operación Unión

Relaciónes r, s:

r s:

A B

1

2

1

A B

2

3

rs

A B

1

2

1

3

Page 68: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.68Database System Concepts

Operación de UniónOperación de Unión

Notación: r s

Definido como:

r s = {t | t r or t s}

Para que r s seválida.

1. r, s deben ser de la misma aridad (mismo número de atributos)

2. Los dominios de las tributos deben ser compatibles find all customers with either an account or a loan3. r y s pueden ser relaciones temporales que sean resultado de expresiones del álgebra relacional. E.j.

customer-name (depositor) customer-name (borrower)

Page 69: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.69Database System Concepts

Ejemplo de Operación Diferencia de Ejemplo de Operación Diferencia de ConjuntoConjunto

Relations r, s:

r – s:

A B

1

2

1

A B

2

3

rs

A B

1

1

Page 70: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.70Database System Concepts

Operación Diferencia de ConjuntoOperación Diferencia de Conjunto

Notación r – s

Definida como:

r – s = {t | t r and t s}

Se debe asegurar que la diferencia de conjuntos se realice entre relaciones compatibles. r y s deben ser de la misma aridad

alos domminios de los atributos de r y s sean compatibles

Page 71: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.71Database System Concepts

Ejemplo de la Operación Producto Ejemplo de la Operación Producto CartesianoCartesiano

Relationes r, s:

r x s:

A B

1

2

A B

11112222

C D

1010201010102010

E

aabbaabb

C D

10102010

E

aabbr

s

Page 72: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.72Database System Concepts

Operación Producto CartesianoOperación Producto Cartesiano

Notación r x s

Definido como:

r x s = {t q | t r and q s}

Asume que los atributos de r(R) y s(S) son disyuntos. (Esto esto, R S = ).

Si los atributos de r(R) y s(S) no son disyuntos, entonces se debe usar renombramiento.

Page 73: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.73Database System Concepts

Composición de OperacionesComposición de Operaciones

Se pueden construir expresiones usando multiples operaciones

Ejemplo A=C(r x s)

r x s

A=C(r x s)

A B

11112222

C D

1010201010102010

E

aabbaabb

A B C D E

122

102020

aab

Page 74: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.74Database System Concepts

Opertación de RenombramientoOpertación de Renombramiento

Allows us to name, and therefore to refer to, the results of relational-algebra expressions.

Permite referirse a una relación por más de un nombre.

Ejemplo:

x (E)

Devuelve la expresión E bajo el nombre X

Si la expresión del algebra relacional E tiene aridad n, entonces

x (A1, A2, …, An) (E)

devuelve el resultado de la expresiónE bajo el nombre X, y con los atributos renombrados a A1, A2, …., An.

Page 75: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.75Database System Concepts

Operaciones AdicionalesOperaciones Adicionales

Se definen operaciones que no adicionan poder al algebra relacioneal pero simplifican alfunas consultas.

Intersección

Reunión Natural

División

Asignación

Page 76: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.76Database System Concepts

Operación de IntersecciónOperación de Intersección

Notación: r s

Definida como:

r s ={ t | t r and t s }

Asume: r, s tienen la misma aridad

Atributos de r y s son compatibles

Note: r s = r - (r - s)

Page 77: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.77Database System Concepts

Ejemplo de Operación de IntersecciónEjemplo de Operación de Intersección Relation r, s:

r s

A B

121

A B

23

r s

A B

2

Page 78: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.78Database System Concepts

Notación: r s

Operación de Reunión NaturalOperación de Reunión Natural

La reaunión natural es una operación binaria que permite combinar ciertas selecciones y un producto cartesiano en una sola operación y elimina los atributos repetidos.

Example:

R = (A, B, C, D)

S = (E, B, D)

Result schema = (A, B, C, D, E)

r s is defined as:

r.A, r.B, r.C, r.D, s.E (r.B = s.B r.D = s.D (r x s))

Page 79: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.79Database System Concepts

Ejemplo de una Operación de Reunión Ejemplo de una Operación de Reunión NaturalNatural

Relaciones r, s:

A B

12412

C D

aabab

B

13123

D

aaabb

E

r

A B

11112

C D

aaaab

E

s

r s

Page 80: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.80Database System Concepts

Operación de DivisiónOperación de División

Adecuada para consultas que incluyen la expresión “para todos”.

Si r y s son relaciones de los esquemas R y S respectively where R = (A1, …, Am, B1, …, Bn)

S = (B1, …, Bn)

El resultado de r s es una relación sobre el esquema

R – S = (A1, …, Am)

r s = { t | t R-S(r) u s ( tu r ) }

r s

Page 81: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.81Database System Concepts

Ejemplo de la Operación de DivisiónEjemplo de la Operación de División

Relations r, s:

r s: A

B

1

2

A B

12311134612

r

s

Page 82: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.82Database System Concepts

Operación de AsignaciónOperación de Asignación

La operación de asignación () prevee una conveniente forma de expresar queries complejos.

Ejemplo: Escribir r s como s

temp1 R-S (r)

temp2 R-S ((temp1 x s) – R-S,S (r))

result = temp1 – temp2

El resultado a la derecha de es asignado a la relación de la

izquierda de .

Se pueden usar variable en las sibsiguientes expresiones.

Page 83: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.83Database System Concepts

Generalized ProjectionGeneralized Projection

Extención de la operación de proyección que permite funciones aritméticas para ser usadas en la lista de proyección.

F1, F2, …, Fn(E)

E es cualquier expresión del algebra relacional

cada uno de los F1, F2, …, Fn es una expresión atritmética que involucra constantes y atributos en el esquema de E.

Data una relación info-credito(nombre-cliente, limite, saldo-credit), encuentre que tanto peden las personas gastar:

nombre-cleinte, limite – saldo-credito (info-credito)

Page 84: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.84Database System Concepts

Operaciones y Funciones de AgragaciónOperaciones y Funciones de Agragación

Funciones de Agregación toma una colección de valores y retorna un solo valos como resultado.

avg: valor promediomin: valor mínimomax: valor máximosum: suma de valorescount: número de valores

Operaciones de Agregación en el algebra relacional

G1, G2, …, Gn g F1( A1), F2( A2),…, Fn( An) (E)

E es cualquier expresión del algebra relacional

G1, G2 …, Gn es una lista de atributosque se agrupan (pueden ser vacios)

Cada Fi es una función se agregación

Each Ai es un nombre de atributo

Page 85: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.85Database System Concepts

Ejemplo de Operación de AgregaciónEjemplo de Operación de Agregación

Relación r:

A B

C

7

7

3

10

g sum(c) (r)sum-C

27

Page 86: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.86Database System Concepts

Ejemplo de Operación de AgregaciónEjemplo de Operación de Agregación

Relación account agrupada por branch-name:

branch-name g sum(balance) (account)

branch-name account-number balance

PerryridgePerryridgeBrightonBrightonRedwood

A-102A-201A-217A-215A-222

400900750750700

branch-name balance

PerryridgeBrightonRedwood

13001500700

Page 87: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.87Database System Concepts

Función de Agregación (Cont.)Función de Agregación (Cont.)

El resultado de una agregación no tiene nombre Se puede usar la operación de renombramiento para darle un

nombre

Por conveniencia, se permite renombrar como parte de la operación de agregamiento

branch-name g sum(balance) as sum-balance (account)

Page 88: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.88Database System Concepts

Modificación de la Base de DatosModificación de la Base de Datos

El contenido de la base de datos puede ser modificado usando las siguientes operaciones: Borrar

Insertar

Actualizar

Todas estas operaciones son expresadas usando el operador de asignación.

Page 89: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.89Database System Concepts

BorradoBorrado

Las solicitudes de borrado se extresan de forma similar que las consultas, salvo que en lugar de mostrar las tuplas, estas son eliminadas de la base de datos.

Solo se puede borrar la tupla entera; no se pueden borrar valores particulares de atributos

El borrado se expresa en el algebra relacional como:

r r – E

donde r es una relación y E es una consulta del algebra relacional.

Page 90: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.90Database System Concepts

Ejemplos de BorradoEjemplos de Borrado

Borrar todas los registros de cuentas de la sucursal Perryridge.

Borrar todos los registros cuyo monto esté entre 0 y 50

prestamo prestamo – monto 0and monto 50 (prestamo)

cuenta cuenta – nombre-sucursal = “Perryridge” (cuenta)

Page 91: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.91Database System Concepts

InsercionInsercion

Para insertar datos en una relación, we either: especificar la tupla que se va a insertar

escribir un query cuyo resultado sea un conjunto de tuplas que vayan a insertarsen

en el álgebra relacional, una insercion se expresa como:

r r E

donde r es una relación y E es una expresión del álgebra relacional.

Page 92: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.92Database System Concepts

Ejemplos de InserciónEjemplos de Inserción

Inserte información en la base de datos especificando que Smith tieme $1200 ien la cuenta A-973 en la sucursal Perryridge.

cuenta cuenta {(“Perryridge”, A-973, 1200)}

depositor depositor {(“Smith”, A-973)}

Page 93: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.93Database System Concepts

ActualizaciónActualización

El mecanismos para cambiar los valores de una tupla sin cambiar todos sus valores

Use el operador de proyección generalizada para realizar esta tarea

r F1, F2, …, FI, (r)

cuenta AN, BN, BAL * 1.05 (cuenta)

donde NC, NS y SAL son numero-cuenta, nombre-sucursal and saldo, respectivamente.

Se desea incrementar el 5% de interés en todos los saldos de las cuentas.

Page 94: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.94Database System Concepts

VistasVistas

En algunas ocaciones no es deseable que todos los usuarios puedan ver la totalidad del modelo lógico (e.j., todas las relaciones de la base de datos.)

Considere una persona que necesita conocer los números de prestamo pero no su monto. Esta persona podría ver la relación descrita en el álgebra relacional por:

nombre-cliente, numero-prestamo (prestatario prestamo)

Cualquier relación que no es del modelo conceptual pero es visible al usuario como una “relación virtual” es llamada vista.

Page 95: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.95Database System Concepts

Definición de VistaDefinición de Vista

Una vista es definida usando la expresión create view

create view v as < query >

donde <query> es cualquier expresión legal del algebra relacional. El nombre de la vista se representa mediante v

Una vez se ha definido una vista¡, se puede utilizar el nombre de la vista para hacer referencia a la relación virtual que genera la vista.

Page 96: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.96Database System Concepts

Ejemplos de VistaEjemplos de Vista

Considere la vista (llamada todos-clientes) que consiste en las sucursales y sus clientes.

create view todos-clientes as

nombre-sucursal, nom-cliente (depositor account)

nombre-sucursal, nom-cleinte (prestatario prestamo)

Page 97: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.97Database System Concepts

E-R DiagramE-R Diagram

Page 98: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.98Database System Concepts

Estructura BásicaEstructura Básica

SQL esta basado en un conjunto de operaciones relacionales con ciertas modificaciones y extenciones

Una consulta típica de SQL es:select A1, A2, ..., An

from r1, r2, ..., rm

where P

Ais representa atributos

ris representa relaciones

P es un predicado.

Esta consulta es equivalente a la expresin del álgebra relacional.

A1, A2, ..., An(P (r1 x r2 x ... x rm))

El resultado de una consulta SQL es una relación.

Page 99: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.99Database System Concepts

La Clausula SelectLa Clausula Select

La clausula select lista los atributos señalados en el resultado de la consulta Corresponda a la operación de proyección del algebra relacional

E.j. encontrar los nombres de todas las sucursales en la relación de prestamos

select nombre-sucursalfrom prestamo

En el álgebra relacional la consulta seria:

nombre-sucursal(prestamo)

Page 100: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.100Database System Concepts

La Clausula Select (Cont.)La Clausula Select (Cont.)

SQL permite la duplicación el la consulta resuldato.

Para forzar la eliminación de duplicados se una la palbra clave distinct después de select.

Encontrar los nombres de todas las sucursales en la relación de prestamos, y remueva los duplicados

select distinct nombre-sucursalfrom prestamo

La palabra all especifica que los duplicados no se eliminan.

select all nombre-sucursalkfrom prestamo

Page 101: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.101Database System Concepts

La Clausula Select (Cont.)La Clausula Select (Cont.)

Un asterisco en la clausula select denota “todos los atributos”

select *from prestamo

La clausula select puede contener expresines aritméticas involucrando los operadores, +, –, , y /, operando sobre constantes o atributos de las tuplas.

La consulta:

select numero-prestamo, nombre-sucursal, monto 100 from prestamo

devolverá una relación igual a la de prestamo, pero con el saldo multiplicado por 100.

Page 102: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.102Database System Concepts

La Clausula whereLa Clausula where

La clausula where especifica condiciones cuyo resultado debe satisfacer Corresponde al predicado de la selección en el álgebra relacional.

Encuentre todos lo sprestamos realizados en la sucursal de Perryridge cuyo monto sea superior a $1200. select numero-prestamo from prestamo where nombre-sucursal = ‘Perryridge’ and monto > 1200

Los operadores de comparación pueden ser utilizados en combinación con los conectores lógicos and, or, y not.

Las comparaciones pueden ser aplicadas a resultados de expresiones aritméticas.

Page 103: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.103Database System Concepts

La Clausula where (Cont.)La Clausula where (Cont.)

SQL incluye el operador de comparación between

E.j. Encuentre los números de prestamos de todos los préstamos cuyo monto este entre $90,000 y $100,000 (esto es, $90,000 y $100,000)

select numero-prestamo

from prestamowhere monto between 90000 and 100000

Page 104: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.104Database System Concepts

La Clausula fromLa Clausula from

La clausula from lista las relaciones involucradas en la consulta Corresponde a la operación de producto cartesiano del algebra relacional.

Encuentre el producto cartesiano entre prestatario x prestamo select

from prestatario, prestamo

Encuentre el nombre, numero de prestamo, y monto del prestamo de todos los clientes que tienen prestamo en la sucursal de Perryridge.

select nombre-cliente, prestatario.numero-prestamo, montofrom prestatario, prestamowhere prestatario.numero-prestamo = prestamo.numero-prestamo

and nombre-sucursal = ‘Perryridge’

Page 105: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.105Database System Concepts

La Operación RenombramientoLa Operación Renombramiento

SQL permite renombrar las relaciones y atributos usando la clausula as :

nombre-viejo as nombre-nuevo

Encuentre el nombre, numero de prestamo y monto del prestamo de todos los clientes; renombre el nombre de la columna numero-prestamo como prestamo-id.

select nombre-cleinte, prestatario.numero-prestamo as prestamo-id, montofrom prestatario, prestamowhere prestatario.numero-prestamo = prestamo.numero-prestamo

Page 106: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.106Database System Concepts

Variable de TuplasVariable de Tuplas

La variables de tuplas son definidas en la clausula from a travez de la clausula as.

Encuentre el nombre y numeros de prestamo de todos los clientes que tengan un prestamo en alguna sucursal.

select distinct T.nombre-sucursal from sucursal as T, sucursal as S where T.activo > S.activos and S.ciudad-sucursal = ‘Brooklyn’

Obtenga el nombre de todas las sucursales que poseen un activo mayor que al menos una sucursal situada en ‘Brooklyn.

select nombre-cleinte, T.numero de prestamo, S.monto from prestatario as T, prestamo as S where T.numero-prestamo = S.numero-prestamo

Page 107: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.107Database System Concepts

Operaciones Sobre Cadenas de Operaciones Sobre Cadenas de CaracteresCaracteres

SQL incluye un operador para comparacion de cadenas de caracteres. Los patrones utilizan dos caracteres especiales: poprcentajet (%). El caracter % se iguala a cualquier substring. underscore (_). El catacter _ se iguala a cualquier caracter.

Encuentre el nombre de todos los clientes que incluyen “Main” en la calle.

select nombre-clientefrom cliente

where calle-cliente like ‘%Main%’ Match the name “Main%”

like ‘Main\%’ escape ‘\’ SQL soporta una variedad de operaciones sobre string como

concatenacion (usando “||”) convirtiendo de mayuscula a minuscula y viceverza Encontrando la longitud de un string, extrayendo substrings, etc.

Page 108: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.108Database System Concepts

Ordenando la Presentación de las Ordenando la Presentación de las TuplasTuplas

Listar en orden alfabetico los nombres de todos los clientes que tienen un prestamo en la sucursal de Perryridge

select distinct nombre-clientefrom prestatario, prestamowhere prestatario.numero-prestamo=prestamo.numero`-

prestamo and nombre-sucursal = ‘Perryridge’order by nombre-cliente

Se puede especificar el orden, desc para descendente o asc para ascendente. E.j. order by nombre-cliente desc

Page 109: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.109Database System Concepts

Operaciones sobre ConjuntosOperaciones sobre Conjuntos

Encuentre todos los clientes que tienen un prestamo, una cuenta o ambos

(select nombre-cliente from depositor)except(select nombre-cliente from prestatario)

(select nombre-cliente from depositor)intersect(select nombre-cliente from prestatario)

Encuentre todos los cleintes que tienen una cuenta y no tienen

prestamo.

(select nombre-cliente from depositor)union(select nombre-cliente from prestatario)

Encuentre todos los clientes que tienen un prestamo y una cuenta.

Page 110: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.110Database System Concepts

Funciones de AgragaciónFunciones de Agragación

Estas funciones toman un conjunto de valores como entrada y producen un único valor como salida.

avg: valor promediomin: valor mínimomax: valor máximosum: suma de valorescount: numero de valores

Page 111: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.111Database System Concepts

Aggregate Functions (Cont.)Aggregate Functions (Cont.)

Encuentre el promedio de saldos de las cuentas en la sucursal de Peryridge.

Encuentre el número de depositores en el banco.

Encuentre el número de tuplas en la relación cliente.

select avg (saldo)from cuentawhere nombre-sucursal = ‘Perryridge’

select count (*)from cliente

select count (distinct nombre-cliente)from depositor

Page 112: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.112Database System Concepts

VistasVistas

Provee un mecanispo para esconder ciertos datos a ciertos usuarios. Para crear una vista use la siguiente instrucción:

create view v as <expresión de consulta>

donde:<expresión de consulta> es una expresión legal

El nombre de la vista está representada por v

Page 113: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.113Database System Concepts

Modificando la Base de Datos - BorradoModificando la Base de Datos - Borrado

Borrar todas las c uentas de la sucursal Perryridge delete from cuenta

where nombre-sucursal = ‘Perryridge’

Borre todas las cuentas de cada sucursal localizxada en la ciudad de Needham.

delete from cuentawhere nombre-sucursal in (select nombre-sucursal

from sucursal where ciudad-sucursal = ‘Needham’)

delete from depositorwhere numero-cuenta in (select numero-cuenta

from sucursal, cuenta where ciudad-sucursal = ‘Needham’ and sucursal.nombre-sucursal =

cuenta.nombre- sucursal)

Page 114: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.114Database System Concepts

Modificacón de la Base de Datos Modificacón de la Base de Datos InserciónInserción

Adicionar una nueva tupla en cuenta

insert into cuentavalues (‘A-9732’, ‘Perryridge’,1200)

o su equivalente

insert into cuenta (nombre-sucursal, saldo, nombre-cuenta)values (‘Perryridge’, 1200, ‘A-9732’)

Adicionar una nueva tupla a cuenta con un saldo en nulo

insert into cuentavalues (‘A-777’,‘Perryridge’, null)

Page 115: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.115Database System Concepts

Modificación a la Base de Datos Modificación a la Base de Datos ActualizaciónActualización

Incremente el saldo de todas las cuentas que tienen saldo superior a $10,000 en un 6%, todos los otros ceciben un incremento del 5%.

Se escriben dos isntrucciones update:

update cuentaset saldo = salso 1.06where saldo > 10000

update cuentaset saldo = saldo 1.05where saldo 10000

El orden es importante

Se puede hacer usando la clausula case

Page 116: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.116Database System Concepts

El mismo query anterior

update cuenta

set saldo = case when saldo <= 10000 then saldo *1.05 else saldo * 1.06 end

Modificación a la Base de Datos Modificación a la Base de Datos ActualizaciónActualización

Page 117: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.117Database System Concepts

Update of a ViewUpdate of a View

Create a view of all loan data in loan relation, hiding the amount attribute

create view branch-loan asselect branch-name, loan-numberfrom loan

Add a new tuple to branch-loan

insert into branch-loanvalues (‘Perryridge’, ‘L-307’)

This insertion must be represented by the insertion of the tuple

(‘L-307’, ‘Perryridge’, null)

into the loan relation

Updates on more complex views are difficult or impossible to translate, and hence are disallowed.

Most SQL implementations allow updates only on simple views (without aggregates) defined on a single relation

Page 118: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.118Database System Concepts

TransaccionesTransacciones

Una transacción es una colección de operaciones que forman una única unidad lófica de trabajo. Una transacción es iniciada implícitamente y terminada por alguno de:

commit work: Hace todas las operaciones de la transacción permanentes en la base de datos

rollback work: deshace todas las actualizaciones realizadas por la transacción.

Ejemplo Tla transferencia de dinero de una cuenta a otra involucra dos pasos:

debitar de una cuenta y acreditar la otra

Si uno de estos pasos se realiza y el otro falla la base de datos queda en un estado inconsistente

Por tal razón ambos pasos se deben realizar o ninguno

Si un paso en una transacción falla, todo el trabajo realizada por ésta, debe ser deshecho por rollback work.

El Rollback de una transacción incompleta es realizado automáticamente en caso de fallas del sistema

Page 119: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.119Database System Concepts

Transacciones (Cont.)Transacciones (Cont.)

En la mayoría de los systemas de Bases de Datos, cada instrucción SQL que se ejecuta satisfactoriamente es automatocamente committed. Cada transacción consiste entonces de una simple instrucción

El commit automático se puede desactivar, permitiendo transacciones con múltiples instrucciones, pero la realización de esto depende del sistema de Bases de Datos

Una opción incorporada en SQL:1999: es encerrar las transacciones en: begin atomic … end

Page 120: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.120Database System Concepts

Creación de TablasCreación de Tablas

Una relación en SQL es definida usando la instrucción create table:

create table r (A1 D1, A2 D2, ..., An Dn,(ligadura de integridad1),...,(ligadura de integridadk))

r es el nombre de una relación

cada Ai es un nombre de atributo en el esquema de la relación r

Di ies el tipo de datos del atributo Ai

Ejemplo:

create table sucursal(nombre-sucursal char(15) not null,ciudad-sucursal char(30),activo integer)

Page 121: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.121Database System Concepts

Lugaduras de Integridad en la Creación Lugaduras de Integridad en la Creación de Tablasde Tablas

not null

primary key (A1, ..., An)

check (P), donde P es un predicado

Ejemplo:Declare nombre-sucursal en la tabla sucursal como clave primaria y asegure que el valor del activo no sea negativo.

create table sucursal(nombre-sucursal char(15), ciudad-sucursal char(30)activo integer,primary key (nombre-sucursal),check (activo >= 0))

La declaración de primary key automaticamente asegura que es not null en SQL-92, pero se necesita especificar en SQL-89

Page 122: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.122Database System Concepts

Borrar y Alterar el Esquema de la TablaBorrar y Alterar el Esquema de la Tabla

La instrucción drop table borra toda la información de la tabla en la base de datos.

La instrucción alter table es usada para adicionar un atributo en la relación.

alter table r add A D

donde A es el nombre del atributos a ser adicionado en la relación r y D es el dominio de A.

La instrucción alter table también puede ser usada para borrar un atributo en la relación

alter table r drop Adonde A es el nombre del atributo de la relación r Borrar atributos no es soportado por muchas based de datos

Page 123: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.123Database System Concepts

Ligaduras de los DominiosLigaduras de los Dominios

Las ligaduras de integridad proporcionan un medio de asegurar que las modificaciones hechas a la base de datos por los usuarios autirizados no provoque pérdidad de consistencia de los datos. Por lo tanto protejen a la base de datos contra los daños accidentales.

Ligaduras de Dominios es la forma más elemental de ligaduras de integridad.

Verifica los valores insertados en la base de datos, y asegura que las comparaciones realizadas en los queries tengan sentido.

Se pueden crear nuevos dominios con los tipos existentes E.j. create domain Pesos numeric(12, 2)

create domain Dolar numeric(12,2)

Page 124: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.124Database System Concepts

Ligaduras de Dominio (Cont.)Ligaduras de Dominio (Cont.)

La clausula check SQL-92 permite restringir los dominios: El uso de check asegura que un empleado tenga un salario igual o

mayor al salario mínimo.

create domain salario numeric(5,2)constraint minimo check(valor > = 360000.00)

El dominio tiene un constraint que asegura que el salario es igual o superior a 360000

Page 125: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.125Database System Concepts

Integridad ReferencialIntegridad Referencial

Asegura que los valores que aparecen en una relación para un conjunto de atributos dados, también aparezcan para para el conjunto de tatributos en otra relación. Ejemplo: Si “Perryridge” es el nombre d ela sucursal que aparece en

una de las tuplas en la relación cuenta, entonces existe una tupla en la relación sucursal para la sucursal “Perryridge”.

Page 126: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.126Database System Concepts

Integridad Referencial en SQLIntegridad Referencial en SQL

Las claves primarias, candidatas y forameas pueden ser especificadas en la clausula SQL create table: La clausula primary key lista los atributos que conforman la clave primaria.

La clausula unique key lista lista los atributos que conforman una clave candidata.

La clausula foreign key lista los atributos que conforman la clave foramea y el nombre de la relación que referencia.

Por defecto, una clave foranea referencia la clave primaria de la realación referenciada

foreign key (numero-cuenta) references cuenta

Forma corta de especificar una columna simple como clave foranea

numero-cuenta char (10) references cuenta

La columnas de referencia en la tabla especificada pueden ser referenciadas de forma explicita. Pero deben ser declaradas como claves primaria / candidata

foreign key (numero-cuenta) references cuenta(numero-cuenta)

Page 127: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.127Database System Concepts

Ejemplo de Integridad Referencial en Ejemplo de Integridad Referencial en SQLSQL

create table cliente(nombre-cliente char(20),calle-cliente char(30),ciudad-cleinte char(30),primary key (nombre-cliente))

create table sucursal(nombre-sucursal char(15),ciudad-sucursal char(30),activo integer,primary key (nombre-sucursal))

Page 128: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.128Database System Concepts

Acciones en Cascada en SQLAcciones en Cascada en SQL

create table cuenta

. . .foreign key(nombre-sucursal) references sucursal

on delete cascadeon update cascade

. . . )

Debido a la clausula on delete cascade, si se borra una tupla en sucursal, resulta en una violación de integridad, el borrado en cascada en la relación cuenta, borra las tuplas que se refieren a la sucursal que fue borrada

La actualización en cascada es similar

Page 129: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.129Database System Concepts

Cascading Actions in SQL (Cont.)Cascading Actions in SQL (Cont.)

Si existe un cambio en una clave foranea en multiples relaciones, y se ha especificado on delete cascade en cada dependencia, el borrado o actualización se propaga sobre toda la cadena.

Si se realiza un borrado, teniendo una actualización en cascada, se causa una violación de integridad y el systema aborta la transacción. Como resultado, todos los cambios causados por la transacción son

deshechos.

La integridad referencial se verifica al final de la transacción

Page 130: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.130Database System Concepts

DisparadorDisparador

Un disparador es una orden que el sistema ejecuta de manera automática como efecto secundario de la modificación de la base de datos.

Para diseñar un mecanismo disparados se debe: Especificar las condiciones en las que se va a ejecutar el

disparador.

Especificar las acciones que se van a realizar cuando se ejecute el disparador.

Page 131: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.131Database System Concepts

SecuritySecurity

Security - protection from malicious attempts to steal or modify data. Database system level

Authentication and authorization mechanisms to allow specific users access only to required data

We concentrate on authorization in the rest of this chapter

Operating system level

Operating system super-users can do anything they want to the database! Good operating system level security is required.

Network level: must use encryption to prevent

Eavesdropping (unauthorized reading of messages)

Masquerading (pretending to be an authorized user or sending messages supposedly from authorized users)

Page 132: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.132Database System Concepts

Security (Cont.)Security (Cont.)

Physical level

Physical access to computers allows destruction of data by intruders; traditional lock-and-key security is needed

Computers must also be protected from floods, fire, etc.

– More in Chapter 17 (Recovery)

Human level

Users must be screened to ensure that an authorized users do not give access to intruders

Users should be trained on password selection and secrecy

Page 133: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.133Database System Concepts

AutorizacionesAutorizaciones

Formas de autorizaciones en una base de datos:

Read - permite la consulta, pero no la modificación de

información.

Insert - permite la inserción de nueva información, pero no la modificación de la existente.

Update - permite modificaciones, pero no el borrado de datos.

Delete - permite el borrado de datos

Page 134: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.134Database System Concepts

Autorización (Cont.)Autorización (Cont.)

Formas de autorización de modificar el esquema de la base de datos:

Index - permite la creación y borrado de indices.

Resources - permite la creación de nuevas relaciones.

Alteration - permite la adición y borrado de atributos en una relación.

Drop - permite el borrado de relaciones.

Page 135: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.135Database System Concepts

Especificación de la Seguridad en SQLEspecificación de la Seguridad en SQL

La instrucción grant es usada para otorgar autorizaciones

grant <lista de privilegios>

on <nombre de vista o relación> to <lista de usuarios>

<lista de usuarios> es: el user-id

public,permite a todos los usuarios válidos los privilegios concedidos

Un rol

Conceder un privilegio sobre una vista no implica la concesión sobre la relación.

Quien concede un privilegio debe tener el privilegio que concede, o ser el administrador de la base de datos.

Page 136: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.136Database System Concepts

Privilegios en SQLPrivilegios en SQL

select: permite acceso de lectura a una relación,o la habilidad de realizar consultas con vistas

Ejemplo: conceder a los usuarios U1, U2, y U3 autorización select sobre la relación sucursal:

grant select on sucursal to U1, U2, U3

insert: la habilidad de insertar tuplas

update: la habilidad de actualización usando instrucciones SQL

delete: la habilidad de borrar tuplas

references: habilidad de declarar claves foráneas cuando se crea una relación.

usage: en SQL-92; autorizaciones de usar un dominio específico a un usuario

all privileges: forma corta de hacer referencia a todos los privilegios

Page 137: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.137Database System Concepts

Privilegio de Conceder PrivilegiosPrivilegio de Conceder Privilegios

with grant option: permite al usuario a quien se le concedió el privilegio de pasar el privbilegio a otro usuario. Ejemplo:

grant select on sucursal to U1 with grant option

gda a U1 el privilegio select sobre sucursal y permite concederselo a otros usuarios

Page 138: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.138Database System Concepts

RolesRoles Los roles permiten definir privilegios comunes para una clase especial

de usuarios que conforman el rol

Los privilegios pueden ser concedidos o revocados al rol, como a un usuario

Los roles pueden ser asignados a los usuarios, asi tengan otros roles

SQL:1999 soporta roles

create role cajerocreate role administrador

grant select on sucursal to cajerogrant update (saldo) on cuenta to cajerogrant all privileges on cuenta to administrador

grant cajero to administrador

grant cajero to juan, jaimegrant administrador to alvaro

Page 139: Introduccion a bases de datos

©Silberschatz, Korth and Sudarshan1.139Database System Concepts

Revocando Autorizaciones en SQLRevocando Autorizaciones en SQL

La instrucción revoke es usada para revocar las autorizaciones concedidas.

revoke<lista de privilegios>

on <nombre de la relación o vista> from <lista de usuarios> [restrict|cascade]

Ejemplo:

revoke select on sucursal from U1, U2, U3 cascade

La revocación d eprivilegios de un usuario puede causar que otros usuarios también pierdan el privilegioa, referidos como una reviocación en cascada.

Se puede prevenir la especificación de cascada usando la especificación restrict:

revoke select on sucursal from U1, U2, U3 restrict

con restrict, la instricción revoke falla al realizar la revocación en cascada.