Professional Documents
Culture Documents
(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
■ 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
■ 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
■ 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
Ejemplo de un esquema en un modelo entidad relación
■ Modelo ER 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 ER normalmemte es
convertido en un diseño de modelo Relacional, el cual es usado
para almacenamiento y procesamiento.
192837465 Johnson
Alma Palo Alto A101
019283746 Smith
North Rye A215
192837465 Johnson
Alma Palo Alto A201
321123123 Jones
Main Harrison A217
019283746 Smith
North Rye A201
■ SQL: widely used nonprocedural language
★ E.g. find the name of the customer with customerid 192837465
select customer.customername
from customer
where customer.customerid = ‘192837465’
★ E.g. find the balances of all accounts held by the customer with
customerid 192837465
select account.balance
from depositor, account
where depositor.customerid = ‘192837465’ and
depositor.accountnumber = account.accountnumber
■ 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
■ 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
■ 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
■ 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.
■ 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
■ Dominio – conjunto de valores permitidos para cada atributo
■ Tipos de atributos:
★ Simples y compuestos
★ Univalorados y multivalorados
✔ E.j. multivalorado : numerotelefono
★ Derivados
✔ Puede ser derivado de valores de otros atributos o entidades
✔ E.j. edad, dada la fecha de nacimiento
■ Una relación es una asociación etre diferentes entidades
Ejemplo:
Ortiz posee A102
entidad cliente conjunto relaciones entidad cuenta
■ Una relación también puede tener atributos descriptivos
■ 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
■ 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
Uno a uno Uno a muchos
Muchos a uno Muchos a muchos
■ 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
Database System Concepts 1.33 ©Silberschatz, Korth and Sudarshan
Diagrama ER con Atributos Compuestos,
Multivalorados y Derivados
■ 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.
■ 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.
■ Un cliente es asociado con varios (posiblemente 0)
prestamos vía prestatario
■ Un prestamo es asociado con varios (posiblemente 0)
clientes vía prestatario
■ Se pueden expresar límites de cardinalidad
■ 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)
★ Clienteid es llave candidata para cliente
★ cuentanumero es llave candidata para cuenta
■ Aunque pueden existir varias claves candidatas, una de
ellas es seleccionada para ser llave primaria.
■ La combinación de las claves primarias de los conjuntos de
relaciones participantes forman una super clave del conjunto de
relaciones.
★ (clienteid, cuentanumero) 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.
■ En general, cualquier relacion nobinaria puede ser representada usando
relaciones binarias creando un conjunto de entidades artificial
■ 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.
■ 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
■ 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
atributos
(o columnas)
Clientenombre Clientecalle Clienteciudad
clientes
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, clientenombre, ..)
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
■ Lenguaje en el cual los usuarios hacen requisitos de información
a la base de datos.
■ Categorias de los lenguajes
★ procedimental
★ Noprocedimental
■ “Puros” languajes:
★ Algebra Relacional
★ Tuplas del Cálculo Relacional
★ Dominio del Cálculo 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.
• Relación r A B C D
α α 1 7
α β 5 7
β β 12 3
β β 23 10
∀σA=B ^ D > 5 (r)
A B C D
α α 1 7
β β 23 10
■ 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:
σ sucursalnombre=“Perryridge”(cuenta)
α 10 1
α 20 1
β 30 1
β 40 2
■ ∏A,C (r) A C A C
α 1 α 1
α 1 = β 1
β 1 β 2
β 2
■ 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 sucursalnombre de cuenta
∏accountnumber, balance (cuenta)
■ Relaciónes r, s:
A B A B
α 1 α 2
α 2 β 3
β 1 s
r
r ∪ s: A B
α 1
α 2
β 1
β 3
■ 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 loan
3. r y s pueden ser relaciones temporales que sean resultado
de expresiones del álgebra relacional. E.j.
∏customername (depositor) ∪ ∏customername (borrower)
α 1 α 2
α 2 β 3
β 1 s
r
r – s: A B
α 1
β 1
■ 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
α 1 α 10 a
β 10 a
β 2 β 20 b
r γ 10 b
s
r x s:
A B C D E
α 1 α 10 a
α 1 β 10 a
α 1 β 20 b
α 1 γ 10 b
β 2 α 10 a
β 2 β 10 a
β 2 β 20 b
β 2 γ 10 b
■ Se pueden construir expresiones usando multiples operaciones
■ Ejemplo σA=C(r x s)
■ r x s A B C D E
α 1 α 10 a
α 1 β 10 a
α 1 β 20 b
α 1 γ 10 b
β 2 α 10 a
β 2 β 10 a
β 2 β 20 b
β 2 γ 10 b
■ σA=C(r x s)
A B C D E
α 1 α 10 a
β 2 β 20 a
β 2 β 20 b
Database System Concepts 1.73 ©Silberschatz, Korth and Sudarshan
Opertación de Renombramiento
■ Allows us to name, and therefore to refer to, the results of
relationalalgebra 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.
Se definen operaciones que no adicionan poder al algebra
relacioneal pero simplifican alfunas consultas.
■ Intersección
■ Reunión Natural
■ División
■ Asignación
r s
■ r ∩ s A B
α 2
■ 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))
A B C D B D E
α 1 α a 1 a α
β 2 γ a 3 a β
γ 4 β b 1 a γ
α 1 γ a 2 b δ
δ 2 β b 3 b ∈
r s
r s
A B C D E
α 1 α a α
α 1 α a γ
α 1 γ a α
α 1 γ a γ
δ 2 β b δ
r÷s
■ 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 ∈ ∏ RS(r) ∧ ∀ u ∈ s ( tu ∈ r ) }
Relations r, s: A B B
α 1
1
α 2
α 3 2
β 1 s
γ 1
δ 1
δ 3
δ 4
∈ 6
∈ 1
β 2
r ÷ s: A r
α
β
■ La operación de asignación (←) prevee una conveniente forma
de expresar queries complejos.
■ Ejemplo: Escribir r ÷ s como s
temp1 ← ∏RS (r)
temp2 ← ∏RS ((temp1 x s) – ∏RS,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.
■ 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 infocredito(nombrecliente, limite, saldo
credit), encuentre que tanto peden las personas gastar:
∏nombrecleinte, limite – saldocredito (infocredito)
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
α α 7
α β 7
β β 3
β β 10
sumC
g sum(c) (r)
27
■ Relación account agrupada por branchname:
■ 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
■ 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.
■ Borrar todas los registros de cuentas de la sucursal
Perryridge.
cuenta ← cuenta – σ nombresucursal = “Perryridge” (cuenta)
■ Borrar todos los registros cuyo monto esté entre 0 y 50
■ 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.
■ Inserte información en la base de datos especificando que
Smith tieme $1200 ien la cuenta A973 en la sucursal
Perryridge.
cuenta ← cuenta ∪ {(“Perryridge”, A973, 1200)}
depositor ← depositor ∪ {(“Smith”, A973)}
■ 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)
■ Se desea incrementar el 5% de interés en todos los saldos de las
cuentas.
cuenta ← ∏ AN, BN, BAL * 1.05 (cuenta)
donde NC, NS y SAL son numerocuenta, nombresucursal and
saldo, respectivamente.
■ 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.
create view todosclientes as
∏nombresucursal, nomcliente (depositor account)
∪ ∏nombresucursal, nomcleinte (prestatario prestamo)
■ 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.
■ 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 nombresucursal
from prestamo
■ En el álgebra relacional la consulta seria:
∏nombresucursal(prestamo)
■ 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 nombresucursal
from prestamo
■ La palabra all especifica que los duplicados no se eliminan.
select all nombresucursalk
from prestamo
■ 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 numeroprestamo, nombresucursal, monto ∗ 100
from prestamo
devolverá una relación igual a la de prestamo, pero con el saldo
multiplicado por 100.
■ 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 numeroprestamo
from prestamo
where nombresucursal = ‘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.
■ 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 numeroprestamo
from prestamo
where monto between 90000 and 100000
■ 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 nombrecliente, prestatario.numeroprestamo, monto
from prestatario, prestamo
where prestatario.numeroprestamo = prestamo.numeroprestamo
and nombresucursal = ‘Perryridge’
■ SQL permite renombrar las relaciones y atributos usando la
clausula as :
nombreviejo as nombrenuevo
■ Encuentre el nombre, numero de prestamo y monto del prestamo
de todos los clientes; renombre el nombre de la columna numero
prestamo como prestamoid.
select nombrecleinte, prestatario.numeroprestamo as prestamo
id, monto
from prestatario, prestamo
where prestatario.numeroprestamo = prestamo.numeroprestamo
■ 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 nombrecleinte, T.numero de prestamo, S.monto
from prestatario as T, prestamo as S
where T.numeroprestamo = S.numeroprestamo
■ Obtenga el nombre de todas las sucursales que poseen un
activo mayor que al menos una sucursal situada en ‘Brooklyn.
select distinct T.nombresucursal
from sucursal as T, sucursal as S
where T.activo > S.activos and S.ciudadsucursal = ‘Brooklyn’
■ Encuentre todos los clientes que tienen un prestamo y una cuenta.
(select nombrecliente from depositor)
intersect
(select nombrecliente from prestatario)
■ Encuentre todos los cleintes que tienen una cuenta y no tienen
prestamo.
(select nombrecliente from depositor)
except
(select nombrecliente from prestatario)
■ Encuentre el promedio de saldos de las cuentas en la sucursal
de Peryridge.
select avg (saldo)
from cuenta
where nombresucursal = ‘Perryridge’
■ Encuentre el número de tuplas en la relación cliente.
select count (*)
from cliente
■ Encuentre el número de depositores en el banco.
select count (distinct nombrecliente)
from depositor
■ 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
insert into cuenta (nombresucursal, saldo, nombrecuenta)
values (‘Perryridge’, 1200, ‘A9732’)
■ Adicionar una nueva tupla a cuenta con un saldo en nulo
insert into cuenta
values (‘A777’,‘Perryridge’, null)
update cuenta
set saldo = saldo ∗ 1.05
where saldo ≤ 10000
★ El orden es importante
★ Se puede hacer usando la clausula case
■ El mismo query anterior
update cuenta
set saldo = case
when saldo <= 10000 then saldo *1.05
else saldo * 1.06
end
■ 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
Database System Concepts 1.118 ©Silberschatz, Korth and Sudarshan
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
■ 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
(nombresucursal char(15) not null,
ciudadsucursal char(30),
activo integer)
Database System Concepts 1.120 ©Silberschatz, Korth and Sudarshan
Lugaduras de Integridad en la Creación
de Tablas
■ not null
■ primary key (A1, ..., An)
■ check (P), donde P es un predicado
Ejemplo:Declare nombresucursal en la tabla sucursal
como clave primaria y asegure que el valor del activo no
sea negativo.
create table sucursal
(nombresucursal char(15),
ciudadsucursal char(30)
activo integer,
primary key (nombresucursal),
check (activo >= 0))
La declaración de primary key automaticamente asegura
que es not null en SQL92, pero se necesita
especificar en SQL89
Database System Concepts 1.121 ©Silberschatz, Korth and Sudarshan
Borrar 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 A
donde A es el nombre del atributo de la relación r
★ Borrar atributos no es soportado por muchas based de datos
■ 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)
■ La clausula check SQL92 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
■ 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”.
create table cuenta
. . .
foreign key(nombresucursal) references sucursal
on delete cascade
on 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
■ 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
■ 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.
■ 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 superusers 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)
★ Physical level
✔ Physical access to computers allows destruction of data by
intruders; traditional lockandkey 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
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
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.
■ 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 userid
★ 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.
■ 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 SQL92; autorizaciones de usar un dominio específico a
un usuario
■ all privileges: forma corta de hacer referencia a todos los 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
grant select on sucursal to cajero
grant update (saldo) on cuenta to cajero
grant all privileges on cuenta to administrador
grant cajero to administrador
grant cajero to juan, jaime
Database System Concepts
grant administrador to alvaro
1.138 ©Silberschatz, Korth and Sudarshan
Revocando 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.
Database System Concepts 1.139 ©Silberschatz, Korth and Sudarshan