You are on page 1of 139

Sistema 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

Database System Concepts 1.1 ©Silberschatz, Korth and Sudarshan


Propó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 > 0) es parte del 
codigo del programa
✔ Dificultad en cambiar o adicionar nuevas ligaduras de 
integridad

Database System Concepts 1.2 ©Silberschatz, Korth and Sudarshan


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

Database System Concepts 1.3 ©Silberschatz, Korth and Sudarshan


Niveles 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

Database System Concepts 1.4 ©Silberschatz, Korth and Sudarshan


View of Data
An architecture for a database system 

Database System Concepts 1.5 ©Silberschatz, Korth and Sudarshan


Ejemplares 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

Database System Concepts 1.6 ©Silberschatz, Korth and Sudarshan


Modelo 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

Database System Concepts 1.7 ©Silberschatz, Korth and Sudarshan


Modelo Entidad ­ Relación

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

Database System Concepts 1.8 ©Silberschatz, Korth and Sudarshan


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.

Database System Concepts 1.9 ©Silberschatz, Korth and Sudarshan


Modelo Relacional
Atributos
■ Ejemplo de datos tabulados en un modelo relacional

Cliente_id Nombre­cliente Calle­cliente Ciudad­cliente Numero­cuenta

192­83­7465 Johnson
Alma Palo Alto A­101
019­28­3746 Smith
North Rye A­215
192­83­7465 Johnson
Alma Palo Alto A­201
321­12­3123 Jones
Main Harrison A­217
019­28­3746 Smith
North Rye A­201

Database System Concepts 1.10 ©Silberschatz, Korth and Sudarshan


Un Ejemplo de Base de Dato Relacional

Database System Concepts 1.11 ©Silberschatz, Korth and Sudarshan


Lenguaje 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)

Database System Concepts 1.12 ©Silberschatz, Korth and Sudarshan


Lenguaje 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

Database System Concepts 1.13 ©Silberschatz, Korth and Sudarshan


SQL

■ 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

Database System Concepts 1.14 ©Silberschatz, Korth and Sudarshan


Usuarios 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

Database System Concepts 1.15 ©Silberschatz, Korth and Sudarshan


Administrador 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

Database System Concepts 1.16 ©Silberschatz, Korth and Sudarshan


Administració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.

Database System Concepts 1.17 ©Silberschatz, Korth and Sudarshan


Gestió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

Database System Concepts 1.18 ©Silberschatz, Korth and Sudarshan


Estructura del Sistema 

Database System Concepts 1.19 ©Silberschatz, Korth and Sudarshan


Modelo 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

Database System Concepts 1.20 ©Silberschatz, Korth and Sudarshan


Conjunto 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

Database System Concepts 1.21 ©Silberschatz, Korth and Sudarshan


Conjunto de Entidades Clientes y 
Prestamos
cliente­id          cliente    cliente­     cliente­              prestamo­  monto
                        nombre     calle       ciudad                 numero

Database System Concepts 1.22 ©Silberschatz, Korth and Sudarshan


Atributos
■ Una entidad es representada por un conjunto de atributos, los 
cuales describen las propiedades de todos los miembros de 
unconjunto de entidades.
Ejemplo: 
clienter = (cliente­id, cliente­nombre,
     cliente­calle, cliente­ciudad)
prestamo = (prestamo­numerp, monto)

■ 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

Database System Concepts 1.23 ©Silberschatz, Korth and Sudarshan


Atributos Compuestos

Database System Concepts 1.24 ©Silberschatz, Korth and Sudarshan


Conjunto 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

Database System Concepts 1.25 ©Silberschatz, Korth and Sudarshan


Conjunto de Relaciones Prestatario

Database System Concepts 1.26 ©Silberschatz, Korth and Sudarshan


Conjunto de Relaciones (Cont.)

Database System Concepts 1.27 ©Silberschatz, Korth and Sudarshan


Grado 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

Database System Concepts 1.28 ©Silberschatz, Korth and Sudarshan


Correspondencia 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 

Database System Concepts 1.29 ©Silberschatz, Korth and Sudarshan


Correspondencia de Cardinalidad

Uno a uno Uno a muchos

Database System Concepts 1.30 ©Silberschatz, Korth and Sudarshan


Correspondencia de Cardinalidad 

Muchos a uno Muchos a muchos

Database System Concepts 1.31 ©Silberschatz, Korth and Sudarshan


Mapping 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

Database System Concepts 1.32 ©Silberschatz, Korth and Sudarshan


Diagramas 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
Database System Concepts 1.33 ©Silberschatz, Korth and Sudarshan
Diagrama E­R con Atributos Compuestos, 
Multivalorados y Derivados

Database System Concepts 1.34 ©Silberschatz, Korth and Sudarshan


Conjunto de Relaciones con Atributos

Database System Concepts 1.35 ©Silberschatz, Korth and Sudarshan


Roles
■ 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

Database System Concepts 1.36 ©Silberschatz, Korth and Sudarshan


Restricciones 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

Database System Concepts 1.37 ©Silberschatz, Korth and Sudarshan


Relació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.

Database System Concepts 1.38 ©Silberschatz, Korth and Sudarshan


Relaciones 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. 

Database System Concepts 1.39 ©Silberschatz, Korth and Sudarshan


Relaciones 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

Database System Concepts 1.40 ©Silberschatz, Korth and Sudarshan


Notación Alternativa para Límites de 
Cardinalidad

■ Se pueden expresar límites de cardinalidad

Database System Concepts 1.41 ©Silberschatz, Korth and Sudarshan


Claves

■ 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.

Database System Concepts 1.42 ©Silberschatz, Korth and Sudarshan


Claves 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.

Database System Concepts 1.43 ©Silberschatz, Korth and Sudarshan


Diagrama E­R con Relaciones Ternarias

Database System Concepts 1.44 ©Silberschatz, Korth and Sudarshan


Convirtiendo 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

Database System Concepts 1.45 ©Silberschatz, Korth and Sudarshan


Especializació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.

Database System Concepts 1.46 ©Silberschatz, Korth and Sudarshan


Ejemplo de Especialización

Database System Concepts 1.47 ©Silberschatz, Korth and Sudarshan


Resumen de simbolos usados en la 
notación E­R

Database System Concepts 1.48 ©Silberschatz, Korth and Sudarshan


Resumen de Simbolos (Cont.)

Database System Concepts 1.49 ©Silberschatz, Korth and Sudarshan


Notaciones Alternativas para E­R

Database System Concepts 1.50 ©Silberschatz, Korth and Sudarshan


Reducció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

Database System Concepts 1.51 ©Silberschatz, Korth and Sudarshan


Modelo 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

Database System Concepts 1.52 ©Silberschatz, Korth and Sudarshan


Ejemplo de una Relación

Database System Concepts 1.53 ©Silberschatz, Korth and Sudarshan


Tipos 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

Database System Concepts 1.54 ©Silberschatz, Korth and Sudarshan


Instancia 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 Main Harrison


Smith North Rye tuplas
Curry North Rye (o filas)
Lindsay Park Pittsfield

clientes

Database System Concepts 1.55 ©Silberschatz, Korth and Sudarshan


Base 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

Database System Concepts 1.56 ©Silberschatz, Korth and Sudarshan


La Relación Cliente

Database System Concepts 1.57 ©Silberschatz, Korth and Sudarshan


La Relación Depositor

Database System Concepts 1.58 ©Silberschatz, Korth and Sudarshan


Diagrama E­R para un Banco

Database System Concepts 1.59 ©Silberschatz, Korth and Sudarshan


Diagrama de un Esquema de un Banco

Database System Concepts 1.60 ©Silberschatz, Korth and Sudarshan


Lenguaje 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

Database System Concepts 1.61 ©Silberschatz, Korth and Sudarshan


Algebra 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.

Database System Concepts 1.62 ©Silberschatz, Korth and Sudarshan


Ejemplo de la Operación de Selecció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

Database System Concepts 1.63 ©Silberschatz, Korth and Sudarshan


Operació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)

Database System Concepts 1.64 ©Silberschatz, Korth and Sudarshan


Ejemplo de la operación de Proyección
■ Relación r: A B C

α 10 1
α 20 1
β 30 1
β 40 2

■ ∏A,C (r) A C A C

α 1 α 1
α 1 = β 1
β 1 β 2
β 2

Database System Concepts 1.65 ©Silberschatz, Korth and Sudarshan


Operació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) 

Database System Concepts 1.66 ©Silberschatz, Korth and Sudarshan


Ejemplo de la Operación Unión

■ Relaciónes r, s:
A B A B

α 1 α 2
α 2 β 3
β 1 s
r

r ∪ s: A B

α 1
α 2
β 1
β 3

Database System Concepts 1.67 ©Silberschatz, Korth and Sudarshan


Operació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)

Database System Concepts 1.68 ©Silberschatz, Korth and Sudarshan


Ejemplo de Operación Diferencia de 
Conjunto
■ Relations r, s:
A B A B

α 1 α 2
α 2 β 3
β 1 s
r

r – s: A B

α 1
β 1

Database System Concepts 1.69 ©Silberschatz, Korth and Sudarshan


Operació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

Database System Concepts 1.70 ©Silberschatz, Korth and Sudarshan


Ejemplo de la Operación Producto 
Cartesiano
Relationes r, s: A B C D E

α 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

Database System Concepts 1.71 ©Silberschatz, Korth and Sudarshan


Operació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.

Database System Concepts 1.72 ©Silberschatz, Korth and Sudarshan


Composición de Operaciones

■ 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 
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.

Database System Concepts 1.74 ©Silberschatz, Korth and Sudarshan


Operaciones Adicionales

Se definen operaciones que no adicionan poder al algebra 
relacioneal pero simplifican alfunas consultas.
 
■ Intersección
■ Reunión Natural
■ División
■ Asignación

Database System Concepts 1.75 ©Silberschatz, Korth and Sudarshan


Operació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)

Database System Concepts 1.76 ©Silberschatz, Korth and Sudarshan


Ejemplo de Operación de Intersección
■ Relation r, s: A       B A       B
α 1 α 2
α 2 β 3
β 1

r s
■ r ∩ s A       B

α      2

Database System Concepts 1.77 ©Silberschatz, Korth and Sudarshan


Operación de Reunión Natural
■    Notación: r     s

■ 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))

Database System Concepts 1.78 ©Silberschatz, Korth and Sudarshan


Ejemplo de una Operación de Reunión 
Natural
■ Relaciones r, 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 δ

Database System Concepts 1.79 ©Silberschatz, Korth and Sudarshan


Operació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 ) } 

Database System Concepts 1.80 ©Silberschatz, Korth and Sudarshan


Ejemplo de la Operación de División

Relations r, s: A B B
α 1
1
α 2
α 3 2
β 1 s
γ 1
δ 1
δ 3
δ 4
∈ 6
∈ 1
β 2
r ÷ s: A r

α
β

Database System Concepts 1.81 ©Silberschatz, Korth and Sudarshan


Operació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.

Database System Concepts 1.82 ©Silberschatz, Korth and Sudarshan


Generalized 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)

Database System Concepts 1.83 ©Silberschatz, Korth and Sudarshan


Operaciones 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

Database System Concepts 1.84 ©Silberschatz, Korth and Sudarshan


Ejemplo de Operación de Agregación
■ Relación r:
A B C

α α 7
α β 7
β β 3
β β 10

sum­C
g sum(c) (r)
27

Database System Concepts 1.85 ©Silberschatz, Korth and Sudarshan


Ejemplo de Operación de Agregación

■ Relación account agrupada por branch­name:

branch­name account­number balance


Perryridge A­102 400
Perryridge A­201 900
Brighton A­217 750
Brighton A­215 750
Redwood A­222 700

branch-name g sum(balance) (account)


branch­name balance
Perryridge 1300
Brighton 1500
Redwood 700

Database System Concepts 1.86 ©Silberschatz, Korth and Sudarshan


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)

Database System Concepts 1.87 ©Silberschatz, Korth and Sudarshan


Modificació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.

Database System Concepts 1.88 ©Silberschatz, Korth and Sudarshan


Borrado
■ 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.

Database System Concepts 1.89 ©Silberschatz, Korth and Sudarshan


Ejemplos 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)

Database System Concepts 1.90 ©Silberschatz, Korth and Sudarshan


Insercion

■ 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.

Database System Concepts 1.91 ©Silberschatz, Korth and Sudarshan


Ejemplos 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)}

Database System Concepts 1.92 ©Silberschatz, Korth and Sudarshan


Actualizació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.
cuenta ← ∏ AN, BN, BAL * 1.05 (cuenta)

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

Database System Concepts 1.93 ©Silberschatz, Korth and Sudarshan


Vistas
■ 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.

Database System Concepts 1.94 ©Silberschatz, Korth and Sudarshan


Definició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.

Database System Concepts 1.95 ©Silberschatz, Korth and Sudarshan


Ejemplos 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)

Database System Concepts 1.96 ©Silberschatz, Korth and Sudarshan


E­R Diagram

Database System Concepts 1.97 ©Silberschatz, Korth and Sudarshan


Estructura 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.

Database System Concepts 1.98 ©Silberschatz, Korth and Sudarshan


La 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)

Database System Concepts 1.99 ©Silberschatz, Korth and Sudarshan


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­sucursal
from prestamo
■ La palabra all especifica que los duplicados no se eliminan.
select all nombre­sucursalk
from prestamo

Database System Concepts 1.100 ©Silberschatz, Korth and Sudarshan


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.

Database System Concepts 1.101 ©Silberschatz, Korth and Sudarshan


La 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.

Database System Concepts 1.102 ©Silberschatz, Korth and Sudarshan


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 prestamo
where monto between 90000 and 100000

Database System Concepts 1.103 ©Silberschatz, Korth and Sudarshan


La 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­prestamo
and nombre­sucursal = ‘Perryridge’

Database System Concepts 1.104 ©Silberschatz, Korth and Sudarshan


La 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, monto
from prestatario, prestamo
where prestatario.numero­prestamo = prestamo.numero­prestamo

Database System Concepts 1.105 ©Silberschatz, Korth and Sudarshan


Variable 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 > S.activos and S.ciudad­sucursal = ‘Brooklyn’

Database System Concepts 1.106 ©Silberschatz, Korth and Sudarshan


Operaciones 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.

Database System Concepts 1.107 ©Silberschatz, Korth and Sudarshan


Ordenando 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­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

Database System Concepts 1.108 ©Silberschatz, Korth and Sudarshan


Operaciones sobre Conjuntos
■ Encuentre todos los clientes que tienen un prestamo, una 
cuenta o ambos
(select nombre­cliente from depositor)
union
(select 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
(select nombre­cliente from prestatario)

Database System Concepts 1.109 ©Silberschatz, Korth and Sudarshan


Funciones 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

Database System Concepts 1.110 ©Silberschatz, Korth and Sudarshan


Aggregate 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

Database System Concepts 1.111 ©Silberschatz, Korth and Sudarshan


Vistas

■ 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

Database System Concepts 1.112 ©Silberschatz, Korth and Sudarshan


Modificando 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 cuenta
where nombre­sucursal in (select nombre­sucursal
       from sucursal
       where ciudad­sucursal = ‘Needham’)
delete from depositor
where numero­cuenta in 
                   (select numero­cuenta
 from sucursal, cuenta
 where ciudad­sucursal = ‘Needham’
   and sucursal.nombre­sucursal = cuenta.nombre­
sucursal)

Database System Concepts 1.113 ©Silberschatz, Korth and Sudarshan


Modificacón de la Base de Datos 
Inserción
■ Adicionar una nueva tupla en cuenta
insert into cuenta
values (‘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 cuenta
values (‘A­777’,‘Perryridge’, null)

Database System Concepts 1.114 ©Silberschatz, Korth and Sudarshan


Modificació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 > 10000

update cuenta
set saldo = saldo ∗ 1.05
where saldo ≤ 10000
★ El orden es importante
★ Se puede hacer usando la clausula  case 

Database System Concepts 1.115 ©Silberschatz, Korth and Sudarshan


Modificación a la Base de Datos  
Actualización

■ El mismo query anterior

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

Database System Concepts 1.116 ©Silberschatz, Korth and Sudarshan


Update 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

Database System Concepts 1.117 ©Silberschatz, Korth and Sudarshan


Transacciones

■ 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

Database System Concepts 1.119 ©Silberschatz, Korth and Sudarshan


Creació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)
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 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
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

Database System Concepts 1.122 ©Silberschatz, Korth and Sudarshan


Ligaduras 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)

Database System Concepts 1.123 ©Silberschatz, Korth and Sudarshan


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

Database System Concepts 1.124 ©Silberschatz, Korth and Sudarshan


Integridad 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”.

Database System Concepts 1.125 ©Silberschatz, Korth and Sudarshan


Integridad 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)

Database System Concepts 1.126 ©Silberschatz, Korth and Sudarshan


Ejemplo de Integridad Referencial en 
SQL
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))

Database System Concepts 1.127 ©Silberschatz, Korth and Sudarshan


Acciones 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

Database System Concepts 1.128 ©Silberschatz, Korth and Sudarshan


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

Database System Concepts 1.129 ©Silberschatz, Korth and Sudarshan


Disparador

■ 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.

Database System Concepts 1.130 ©Silberschatz, Korth and Sudarshan


Security

■ 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)

Database System Concepts 1.131 ©Silberschatz, Korth and Sudarshan


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

Database System Concepts 1.132 ©Silberschatz, Korth and Sudarshan


Autorizaciones

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

Database System Concepts 1.133 ©Silberschatz, Korth and Sudarshan


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.

Database System Concepts 1.134 ©Silberschatz, Korth and Sudarshan


Especificació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.

Database System Concepts 1.135 ©Silberschatz, Korth and Sudarshan


Privilegios 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

Database System Concepts 1.136 ©Silberschatz, Korth and Sudarshan


Privilegio 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

Database System Concepts 1.137 ©Silberschatz, Korth and Sudarshan


Roles
■ 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  cajero
create role administrador

    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

You might also like