Title: Sistema Manejador de Bases de Datos SMBD
1Sistema Manejador de Bases de 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
2Propósito de un sistema de Bases de Datos
- 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 gt 0)
es parte del codigo del programa - Dificultad en cambiar o adicionar nuevas
ligaduras de integridad
3Purpose 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
4Niveles 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
5View of Data
An architecture for a database system
6Ejemplares 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
7Modelo 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
8Modelo Entidad - Relación
- Ejemplo de un esquema en un modelo entidad -
relación
9Modelo 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.
10Modelo Relacional
Atributos
- Ejemplo de datos tabulados en un modelo relacional
Calle-cliente
Numero-cuenta
Nombre-cliente
Ciudad-cliente
Cliente_id
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
A-101 A-215 A-201 A-217 A-201
Palo Alto Rye Palo Alto Harrison Rye
11Un Ejemplo de Base de Dato Relacional
12Lenguaje de Definición de Datos (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)
13Lenguaje de Manipulación de Datos (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
14SQL
- SQL widely used non-procedural language
- E.g. find the name of the customer with
customer-id 192-83-7465 select
customer.customer-name from
customer where 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.balance from depositor,
account where 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
15Usuarios 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
16Administrador 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
17Administració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.
18Gestió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
19Estructura del Sistema
20Modelo 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
21Conjunto 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 - Ejemploconjunto de todas las personas, empresas,
arboles
22Conjunto de Entidades Clientes y Prestamos
cliente-id cliente cliente-
cliente- prestamo- monto
nombre calle ciudad
numero
23Atributos
- 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)
24Atributos Compuestos
25Conjunto 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
26Conjunto de Relaciones Prestatario
27Conjunto de Relaciones (Cont.)
28Grado 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
29Correspondencia 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
30Correspondencia de Cardinalidad
Uno a uno
Uno a muchos
31Correspondencia de Cardinalidad
Muchos a uno
Muchos a muchos
32Mapping 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
33Diagramas 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
34Diagrama E-R con Atributos Compuestos,
Multivalorados y Derivados
35Conjunto de Relaciones con Atributos
36Roles
- 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
37Restricciones 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
38Relació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.
39Relaciones 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.
40Relaciones 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
41Notación Alternativa para Límites de Cardinalidad
- Se pueden expresar límites de cardinalidad
42Claves
- 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.
43Claves 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.
44Diagrama E-R con Relaciones Ternarias
45Convirtiendo una Relación No-Binaria en forma
Binaria
- En general, cualquier relacion no-binaria puede
ser representada usando relaciones binarias
creando un conjunto de entidades artificial
46Especializació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.
47Ejemplo de Especialización
48Resumen de simbolos usados en la notación E-R
49Resumen de Simbolos (Cont.)
50Notaciones Alternativas para E-R
51Reducció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
52Modelo 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
53Ejemplo de una Relación
54Tipos 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
55Instancia 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
atributos (o columnas)
Cliente-nombre
Cliente-calle
Cliente-ciudad
Jones Smith Curry Lindsay
Main North North Park
Harrison Rye Rye Pittsfield
tuplas (o filas)
clientes
56Base 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
57La Relación Cliente
58La Relación Depositor
59Diagrama E-R para un Banco
60Diagrama de un Esquema de un Banco
61Lenguaje 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
62Algebra 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.
63Ejemplo de la Operación de Selección
A
B
C
D
? ? ? ?
? ? ? ?
1 5 12 23
7 7 3 10
A
B
C
D
? ?
? ?
1 23
7 10
64Operació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 - ltatributogt op ltatributogt o ltconstantegt
- donde op es uno de , ?, gt, ?. lt. ?
- Ejemplo de selección ? sucursal-nombrePerryri
dge(cuenta)
65Ejemplo de la operación de Proyección
A
B
C
? ? ? ?
10 20 30 40
1 1 1 2
A
C
A
C
? ? ? ?
1 1 1 2
? ? ?
1 1 2
66Operació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)
67Ejemplo de la Operación Unión
A
B
A
B
? ? ?
1 2 1
? ?
2 3
s
r
r ? s
A
B
? ? ? ?
1 2 1 3
68Operació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 loan 3. r y s pueden ser relaciones
temporales que sean resultado de expresiones del
álgebra relacional. E.j. - ?customer-name (depositor) ? ?customer-name
(borrower)
69Ejemplo de Operación Diferencia de Conjunto
A
B
A
B
? ? ?
1 2 1
? ?
2 3
s
r
r s
A
B
? ?
1 1
70Operació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
71Ejemplo de la Operación Producto Cartesiano
A
B
C
D
E
Relationes r, s
? ?
1 2
? ? ? ?
10 10 20 10
a a b b
r
s
r x s
A
B
C
D
E
? ? ? ? ? ? ? ?
1 1 1 1 2 2 2 2
? ? ? ? ? ? ? ?
10 10 20 10 10 10 20 10
a a b b a a b b
72Operació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.
73Composición de Operaciones
- Se pueden construir expresiones usando multiples
operaciones - Ejemplo ?AC(r x s)
- r x s
- ?AC(r x s)
A
B
C
D
E
? ? ? ? ? ? ? ?
1 1 1 1 2 2 2 2
? ? ? ? ? ? ? ?
10 10 20 10 10 10 20 10
a a b b a a b b
A
B
C
D
E
? ? ?
? ? ?
10 20 20
a a b
1 2 2
74Opertació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.
75Operaciones Adicionales
- Se definen operaciones que no adicionan poder al
algebra relacioneal pero simplifican alfunas
consultas. -
- Intersección
- Reunión Natural
- División
- Asignación
76Operació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)
77Ejemplo de Operación de Intersección
A B
A B
? ? ?
1 2 1
? ?
2 3
r
s
A B
? 2
78Operació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))
79Ejemplo de una Operación de Reunión Natural
B
D
E
A
B
C
D
1 3 1 2 3
a a a b b
? ? ? ? ?
? ? ? ? ?
1 2 4 1 2
? ? ? ? ?
a a b a b
r
s
A
B
C
D
E
? ? ? ? ?
1 1 1 1 2
? ? ? ? ?
a a a a b
? ? ? ? ?
80Operación de División
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 ? ? R-S(r) ? ? u ? s ( tu ? r
)
81Ejemplo de la Operación de División
A
B
Relations r, s
B
? ? ? ? ? ? ? ? ? ? ?
1 2 3 1 1 1 3 4 6 1 2
1 2
s
r ? s
A
r
? ?
82Operació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.
83Generalized 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)
84Operaciones y Funciones de Agragación
- Funciones de Agregación toma una colección de
valores y retorna un solo valos como resultado. - avg valor promedio min valor mínimo max
valor máximo sum suma de valores count
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
85Ejemplo de Operación de Agregación
A
B
C
? ? ? ?
? ? ? ?
7 7 3 10
sum-C
g sum(c) (r)
27
86Ejemplo de Operación de Agregación
- Relación account agrupada por branch-name
branch-name
account-number
balance
Perryridge Perryridge Brighton Brighton Redwood
A-102 A-201 A-217 A-215 A-222
400 900 750 750 700
branch-name g sum(balance) (account)
branch-name
balance
Perryridge Brighton Redwood
1300 1500 700
87Funció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)
88Modificació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.
89Borrado
- 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.
90Ejemplos de Borrado
- Borrar todas los registros de cuentas de la
sucursal Perryridge.
- cuenta ? cuenta ??nombre-sucursal
Perryridge (cuenta)
- Borrar todos los registros cuyo monto esté entre
0 y 50
prestamo ? prestamo ??monto ??0?and monto ? 50
(prestamo)
91Insercion
- 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.
92Ejemplos 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)
93Actualizació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)
- Se desea incrementar el 5 de interés en todos
los saldos de las cuentas.
94Vistas
- 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.
95Definición de Vista
- Una vista es definida usando la expresión create
view - create view v as lt query gt
- donde ltquerygt 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.
96Ejemplos de Vista
- Considere la vista (llamada todos-clientes) que
consiste en las sucursales y sus clientes.
97E-R Diagram
98Estructura 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.
99La 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-sucursal from prestamo - En el álgebra relacional la consulta seria
- ?nombre-sucursal(prestamo)
100La 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-sucursal from prestamo
- La palabra all especifica que los duplicados no
se eliminan. - select all nombre-sucursalk from prestamo
101La 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.
102La 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 gt 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.
103La 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 prestamo where monto between 90000 and
100000
104La 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
, monto from prestatario, prestamo where
prestatario.numero-prestamo prestamo.numero-pres
tamo - and nombre-sucursal Perryridge
105La 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
106Variable 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 nombre-cleinte, T.numero de prestamo,
S.monto from prestatario as T, prestamo
as S where T.numero-prestamo
S.numero-prestamo
- Obtenga el nombre de todas las sucursales que
poseen un activo mayor que al menos una sucursal
situada en Brooklyn.
- select distinct T.nombre-sucursal from
sucursal as T, sucursal as S where T.activo gt
S.activos and S.ciudad-sucursal Brooklyn
107Operaciones Sobre Cadenas de Caracteres
- 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-cliente from 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.
108Ordenando la Presentación de las Tuplas
- Listar en orden alfabetico los nombres de todos
los clientes que tienen un prestamo en la
sucursal de Perryridge - select distinct nombre-cliente from
prestatario, prestamo where prestatario.numero-pr
estamoprestamo.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
109Operaciones sobre Conjuntos
- Encuentre todos los clientes que tienen un
prestamo, una cuenta o ambos
(select nombre-cliente from depositor) union (se
lect nombre-cliente from prestatario)
- Encuentre todos los clientes que tienen un
prestamo y una cuenta.
(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) except (s
elect nombre-cliente from prestatario)
110Funciones de Agragación
- Estas funciones toman un conjunto de valores como
entrada y producen un único valor como salida. - avg valor promedio min valor mínimo max
valor máximo sum suma de valores count
numero de valores
111Aggregate Functions (Cont.)
- Encuentre el promedio de saldos de las cuentas en
la sucursal de Peryridge.
select avg (saldo) from cuenta where
nombre-sucursal 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 nombre-cliente) from
depositor
112Vistas
- Provee un mecanispo para esconder ciertos datos a
ciertos usuarios. Para crear una vista use la
siguiente instrucción
create view v as ltexpresión de consultagt
- donde
- ltexpresión de consultagt es una expresión legal
- El nombre de la vista está representada por v
113Modificando 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- suc
ursal)
114Modificacón de la Base de Datos Inserción
- Adicionar una nueva tupla en cuenta
- insert into cuenta values (A-9732,
Perryridge,1200)o su equivalenteinsert 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 cuenta values (A-777,Perryridge
, null)
115Modificación a la Base de Datos Actualizació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 cuenta set saldo salso ? 1.06 where
saldo gt 10000 - update cuenta set saldo saldo ? 1.05 where
saldo ? 10000 - El orden es importante
- Se puede hacer usando la clausula case
116Modificación a la Base de Datos Actualización
- El mismo query anterior
- update cuenta
- set saldo case
when saldo lt 10000 then saldo 1.05
else saldo 1.06
end
117Update of a View
- Create a view of all loan data in loan relation,
hiding the amount attribute - create view branch-loan as select
branch-name, loan-number from loan - Add a new tuple to branch-loan
- insert into branch-loan values (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
118Transacciones
- 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
119Transacciones (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 SQL1999 es encerrar
las transacciones en begin atomic
end
120Creació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), ..., (liga
dura 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)
121Lugaduras de Integridad en la Creación de Tablas
- not null
- primary key (A1, ..., An)
- check (P), donde P es un predicado
EjemploDeclare 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, pr
imary key (nombre-sucursal), check (activo gt
0))
La declaración de primary key automaticamente
asegura que es not null en SQL-92, pero se
necesita especificar en SQL-89
122Borrar 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
123Ligaduras 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)
124Ligaduras 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 gt 360000.00) - El dominio tiene un constraint que asegura que el
salario es igual o superior a 360000
125Integridad 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.
126Integridad 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)
127Ejemplo de Integridad Referencial en SQL
- create table cliente(nombre-cliente char(20),cal
le-cliente char(30),ciudad-cleinte char(30),prim
ary key (nombre-cliente)) - create table sucursal(nombre-sucursal char(15),c
iudad-sucursal char(30),activo integer,primary
key (nombre-sucursal))
128Acciones en Cascada en SQL
- create table cuenta
- . . . foreign key(nombre-sucursal) 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
129Cascading 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
130Disparador
- 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.
131Security
- 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)
132Security (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
133Autorizaciones
- 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
134Autorizació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.
135Especificación de la Seguridad en SQL
- La instrucción grant es usada para otorgar
autorizaciones - grant ltlista de privilegiosgt
- on ltnombre de vista o relacióngt to ltlista de
usuariosgt - ltlista de usuariosgt 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.
136Privilegios 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
137Privilegio 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
138Roles
- 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 - SQL1999 soporta roles
- create role cajerocreate role
administrador - grant select on sucursal to cajerogrant
update (saldo) on cuenta to cajerogrant all
privileges on cuenta to administradorgrant
cajero to administradorgrant cajero to juan,
jaimegrant administrador to alvaro
139Revocando Autorizaciones en SQL
- La instrucción revoke es usada para revocar las
autorizaciones concedidas. - revokeltlista de privilegiosgt
- on ltnombre de la relación o vistagt from ltlista de
usuariosgt restrictcascade - 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.