Está en la página 1de 10

Algebra Relacional

Conjunto de operaciones que permite manejar


relaciones completas
Resultado de operar sobre una relacin o sobre un par
de relaciones es una relacin
Lo anterior permite construir expresiones complejas
con operadores combinados
Operaciones de Conjuntos
Unin, Interseccin, Diferencia, Producto Cartesiano

Operaciones Relacionales
Seleccin, Proyeccin, Reunin y Divisin

Seleccin
Permite seleccionar un subconjunto de tuplas que
satisface una condicin dada del total de tuplas de la
tabla
!<condicin> (<relacin>)
Ejemplos:
!DNO=4 (EMPLOYEE)
!SALARY > 300.000 (EMPLOYEE)
!DNO=4 (!SALARY > 300.000(EMPLOYEE))
!SALARY > 300.000(!DNO=4(EMPLOYEE))
!SALARY > 300.000 and DNO=4 (EMPLOYEE)

Proyeccin
Permite seleccionar slo algunas de las columnas de
la tabla original
Normalmente la eliminacin de columnas produce
tuplas duplicadas por lo cual la relacin resultante
puede tener tambin menos tupla
"<lista de atributos>(<relacin>)
Ejemplo:
"LNAME, FNAME, SALARY(EMPLOYEE)

Operadores de Conjuntos

UNION
R ! S contiene todas las tuplas que estn en R o en S (se eliminan los
duplicados)
INTERSECCION
R " S contiene todas las tuplas que estn tanto en R como en S
DIFERENCIA
R - S contiene las tuplas que estn en R pero no en S
PRODUCTO CARTESIANO
R(A1, ..., An) x S(B1, ..., Bm) = Q(A1, ..., An,B1, ..., Bm)
(una tupla por cada combinacin de tuplas de R y S)
Unin, Interseccin y Diferencia son operadores binarios
relaciones deben ser compatibles (mismo nmero de atributos y dominios
comunes)
Operadores de unin en interseccin son conmutativos y asociativos

Reunin (Join)
union de tuplas relacionadas de dos tablas Q y R
Q = R trS

<condicin>

Produce, igual que el producto cartesiano, una relacin Q con


n+m atributos
Q tiene una tupla por cada combinacin de tuplas de R y S que
satisfaga la condicin
La condicin en general es una conjuncin de expresiones
Ai!!"Bj en que ! ! {=, <, >, <=, >=, !=}
La condicin mas comn lejos es un simple operador de
igualdad. En este caso se habla de un equijoin
Cuando la igualdad es entre dos atributos con el mismo
nombre se hace desaparecer uno de ellos de la relacin resultante
y se habla de un Join Natural

Ejemplo
R
Nombre
Perez
Fuentes
Lopez

Edad
25
36
45

S
Nombre
Perez
Lopez
Fuentes

Sueldo
120.000
230.000
150.000

Depto
Ventas
Finanzas
Produccin

R trS

R.Nombre=S.Nombre

R.Nombre
Perez
Fuentes
Lopez

Edad
25
36
45

Sueldo
120.000
230.000
150.000

S.Nombre
Perez
Fuentes
Lopez

Depto
Ventas
Produccin
Finanzas

R tr S
Nombre
Perez
Fuentes
Lopez

Edad
25
36
45

Sueldo
120.000
230.000
150.000

Depto
Ventas
Produccin
Finanzas

Ejemplo
Las siguientes dos relaciones son usadas para representar rdenes de compra:
INCLUDES(#O, INAME, QUANTITY)
ORDERS(#O, DATE, CUSTOMER)
1. Nombre de los clientes que han ordenado clavos

"CUSTOMER (!NAME = clavos(INCLUDES tr ORDERS))


2. Nmeros de todas las rdenes que contengan clavos

"#O (! INAME = clavos(INCLUDES))


3. Clientes que han colocado rdenes en los ltimos tres meses

" CUSTOMER (! DATE > 2001.12.17(ORDERS))

Ejemplo: BD de bebedores
Una base de datos con tres tablas mantiene
informacin sobre bebedores, los bares que
frecuentan, y las cervezas que gustan tomar
FRECUENTA(BEBEDOR, BAR)
(Luis, Kopete) f Luis frecuenta el bar Kopete

SIRVE(BAR, CERVEZA)
(Kopete, Royal) f En Kopete se ofrece la cerveza Royal

GUSTA(BEBEDOR, CERVEZA)
(Luis, Royal) f A Luis le gusta la Royal

Consultas
Quienes frecuentan el Bar X
"BEBEDOR (! BAR = X(FRECUENTA))

FRECUENTA(BEBEDOR, BAR)
SIRVE(BAR, CERVEZA)
GUSTA(BEBEDOR, CERVEZA)

En que bares se sirve la cerveza Y


"BAR (! CERVEZA = Y(SIRVE))
Cervezas a las cuales bebedor Z tiene acceso
"CERVEZA (! BEBEDOR = Z(FRECUENTA tr SIRVE))
Cules bares ofrecen alguna cerveza que le guste a Z
"BAR (! BEBEDOR = Z(SIRVE tr GUSTA))
Qu bebedores frecuentan a lo menos un bar donde se sirve alguna
cerveza que les agrade
"BEBEDOR (GUSTA tr SIRVE tr FRECUENTA)

Structured Query Language


SQL, originalmente SEQUEL (Structured English
Query Language) desarrollado e implementado por
IBM Research como interfaz del DBMS System R
Esfuerzo de estandarizacin (ANSI, ISO) produjo el
primer standard en 1986 que se conoce como SQL1
Versin revisada aparece en 1992 que se conoce como
SQL2 o SQL-92
SQL:1999 Introduce conformancia a nivel Core
(mnimo para poder decir que producto adhiere)
SQL:2003 muy reciente (core coincide con anterior)
introduce aspectos de XML

Ms que Consultas
Definicin de Datos
Create (Schema, Table, Domain)
Alter (Table)
Drop (Schema, Table)

Consultas
Select From Where

Actualizacin
Insert
Delete
Update

Creacin de las Relaciones


Nombre de la tabla a crear:
CREATE TABLE EMPLOYEE

A continuacin se especifican los atributos:


(FNAME VARCHAR(15) NOT NULL,
MINIT CHAR,
LNAME VARCHAR(15)NOT NULL,
SSN CHAR(9)NOT NULL,
BDATE DATE,
ADDRESS VARCHAR(30),
SEX CHAR,
SALARY DECIMAL(10,2),
SUPERSSN CHAR(9) NOT NULL,
DNO INT NOT NULL,

Finalmente clave y e integridad referencial


PRIMARY KEY (SSN),
FOREIGN KEY (SUPERSSN) REFERENCES EMPLOYEE (SSN),
FOREIGN KEY (DNO) REFERENCES DEPARTMENT(DNUMBER) );

Tipos de Dato
SQL92 SQL 99

SQL Server

MySQL

binary

binary

char(n) binary

Oracle

character

char(n)

char(n)

char(n)

character varying

varchar(n)

varchar(n)

varchar2

decimal

decimal(p,s)

decimal

decimal

float

float

float

float(n)

integer

int

int

integer(n)

national character

nchar(n)

nchar(n)

nchar(n)

national character varying

nvarchar(n)

nvarchar(n)

nvarchar2(n)

smallint

smallint

smallint

smallint

datetime

datetime

date

real

real(p,s)

real

longblob

blob

table
image

Variaciones en Create Table


Clusula create table en Oracle es muy general
CREATE [GLOBAL TEMPORARY] TABLE [schema.]table_name
( column_name datatype [DEFAULT] {column_constraint [...]} [,...n]
| table_constraint [,...n] } )
[ON COMMIT {DELETE | PRESERVE} ROWS]
( physical_characteristics )
( table_characteristics )

por ahora nos interesa solamente lo esencial ...


CREATE TABLE [schema.]table_name
( column_name datatype [DEFAULT] {column_constraint [...]} [,...n]
| table_constraint [,...n] } )

Ejemplos 1
create table TROUBLE (
City VARCHAR2(13) NOT NULL,
define clave candidata
SampleDate DATE NOT NULL,
Noon NUMBER(4,1),
Midnight NUMBER(4,1),
Precipitation NUMBER,
constraint TROUBLE_UQ UNIQUE (City, SampleDate)
);

table constraint
create table TROUBLE (
City VARCHAR2(13),
SampleDate DATE,
Noon NUMBER(4,1),
Midnight NUMBER(4,1),
Precipitation NUMBER,
constraint TROUBLE_PK PRIMARY KEY (City, SampleDate)
);

define clave primaria

Ejemplos 2

column constraint
define clave primaria

create table BOOKSHELF


(Title VARCHAR2(100) primary key,
Publisher VARCHAR2(20),
define clave fornea
CategoryName VARCHAR2(20),
Rating VARCHAR2(2),
constraint CATFK foreign key (CategoryName) references CATEGORY(CategoryName));

create table RATING_WITH_CHECK


(Rating VARCHAR2(2) CHECK (Rating <= 9),
RatingDescription VARCHAR2(50));

column constraint

condicin en check de una restriccin de columna no puede referenciar otros


atributos (para eso usar una restriccin a nivel de tabla)

Mantencin de Integridad

asociar accin a seguir si hay violacin referencial al modificar


o eliminar una tupla
accin se especifica adjuntando a la restriccin de clave externa
una clusula llamada accin de disparo (triggered action)
SET NULL
ON DELETE
SET DEFAULT
ON UPDATE
CASCADE
CREATE TABLE EMPLOYEE ( ...,
CONSTRAINT EMPSUPERFK FOREIGN KEY(SUPERSSN) REFERENCES
EMPLOYEE(SSN) ON DELETE SET NULL ON UPDATE CASCADE,
CONSTRAINT EMPDEPFK FOREIGN KEY(DNO) REFERENCES
DEPARTMENT(DNUMBER) ON DELETE SET DEFAULT ON UPDATE CASCADE);

DROP y TRUNCATE
DROP SCHEMA
El esquema completo es descartado

DROP TABLE
Se elimina la tabla (relacin) especificada

TRUNCATE TABLE
se eliminan las tuplas pero no la definicin de la tabla

Ejemplos
DROP TABLE DEPENDENT CASCADE
Elimina DEPENDENT junto a todas las restricciones y vistas que hacen referencia a ella

DROP TABLE DEPENDENT RESTRICT


Elimina DEPENDENT slo si no est referenciada

TRUNCATE TABLE DEPENDENT


Elimina todas las tuplas pero la tabla DEPENDeNT sigue existiendo

ALTER
permite cambiar la definicin de una tabla.
agregar o eliminar una columna (atributo)
agregar o eliminar una restriccin
cambiar la definicin de un atributo

Ejemplos:
ALTER TABLE EMPLOYEE ADD JOB VARCHAR(12)
ALTER TABLE EMPLOYEE DROP ADRESS CASCADE
ALTER TABLE DEPARTMENT ALTER MGRSSN DROP DEFAULT
ALTER TABLE DEPARTMENT ALTER MGRSSN SET DEFAULT 1
ALTER TABLE EMPLOYEE DROP CONSTRAINT EMPSUPERFK
CASCADE;

Ejemplo de Alter
create table TROUBLE (
City VARCHAR2(13),
SampleDate DATE,
Noon NUMBER(4,1),
Midnight NUMBER(4,1),
Precipitation NUMBER);
insert
insert
insert
insert

into
into
into
into

TROUBLE
TROUBLE
TROUBLE
TROUBLE

values
values
values
values

('PLEASANT
('PLEASANT
('PLEASANT
('PLEASANT

LAKE','21-MAR-01',
LAKE','22-JUN-01',
LAKE','23-SEP-01',
LAKE','22-DEC-01',

alter table TROUBLE add (


Condition VARCHAR2(9) NOT NULL,
Wind NUMBER(3)
);
alter table TROUBLE add (
Condition VARCHAR2(9),
Wind NUMBER(3)
);
update TROUBLE set Condition = 'SUNNY';
alter table TROUBLE modify (
Condition VARCHAR2(9) NOT NULL,
City VARCHAR2(17)
);
describe TROUBLE
Name
------------------------------CITY
SAMPLEDATE
NOON
MIDNIGHT
PRECIPITATION
CONDITION
WIND

Null?
Type
-------- -----------NOT NULL VARCHAR2(17)
NOT NULL DATE
NUMBER(4,1)
NUMBER(4,1)
NUMBER
NOT NULL VARCHAR2(9)
NUMBER(3)

39.99, -1.31, 3.6);


101.44, 86.2, 1.63);
92.85, 79.6, 1.00003);
-17.445, -10.4, 2.4);

También podría gustarte