introduccion a bases de datos
TRANSCRIPT
©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
©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
©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
©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
©Silberschatz, Korth and Sudarshan1.5Database System Concepts
View of DataView of Data
An architecture for a database system
©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
©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
©Silberschatz, Korth and Sudarshan1.8Database System Concepts
Modelo Entidad - RelaciónModelo Entidad - Relación
Ejemplo de un esquema en un modelo entidad - relación
©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.
©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
©Silberschatz, Korth and Sudarshan1.11Database System Concepts
Un Ejemplo de Base de Dato RelacionalUn Ejemplo de Base de Dato Relacional
©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)
©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
©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
©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
©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
©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.
©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
©Silberschatz, Korth and Sudarshan1.19Database System Concepts
Estructura del SistemaEstructura del Sistema
©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
©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
©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
©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)
©Silberschatz, Korth and Sudarshan1.24Database System Concepts
Atributos CompuestosAtributos Compuestos
©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
©Silberschatz, Korth and Sudarshan1.26Database System Concepts
Conjunto de Relaciones PrestatarioConjunto de Relaciones Prestatario
©Silberschatz, Korth and Sudarshan1.27Database System Concepts
Conjunto de Relaciones (Cont.)Conjunto de Relaciones (Cont.)
©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
©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
©Silberschatz, Korth and Sudarshan1.30Database System Concepts
Correspondencia de CardinalidadCorrespondencia de Cardinalidad
Uno a uno Uno a muchos
©Silberschatz, Korth and Sudarshan1.31Database System Concepts
Correspondencia de CardinalidadCorrespondencia de Cardinalidad
Muchos a uno Muchos a muchos
©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
©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
©Silberschatz, Korth and Sudarshan1.34Database System Concepts
Diagrama E-R con Atributos Compuestos, Diagrama E-R con Atributos Compuestos, Multivalorados y DerivadosMultivalorados y Derivados
©Silberschatz, Korth and Sudarshan1.35Database System Concepts
Conjunto de Relaciones con AtributosConjunto de Relaciones con Atributos
©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
©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
©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.
©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.
©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
©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
©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.
©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.
©Silberschatz, Korth and Sudarshan1.44Database System Concepts
Diagrama E-R con Relaciones TernariasDiagrama E-R con Relaciones Ternarias
©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
©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.
©Silberschatz, Korth and Sudarshan1.47Database System Concepts
Ejemplo de EspecializaciónEjemplo de Especialización
©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
©Silberschatz, Korth and Sudarshan1.49Database System Concepts
Resumen de Simbolos (Cont.)Resumen de Simbolos (Cont.)
©Silberschatz, Korth and Sudarshan1.50Database System Concepts
Notaciones Alternativas para E-RNotaciones Alternativas para E-R
©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
©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
©Silberschatz, Korth and Sudarshan1.53Database System Concepts
Ejemplo de una RelaciónEjemplo de una Relación
©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
©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)
©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
©Silberschatz, Korth and Sudarshan1.57Database System Concepts
La Relación ClienteLa Relación Cliente
©Silberschatz, Korth and Sudarshan1.58Database System Concepts
La Relación DepositorLa Relación Depositor
©Silberschatz, Korth and Sudarshan1.59Database System Concepts
Diagrama E-R para un BancoDiagrama E-R para un Banco
©Silberschatz, Korth and Sudarshan1.60Database System Concepts
Diagrama de un Esquema de un BancoDiagrama de un Esquema de un Banco
©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
©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.
©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
©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)
©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)
©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)
©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
©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)
©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
©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
©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
©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.
©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
©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.
©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
©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)
©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
©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))
©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
©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
©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
©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.
©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)
©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
©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
©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
©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)
©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.
©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.
©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)
©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.
©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)}
©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.
©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.
©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.
©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)
©Silberschatz, Korth and Sudarshan1.97Database System Concepts
E-R DiagramE-R Diagram
©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.
©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)
©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
©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.
©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.
©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
©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’
©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
©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
©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.
©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
©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.
©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
©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
©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
©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)
©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)
©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
©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
©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
©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
©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
©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)
©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
©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
©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)
©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
©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”.
©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)
©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))
©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
©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
©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.
©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)
©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
©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
©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.
©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.
©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
©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
©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
©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.