You are on page 1of 38

FACULTAD DE INGENIERIA Y

SISTEMAS
BASE DE DATOS I
III Cuatrimestre

UNIDAD 3: Modelo Relacional


Ing. Ral E. Prez
Contenido Unidad 3
Estructuras de las base de datos relacionales.
Algebra Relacional.
Operadores Relacionales Especiales.
Lenguajes de consultas formales.
Lenguajes de consultas comerciales.
Modificacin de la base de datos.
Borrado.
Insercin
Actualizacin.
Vistas.
Definicin.
Creacin de vistas.
Mltiples vistas.
Estructura de las Bases de Datos
Relacionales
Una base de datos relacional consiste en un conjunto de tablas, a cada
una de las cuales se le asigna un nombre exclusivo. Cada fila de la tabla
representa una relacin entre un conjunto de valores.

Como las tablas son esencialmente relaciones, se utilizan los trminos


matemticos relacin y tupla en lugar de tabla y fila.
Algebra Relacional
El lgebra relacional es un lenguaje de consulta procedimental. Consta de un
conjunto de operaciones que toman como entrada una o dos relaciones y producen
como resultado una nueva relacin.
El lgebra relacional esta divido en dos grupos:

1. Operadores tradicionales de conjuntos.- Unin, Interseccin, diferencia y


producto cartesiano.

2. Operadores relacionales especiales.- Seleccin, proyeccin, reunin natural y


divisin.

Tomando como base las siguientes relaciones para ejemplificar cada uno de los
operadores.
RELACION A

RELACION B
Unin e Interseccin
UNION.- La unin de dos relaciones A y B compatibles con la unin,
denotado por A unin B, es una relacin cuya cabecera es idntica a la
de A o de B y cuyo cuerpo son las tuplas t pertenecientes ya sea a A o
B o ambas.
AUB=

INTERSECCION.- La interseccin de dos relaciones A y B compatibles


con la unin, denotado por A interseccin B, es una relacin cuya
cabecera es idntica a la de A o de B y cuyo cuerpo son las tuplas t
pertenecientes tanto a A como B o ambos.

S# NOMBRE CIUDAD STATUS

S1 SALAZAR LONDRES 20
Diferencia y Producto Cartesiano
DIFERENCIA.- La diferencia entre dos relaciones compatibles a la
unin A y B, denotado por A minus B, es una relacin cuya cabecera es
idntica a la de A o B y cuyo cuerpo esta formado por todas las tuplas t
pertenecientes a A pero no a B.
S# NOMBRE CIUDAD STATUS
AB=
S4 CORDOVA LONDRES 20

PRODUCTO CARTESIANO.- El producto cartesiano de las tablas A y B,


denotado por A times B se define como una relacin cuya cabecera es
la combinacin de las cabeceras A y B, y cuyo cuerpo esta formado por
el conjunto de todas las tuplas t de tal modo que t sea una
combinacin de una tupla A perteneciente a la relacin A y una tupla B
perteneciente a la relacin B.
Ejemplo de Producto Cartesiano
Suponiendo las relaciones A y B. Definidas de la siguiente manera: sea la
relacin A el conjunto de todos los nmeros de proveedor y B el conjunto de
todos los nmeros de partes. Entonces A times B es el conjunto de todos los
pares posibles numero de proveedor/numero de parte.
Operadores Relacionales Especiales
Operador seleccin ().-El operador algebraico de seleccin produce un
conjunto horizontal de una relacin especifica, es decir, el conjunto de las tuplas
de la relacin para el cual se cumple un predicado especifico. Sea theta
cualquiera de los siguientes operadores =, <, >, <=, >=, <>, entonces quedara:

SELECT A WHERE X THETA Y

Es una relacin con la misma cabecera de A y con un cuerpo formado por el


conjunto de tuplas t de la relacin A siempre y cuando la evaluacin de
comparacin X THETA Y resulte verdadera.

La expresin condicional puede estar compuesta por expresiones boleanas


unidas por AND, OR y NOT.
Ejemplos:
1. S WHERE CIUDAD =LONDRES
2. P WHERE PESO < 14
3. SP WHERE S# =S1 AND P#=P1
Operador de Proyeccin
Proyeccin ( ).- El operador de proyeccin produce un subconjunto vertical de
una relacin dada, es decir, el subconjunto obtenido al seleccionar los atributos
que se indican en un orden de izquierda a derecha y eliminando las tuplas
duplicadas.

La proyeccin de una relacin A segn los atributos x, y, z.

A[x, y, z] es una relacin con (x, y, z) como cabecera y cuyo cuerpo est formado
por el conjunto de tuplas (A-x, A-y, A-z), es decir, se selecciona de la tabla, las
columnas x, y, z.

Por ejemplo: S[CIUDAD] CIUDAD

LONDRES

PARIS

ATENAS
Operador Relacin
REUNION NATURAL (JOIN).- Sean las cabeceras de las relaciones A y B
respectivamente:
(X1, X2,..., Xm, Y1, Y2,..., Yn)
(Y1, Y2,..., Yn, Z1, Z2,..., Zn)

es decir, los atributos Y1, Y2,..., Yn son los nicos comunes a las dos relaciones y
adems estn definidos bajo el mismo dominio.

Considerando las siguientes relaciones:

RELACIN S RELACIN SP S JOIN SP

P2
Operador Divisin
DIVISION.- Sean las cabeceras de las relaciones A y B (X1,X2,...,Xm, Y1,Y2,...,Yn) y
(Y1,Y2,...,Yn), es decir los atributos (Y1,Y2,...,Yn) son comunes a las 2 relaciones
donde A representa al dividendo y B al divisor. Para ello, tanto los atributos (Y1,
Y2,...,Yn) de A como B deben estar definidos bajo el mismo dominio.

S3
Taller # 6
En los grupos de trabajo.
En una hoja de papel con los nombres de los integrantes presentes en clase.
ALUMNO cursa MATERIA, que tienen los siguientes atributos:
NControl NControl Clave
NombreA Clave NombreM
Especialidad Calif Crditos
Direccin

Representen en tablas a los atributos.


1.- Obtener el nombre de todos los alumnos que estn inscritos en la
Institucin.
2.- Obtener el nombre de los alumnos que cursan la materia Base de datos 1
cuya clave es SCB9333.
3.- Obtener los nombres de los alumnos de la especialidad de Ing. Sistemas
que cursan la materia Base de datos 2.
Asignacin # 4
Individual
Investigue:
Lenguajes de consultas formales.
Lenguajes de consultas comerciales.
Elabore un resumen con los aspectos mas relevantes de ambos temas.
Parmetros del trabajo:
Hoja de presentacin.
Contenido investigado.
Bibliografa.
Fecha de entrega: proxima clase
A computadora, hoja 8.5x11, espacio 1.5, times new roman 12,
negra, justificado.
Mximo 4 pginas.
Modificacin de la Base de
Datos
Las modificaciones de la base de datos se expresan utilizando la
operacin asignacin.
Las tablas mostradas a continuacin se utilizarn para mostrar
ejemplos de las diferentes modificaciones que se puedan tener.
TABLAS

Tabla EMP. Descripcin de sus Campos o Atributos

EMPNO NOT NULL NUMBER(4)


ENAME CHAR(10)
JOB CHAR(10)
MGR NUMBER(4)
HIREDATE DATE
SAL NUMBER(7,2)
COMM NUMBER(7,2)
DEPTNO NUMBER(2)
Modificacin de la Base de
Datos
Tabla DEPT. Descripcin de sus Campos.
DEPTNO DNAME LOC

DEPTNO NUMBER(2) 10 ACCOUNTING NEW YORK


20 RESEARCH DALLAS
DNAME CHAR(14) 30 SALES CHICAGO
LOC LOC () 40 OPERATIONS BOSTON

Borrado.- Las solicitudes de borrado se expresan bsicamente igual que las


consultas. Sin embargo en lugar de mostrar las tuplas al usuario. Solo se
eliminan de la base de datos las tuplas seleccionadas. Solo se pueden borrar
tuplas enteras; no se pueden borra valores de atributos concretos. En el
lgebra relacional los borrados se expresan mediante:

r r E Donde r es una relacin y E es una consulta de lgebra relacional.


Modificacin de la Base de
Datos- Borrado
Tomando en cuenta las tablas anteriores. Mediante SQL se tendra los borrados
utilizando el Comando DELETE.
Al realizar borrados se debe tomar en cuenta lo siguiente:
No se pueden borrar renglones parciales. Si se quiere hacer esto, actualice la
columna por NULL.
La clusula WHERE determina los renglones a borrar de la tabla.
Si omitimos la clusula WHERE, se borraran TODOS los renglones de la tabla.

Ejemplo: Martn renuncio. Se debe remover de la BASE DE DATOS.


DELETE FROM EMP
WHERE EMPNO=7654;
Modificacin de la Base de
Datos- Insercin
Insercin.- Para insertar datos en una relacin hay que especificar la tupla que
se va a insertar o escribir una consulta cuyo resultado sea un conjunto de tuplas
que vayan a insertarse. Evidentemente, el valor de los atributos de las tuplas
insertadas deben ser miembros del dominio de cada atributo. De manera
parecida las tuplas insertadas deben ser de la paridad correcta. En el lgebra
relacional las inserciones se expresan mediante:

r r U E Donde r es una relacin y E es una expresin de la lgebra relacional.


La insercin de una sola tupla se expresa haciendo que E sea una relacin
constante que contiene una tupla.

INSERT INTO DEPT VALUES (10,ACCOUNTING,NEW YORK)

DEPTNO DNAME LOC

10 ACCOUNTING NEW YORK


Modificacin de la Base de
Datos- Insercin
La tabla debe crearse antes de insertar datos.
Los valores se separan con comas.
Utilice el comando DESCRIBE para mostrar el orden y tipo de
las columnas de la tabla.
Los valores deben coincidir con el tipo de dato de la columna a
la que se insertan.
Los datos tipo CHAR y DATE deben ponerse entre apstrofes.
Otra forma de insertar es:
INSERT INTO DEPT (DNAME,DEPTNO) VALUES (ACCOUNTING,10)
DEPTNO DNAME LOC
10 ACCOUNTING
Modificacin de la Base de
Datos- Insercin
Se listan los nombres de las columnas en el INSERT para:
Insertar datos solamente en algunas columnas de la tabla.
Introducir datos en alguna secuencia especifica.
Los valores de deben dar en el orden especificado en la clusula INSERT.

Insertando renglones de otra tabla


Se puede utilizar el comando INSERT con un query para seleccionar
renglones de una tabla e insertarlos en otra.
El query sustituye la clusula VALUES.

INSERT INTO EMP(EMPNO,ENAME,DEPTNO)


SELECT ID,NAME,DEPARTMENT
FROM OLD_EMP
WHERE DEPARTMENT IN (10,20,30,40);
Modificacin de la Base de
Datos- Insercin
Utilizando Parmetros en el Comando INSERT
Un comando INSERT puede contener parmetros representando valores que van
a ser provistos por el usuario al momento de correr el comando.

Cada parmetro consiste de un & seguido por el nombre de la columna.

INSERT INTO DEPT VALUES (&DEPTNO, &DNAME, &LOC);

La ejecucin de este comando hace que se pida al usuario los valores para cada
uno de los parmetros.

No es necesario poner apstrofes en datos tipo CHAR y DATE si se pone el


parmetro.
Modificacin de la Base de
Datos- Insercin
Insertando Valores Nulos.

Si no se inserta una columna en clusula INSERT, el valor de esa columna queda


como NULO por default.

Se puede especificar NULL en la clusula VALUES (a menos que NOT NULL est
especificado para esa columna).

INSERT INTO DEPT VALUES (50,EDUCATION,NULL)


Modificacin de la Base de
Datos- Insercin
Insertando valores tipo DATE
Formato default para introducir fechas (valores tipo DATE):
DD-MON-YY

Introducir a un nuevo empleado STONE


INSERT INTO EMP (EMPNO,ENAME,HIREDATE)
VALUES (7963,STONE,07-APR-87);

Para introducir automticamente la fecha y la hora actual: SYSDATE

Introducir a un nuevo empleado KOHN que fue contratado hoy


INSERT INTO EMP (EMPNO,ENAME,HIREDATE)
VALUES (7600,KOHN,SYSDATE)
Modificacin de la Base de
Datos- Actualizacin
Actualizacin.- Puede que en algunas ocasiones que desee modificar un valor de
una tupla sin modificar todos los valores de la tupla. Se puede utilizar el
operador proyeccin generalizada para realizar esta tarea:
r F1,F2,...,Fn (r)

Donde cada Fi es el i-simo atributo de r, si el i-simo atributo no esta


actualizado, o si hay que actualizar el atributo, Fi es solo una expresin que solo
implica constantes y los atributos de r, que da el nuevo valor del atributo.

Si se desea seleccionar varias tuplas de r y solo actualizar esas mismas tuplas, se


puede utilizar la expresin siguiente:

R F1, F2,..., Fn ( P(r)) U (r - P (P))


Modificacin de la Base de
Datos- Actualizacin
Ejemplo:

Promover a Martin a MANAGER (gerente)


UPDATE EMP
SET JOB=MANAGER
WHERE ENAME=MARTIN;

Si omitimos la
clusula WHERE,
todos los valores
en la columna
cambiaran al valor
en la clusula SET.
Modificacin de la Base de
Datos- Actualizacin
Actualizando Mltiples Renglones:

Cambiar los puestos de todos los vendedores (SALESMAN) por MARKET REP

UPDATE EMP
SET JOB=MARKET REP
WHERE JOB=SALESMAN;
Modificacin de la Base de
Datos- Actualizacin
Controlando cuando tienen efecto las MODIFICACIONES A LA BASE DE DATOS

Inserciones , borrados y actualizaciones a tablas no se hacen permanentes


hasta que el trabajo es salvado en la base de datos con COMMIT.

Hasta que el trabajo es salvado, nicamente el usuario que hizo los cambios
los puede ver, todos los dems usuarios ven los datos como estaban al
momento del ltimo COMMIT.

Un COMMIT puede ser explicito, implcito o automtico.


Modificacin de la Base de
Datos- Actualizacin
COMMIT Explicito.- Se debe dar el comando de SQL COMMIT para que los
cambios se hagan permanentes. SQL> COMMIT;

COMMIT Implcito.- Los siguientes comandos de SQL causan un COMMIT


implcito: ALTER, AUDIT, COMMENT, CONNECT, CREATE, DISCONNECT, DROP,
EXIT, GRANT, NOAUDIT, QUIT, REVOKE y RENAME.

COMMIT Automtico.- Los cambios tienen efecto inmediatamente despus


de un INSERT, UPDATE o DELETE si el AUTOCOMMIT se encuentra habilitado.

Para esto se utiliza el comando SET DE SQL *PLUS


SQL> SET AUTOCOMMIT ON

El comando ROLLBACK cancela todos los cambios pendientes regresando al


estado en que estaba la informacin al momento del ltimo COMMIT.
Taller # 7
En los grupos de trabajo.
En una hoja de papel con los nombres de los integrantes presentes en clase
En base a las siguientes tablas aplique las instrucciones de modificacin de la
base de datos dadas hasta ahora.
Vistas
No es deseable que todos los usuarios puedan ver la totalidad del modelo
lgico. Las consideraciones sobre la seguridad pueden exigir que algunos
datos queden ocultos para los usuarios.
Considrese una persona que desea saber el numero de prstamo de un
cliente pero que no necesita ver el importe del prstamo.
Esta persona debera ver una relacin descrita, en el lgebra relacional,
mediante:

nombre-cliente, numero-prstamo (prestatario x prstamo)

A parte de las consideraciones sobre la seguridad, puede que se desee crear


un conjunto personalizado de relaciones que se adapte mejor que el
modelo lgico a la intuicin de un usuario concreto.
Definiciones de Vistas
Las vistas se definen utilizando la instruccin create view. Para definir una
vista hay que darle un nombre e indicar la consulta que la va a calcular. La
forma de la instruccin view es:

Create view v como <expresin de consulta>

Donde <expresin de consulta> es cualquier expresin de consulta del


lgebra relacional. El nombre de la vista se representa mediante v.
Como ejemplo, considrese la vista consistente en las sucursales y sus
clientes. Supngase que se desea que esta vista se denomine todos-los-
clientes. Esta vista se define de la siguiente manera.

Create view todos-los-clientes as nombre-sucursal, nombre-cliente (impositor x


cuenta) U nombre-sucursal, nombre-cliente (prestatario x prstamo).
Definiciones de Vistas
Una vez que se ha definido una vista, se puede utilizar el nombre de la vista
para hacer referencia a la relacin virtual que genera la vista.
Los nombres de las vistas pueden aparecer en cualquier lugar, siempre y
cuando no se ejecuten sobre las vistas operaciones de actualizacin.

El sistema de base de datos guarda la definicin de la propia vista, en vez,


del resultado de la evaluacin . Siempre que se utiliza una relacin de vistas
en una consulta, se sustituye por la expresin de consulta guardada.

Si las relaciones reales utilizadas en la definicin de la vista cambian, la


vista se mantiene actualizada. Estas vistas se denominan vistas
materializadas. Las aplicaciones en la que se utiliza frecuentemente una
vista se benefician del uso de vistas materializadas.

Son una herramienta til para las consultas, pero plantean problemas
significativos si con ellas se expresan las actualizaciones, las inserciones o
los borrados. La dificultad radica en que las modificaciones de la base de
datos expresadas en trminos de vistas deben traducirse en modificaciones
de las relaciones reales en el modelo lgico de la base de datos.
Creacin de Vistas
Una Tabla, con Mltiples vistas
Se puede tener muchas vistas de la misma tabla.
Creacin de Vistas
Como crear, Nombrar y Consultar Vistas
CREATE VIEW MANAGERS AS
SELECT ENAME,JOB,SAL
FROM EMP
WHERE JOB=MANAGER;

Se puede utilizar cualquier SELECT que contenga un ORDER BY cuando crea


una vista.

Para consultar una vista, se hace un SELECT como si la vista fuera una tabla.
SELECT *
FROM MANAGERS;

ENAME JOB SAL


JONES MANAGER 2,975
BLAKE MANAGER 2,850
CLARK MANAGER 2,450
Creacin de Vistas
Creando VISTAS con ALIAS de nombres de columnas

A menos que se especifique lo contrario, la vista hereda los nombres de las


columnas de la tabla de la que se deriva.

Para dar a la vista nombres de columnas diferentes a los de la tabla base, se


utiliza la siguiente sintaxis:

CREATE VIEW nombre_vista (alias, alias,...) AS query

CREATE VIEW MYDEPT


(PERSON,TITLE,SALARY)
AS SELECT ENAME,JOB,SAL
FROM EMP
WHERE DEPTNO=10;
Mltiples Vistas
Mas acerca de las vistas con WITH CHECK OPTION

WITH CHECK OPTION .- Especifica que la inserciones y actualizaciones hechas a


la base de datos a partir de la vista, no pueden manipular datos que la vista no
puede seleccionar.

CREATE VIEW DEPT20 AS


SELECT ENAME,JOB, SAL, DEPTNO
FROM EMP
WHERE DEPTNO=20
WITH CHECK OPTION
Copiar y Borrar Tablas y Vistas
Razones para copiar tablas y vistas:
Respaldar tablas y vistas originales.
Dar una copia a alguien mas.
Hacer cambios tentativos.
Archivarlas antes de borrarlas.
Para copiar una Tabla:
Utilice el comando CREATE TABLE con la clusula AS seguida por un
subquery.
Cuando la tabla es copiada, la copia incluye la definicin de las columnas y
los datos.
Borrado de Tablas y Vistas.
Para borrar TABLAS
El comando de SQL es DROP TABLE nombre_tabla.
Si la tabla tiene datos, estos van a ser borrados permanentemente.
Una vez que la tabla se borra no se puede recuperar.
Para borrar vistas.
El comando de SQL es DROP VIEW nombre_vista.
Las tablas en las que se basa la vista no se altera.
Bibliografa
Fundamentos de Bases de Datos
- Tercera Edicin.
- Autores: Abraham Silberschatz, Henry F. Korth, S. SudarShan.
- Editorial Mc Graw Hill.
Base de Datos
Autores: Catherine M. Ricardo

You might also like