Você está na página 1de 81

ACI210 Bases de Datos

Unidad 6
El Lenguaje SQL (DDL)
Definicin de Datos

2006 Universidad de Las Amricas - Escuela de Ingeniera - ACI210 - Bases de Datos I APAD y JJAA

Unidad 5b - Objetivos
Tipos de datos soportados por el
estndar SQL.
Propsito de la caracterstica de
integridad mejorada de SQL.
Como definir restricciones de
integridad usando SQL.
Como usar la caracterstica de
integridad mejorada en las
instrucciones CREATE y ALTER TABLE.
2006 Universidad de Las Amricas - Escuela de Ingeniera - ACI210 - Bases de Datos I APAD y JJAA

Unidad 5b - Objetivos
Propsito de las vistas.
Cmo crear y suprimir vistas usando el
SQL.
Como el DBMS realiza operaciones sobre
las vistas
Bajo que condiciones las vistas son
actualizables.
Ventajas y desventajas de las vistas.
[Como trabaja el modelo de transacciones
de ISO].
Como usar las instrucciones GRANT y
REVOKE para manejar un nivel de
seguridad
2006 Universidad de Las Amricas - Escuela de Ingeniera - ACI210 - Bases de Datos I APAD y JJAA

Los tipos de datos de ISO SQL

2006 Universidad de Las Amricas - Escuela de Ingeniera - ACI210 - Bases de Datos I APAD y JJAA

Caracterstica de Integridad
mejorada
Consideremos 5 tipos de
integridad:
Datos requeridos
Restriccin de dominio
Integridad de entidad
Integridad referencial
Restricciones generales.

2006 Universidad de Las Amricas - Escuela de Ingeniera - ACI210 - Bases de Datos I APAD y JJAA

Caracterstica de Integridad
mejorada
Dato requerido
posicion

VARCHAR(10)

NOT NULL

Restriccin de Dominio
(a) CHECK
sex
CHAR
NOT NULL
CHECK (sex IN (M, F))

2006 Universidad de Las Amricas - Escuela de Ingeniera - ACI210 - Bases de Datos I APAD y JJAA

Caracterstica de Integridad
mejorada
(b) CREATE DOMAIN

CREATE DOMAIN NombreDeDominio


[AS] TipoDeDato
[DEFAULT defaultOption]
[CHECK (CondicionDeBusqueda)]

Por ejemplo:
CREATE DOMAIN TipoSexo AS CHAR
CHECK (VALUE IN (M, F));
sexo TipoSexo NOT NULL

2006 Universidad de Las Amricas - Escuela de Ingeniera - ACI210 - Bases de Datos I APAD y JJAA

Caracterstica
mejorada

de

Integridad

CondicionDeBusqueda puede
involucrar una bsqueda en tabla
CREATE DOMAIN numOficina AS CHAR(4)
CHECK (VALUE IN (SELECT numOficina
FROM Oficina));

Los Dominios pueden ser quitados


usando DROP DOMAIN:
DROP DOMAIN NombreDeDominio
[RESTRICT | CASCADE]

2006 Universidad de Las Amricas - Escuela de Ingeniera - ACI210 - Bases de Datos I APAD y JJAA

Integridad de Entidad
La llave primaria de una tabla debe
contener un valor nico, no nulo para cada
fila.
El estndar ISO soporta la clusula
FOREIGN KEY en las declaraciones CREATE
y ALTER TABLE :
PRIMARY KEY(numEmpleado)
PRIMARY KEY(numCliente, numPropiedad)

Puede haber solamente una clusula


PRIMARY KEY por tabla. Puede aun
asegurar la unicidad para llaves
alternativas usando UNIQUE:
UNIQUE(numTelefono)
2006 Universidad de Las Amricas - Escuela de Ingeniera - ACI210 - Bases de Datos I APAD y JJAA

10

Integridad Referencial
FK es la columna o conjunto de columnas
que ligan cada fila en la tabla hija que
contiene la llave fornea FK a la fila de la
tabla padre que contiene una PK que
coincide.
La integridad referencial significa que, si FK
contiene un valor, ese valor debe referir a
una fila existente en la tabla padre.
El estndar ISO soporta la definicin de FKs
con la clusula FOREIGN KEY en CREATE y
ALTER TABLE:
FOREIGN KEY(numOficina) REFERENCES Oficina
2006 Universidad de Las Amricas - Escuela de Ingeniera - ACI210 - Bases de Datos I APAD y JJAA

11

Integridad Referencial
Cualquier INSERT/UPDATE que procura
crear un valor de FK en tabla hija sin
emparejar valor de PK en la tabla padre se
rechaza
La accin tomada al intentar
actualizar/eliminar un valor de una PK, en la
tabla padre con filas coincidiendo en la tabla
hija es dependiente de la accin referencial
especificada usando las subclausulas ON
UPDATE y ON DELETE:
CASCADE
SET DEFAULT

- SET NULL
- NO ACTION

2006 Universidad de Las Amricas - Escuela de Ingeniera - ACI210 - Bases de Datos I APAD y JJAA

12

Integridad Referencial
CASCADE: Suprime la fila del padre y suprime las filas
que coinciden en la tabla hija, y as sucesivamente en
cascada.
SET NULL: Elimina las filas del padre y asigna las
columnas FK en el hijo a NULL. Es vlido solamente si
FK son NOT NULL.
SET DEFAULT: Elimina las filas del padre y asigna a
cada componente de FK en el hijo al valor especificado
por defecto. Es vlido solamente si DEFAULT es
especificado para las columnas FK.
NO ACTION: Rechaza la eliminacin del padre. Este es
el valor por defecto.
2006 Universidad de Las Amricas - Escuela de Ingeniera - ACI210 - Bases de Datos I APAD y JJAA

13

Integridad Referencial
FOREIGN KEY (numEmpleado) REFERENCES Staff
ON DELETE SET NULL
FOREIGN KEY (numPropietario) REFERENCES
Propietario ON UPDATE CASCADE

2006 Universidad de Las Amricas - Escuela de Ingeniera - ACI210 - Bases de Datos I APAD y JJAA

14

Restricciones Generales
Se puede usar CHECK/UNIQUE en CREATE y
ALTER TABLE.

Similar a la clusula CHECK, tambin tiene:


CREATE ASSERTION AssertionName
CHECK (condicinDeBusqueda)

2006 Universidad de Las Amricas - Escuela de Ingeniera - ACI210 - Bases de Datos I APAD y JJAA

15

Restricciones Generales
CREATE ASSERTION numEmpleadoSobrepasado
CHECK (NOT EXISTS (SELECT numEmpleado
FROM Propiedad
GROUP BY numEmpleado
HAVING COUNT(*) > 100))

2006 Universidad de Las Amricas - Escuela de Ingeniera - ACI210 - Bases de Datos I APAD y JJAA

16

Definicin de Datos

El DDL de SQL permite que los objetos de la


base de datos, tales como esquemas,
dominios, tablas, vistas, e ndices sean
creados y destruidos.
Los principales comandos DDL de SQL son:
CREATE SCHEMA
CREATE/ALTER DOMAIN
CREATE/ALTER TABLE
CREATE VIEW

DROP SCHEMA
DROP DOMAIN
DROP TABLE
DROP VIEW

Muchos DBMSs tambin proveen:


CREATE INDEX

DROP INDEX

2006 Universidad de Las Amricas - Escuela de Ingeniera - ACI210 - Bases de Datos I APAD y JJAA

17

Definicin de Datos
Las relaciones y otros objetos de la base de
datos existen en un ambiente.
Cada ambiente contiene uno o mas
catlogos, y cada catalogo consiste de un
conjunto de esquemas (schemas).
Un esquema es una coleccin nombrada de
objetos relacionados de la base de datos.
Los objetos en un esquema pueden ser
tablas, vistas, dominios, assertions,
collations, translations, y conjunto de
caracteres. Todos tienen el mismo dueo.
2006 Universidad de Las Amricas - Escuela de Ingeniera - ACI210 - Bases de Datos I APAD y JJAA

18

CREATE SCHEMA
CREATE SCHEMA [Nombre |
AUTHORIZATION IdCreador ]
DROP SCHEMA Nombre [RESTRICT | CASCADE ]

Con RESTRICT (default), el esquema


debe ser vaco o la operacin falla.
Con CASCADE, la operacin cascades
elimina todos los objetos asociados con
el esquema en el orden definido. Si
alguna de estas operaciones falla, el
DROP SCHEMA falla.

2006 Universidad de Las Amricas - Escuela de Ingeniera - ACI210 - Bases de Datos I APAD y JJAA

19

CREATE TABLE
CREATE TABLE NombreTabla
{(colName dataType [NOT NULL] [UNIQUE]
[DEFAULT defaultOption]
[CHECK searchCondition] [,...]}
[PRIMARY KEY (listOfColumns),]
{[UNIQUE (listOfColumns),] [,]}
{[FOREIGN KEY (listOfFKColumns)
REFERENCES ParentTableName
[(listOfCKColumns)],
[ON UPDATE referentialAction]
[ON DELETE referentialAction ]] [,]}
{[CHECK (searchCondition)] [,] })

2006 Universidad de Las Amricas - Escuela de Ingeniera - ACI210 - Bases de Datos I APAD y JJAA

20

CREATE TABLE
Crea una tabla con una o ms columnas del
dataType especificados.
Con NOT NULL, el sistema rechaza cualquier
intento de insertar una columna null.
Puede especificar un valor DEFAULT para la
columna.

Las claves primarias deberan ser siempre


especificadas como NOT NULL.
La clusula FOREIGN KEY especifica FK solo
con la accin referencial.
2006 Universidad de Las Amricas - Escuela de Ingeniera - ACI210 - Bases de Datos I APAD y JJAA

21

Ejemplo 6.1 - CREATE TABLE


CREATE DOMAIN NumeroPropietario AS VARCHAR(5)
CHECK (VALUE IN (SELECT numPropietario
FROM PrivateOwner));

CREATE DOMAIN NumeroEmpleado AS VARCHAR(5)


CHECK (VALUE IN (SELECT numEmpleado FROM Empleado));

CREATE DOMAIN PNumero AS VARCHAR(5);


CREATE DOMAIN PHabitaciones AS SMALLINT;
CHECK(VALUE BETWEEN 1 AND 15);

CREATE DOMAIN PRenta AS DECIMAL(6,2)


CHECK(VALUE BETWEEN 0 AND 9999.99);
2006 Universidad de Las Amricas - Escuela de Ingeniera - ACI210 - Bases de Datos I APAD y JJAA

22

Ejemplo 6.1 - CREATE TABLE


CREATE TABLE Propiedad (
numPropiedad PNumber
NOT NULL, .
habitaciones PHabitaciones NOT NULL DEFAULT 4,
renta PRent a
NOT NULL, DEFAULT 600,
numPropietario NumeroPropietario NOT NULL,
numEmpleado
StaffNumber
Constraint numEmpleadoSobrepasado .
numOficina NumeroOficina
NOT NULL,
PRIMARY KEY (numPropiedad),
FOREIGN KEY (numEmpleado) REFERENCES Empleado
ON DELETE SET NULL ON UPDATE CASCADE .);

2006 Universidad de Las Amricas - Escuela de Ingeniera - ACI210 - Bases de Datos I APAD y JJAA

23

ALTER TABLE
Agrega una nueva columna a una
tabla.
Elimina una columna de una tabla.
Agrega una nueva table constraint.
Elimina una table constraint.
Asigna un default para una columna.
Elimina un default para una columna.

2006 Universidad de Las Amricas - Escuela de Ingeniera - ACI210 - Bases de Datos I APAD y JJAA

24

Ejemplo 6.2(a) - ALTER TABLE


Cambie la tabla empleado
removiendo el default de Asistente
para la columna cargo y asignando
el default para la columna sexo a
fememino (F).

ALTER TABLE Empleado


ALTER cargo DROP DEFAULT;

ALTER TABLE Empleado


ALTER sexo SET DEFAULT F;
2006 Universidad de Las Amricas - Escuela de Ingeniera - ACI210 - Bases de Datos I APAD y JJAA

25

Ejemplo 6.2(a) - ALTER TABLE


Elimine la constraint de Propiedad
que a los empleados no se les
permite manejar mas de 100
propiedades a la ves.
Agregar una nueva columna a la tabla
Cliente.
ALTER TABLE Propiedad
DROP CONSTRAINT numEmpleadoSobrepasado;

ALTER TABLE Cliente


ADD numHabPref PRooms;
2006 Universidad de Las Amricas - Escuela de Ingeniera - ACI210 - Bases de Datos I APAD y JJAA

26

DROP TABLE
DROP TABLE NombreTabla [RESTRICT | CASCADE]
Ej:.

DROP TABLE Propiedad;

Remueve la tabla indicada y todos las filas


dentro de ella.
Con RESTRICT, si algunos otros objetos
dependen para su existencia de la existencia
de esta tabla, SQL no permite la peticin.
Con CASCADE, SQL elimina todos los objetos
dependientes (y todos los objetos
dependientes de estos objetos).

2006 Universidad de Las Amricas - Escuela de Ingeniera - ACI210 - Bases de Datos I APAD y JJAA

27

Vistas (Views)
Vista
Resultado dinmico de unas o ms operaciones
relacionales operando sobre relaciones base para
producir otra relacin.

Relacin virtual que no necesariamente


existe en la base de datos sino se produce
realmente por requerimiento, al momento
de la peticin.

2006 Universidad de Las Amricas - Escuela de Ingeniera - ACI210 - Bases de Datos I APAD y JJAA

28

Vistas (Views)
El contenido de una vista se define como
una pregunta en unas o ms relaciones
bases.
Con la resolucin de la vista, cualquier
operacin en la vista se traduce
automticamente a operaciones en las
relaciones de las cuales se deriva.

Con la materializacin de la vista, la vista es


almacenada en una tabla temporal, la cual
es mantenida/actualizada a medida que las
tablas bases subyacentes son actualizadas.

2006 Universidad de Las Amricas - Escuela de Ingeniera - ACI210 - Bases de Datos I APAD y JJAA

29

SQL - CREATE VIEW


CREATE VIEW NombreVista [
(nombreColumnaNuevo [,...]) ]
AS subselect
[WITH [CASCADED | LOCAL] CHECK OPTION]

Puede asignar un nombre a cada columna en


la vista.
Si se especifica la lista de los nombres de la
columna, debe tener mismo nmero de
items que el nmero de las columnas
producidas por el subselect.

Si es omitida, cada columna toma el nombre


de la columna correspondiente en el
subselect.
2006 Universidad de Las Amricas - Escuela de Ingeniera - ACI210 - Bases de Datos I APAD y JJAA

30

SQL - CREATE VIEW


La lista debe ser especificada si hay alguna
ambigedad en un nombre de la columna.
El subselect es conocido como consulta de
definicin.
Con la opcin CHECK se asegura de que si
una fila no puede satisfacer la clusula
WHERE de la consulta de definicin, sta no
es agregada a la tabla base subyacente.
Necesita privilegio de SELECT sobre todas
las tablas referenciadas en el subselect y
privilegios de USAGE sobre los dominios
(domains) usados en las columnas
referenciadas.
2006 Universidad de Las Amricas - Escuela de Ingeniera - ACI210 - Bases de Datos I APAD y JJAA

31

Ejemplo 6.3
Crear una Vista Horizontal
Cree una vista de modo que el encargado
de la Oficina B003 pueda ver solamente
los detalles para del personal que
trabajan en su oficina.
Tabla Empleado
numEmpleado
SL21
SG37
SG14
SA9
SG5
SL41

nombre
Jhon
Peter
David
Mary
Susan
Julie

apellido
White
Denver
Ford
Lee
Sarandon
Roberts

cargo
Gerente
Asistente
Supervisor
Asistente
Gerente
Asistente

sexo fechNac
M
01-Oct-45
M
10-Nov-60
M
09-Sep-58
F
17-Sep-59
F
21-Mar-60
F
13-Jun-63

salario
300000
120000
180000
90000
240000
90000

numOficina
B005
B003
B003
B007
B003
B005

2006 Universidad de Las Amricas - Escuela de Ingeniera - ACI210 - Bases de Datos I APAD y JJAA

32

Ejemplo 6.3
Crear una Vista Horizontal
Cree una vista de modo que el encargado de la Oficina
B003 pueda ver solamente los detalles para del
personal que trabajan en su oficina.

CREATE VIEW JefeOficina3


AS

SELECT *
FROM Empleado
WHERE numOficina = B003;
Vista JefeOficina3

numEmpleado
SG37
SG14
SG5

nombre
Peter
David
Susan

apellido
Denver
Ford
Sarandon

cargo
Asistente
Supervisor
Gerente

sexo fechNac
M
10-Nov-60
M
09-Sep-58
F
21-Mar-60

salario
120000
180000
240000

numOficina
B003
B003
B003

2006 Universidad de Las Amricas - Escuela de Ingeniera - ACI210 - Bases de Datos I APAD y JJAA

33

Ejemplo 6.4
Creacin de una Vista Vertical
Cree una vista de los detalles de los
empleados de la Oficina B003, excluyendo
la fecha de nacimiento, numero de oficina y
el salario.
Tabla Empleado
numEmpleado
SL21
SG37
SG14
SA9
SG5
SL41

nombre
Jhon
Peter
David
Mary
Susan
Julie

apellido
White
Denver
Ford
Lee
Sarandon
Roberts

cargo
Gerente
Asistente
Supervisor
Asistente
Gerente
Asistente

sexo fechNac
M
01-Oct-45
M
10-Nov-60
M
09-Sep-58
F
17-Sep-59
F
21-Mar-60
F
13-Jun-63

salario
300000
120000
180000
90000
240000
90000

numOficina
B005
B003
B003
B007
B003
B005

2006 Universidad de Las Amricas -Pearson


EscuelaEducation
de Ingeniera
- ACI210
- Bases de Datos I APAD y JJAA
Limited
1995, 2005

34

Ejemplo 6.4
Creacin de una Vista Vertical
Cree una vista de los detalles de los empleados de la
Oficina B003, excluyendo la fecha de nacimiento, numero
de Oficina y el salario.

CREATE VIEW Empleado3


AS SELECT numEmpleado, nombre, apellido, cargo, sexo
FROM Empleado
WHERE numOficina = B003;

Vista Empleado3
numEmpleado
SG37
SG14
SG5

nombre
Peter
David
Susan

apellido
Denver
Ford
Sarandon

cargo
Asistente
Supervisor
Gerente

sexo
M
M
F

2006 Universidad de Las Amricas -Pearson


EscuelaEducation
de Ingeniera
- ACI210
- Bases de Datos I APAD y JJAA
Limited
1995, 2005

35

Ejemplo 6.5
Vistas Agrupadas y Unidas
Cree una vista de los empleados que manejan
propiedades para alquiler, incluyendo el nmero de
la oficina en que trabajan, nmero de empleado, y el
nmero de propiedades que l maneja.

Tabla Empleado
numEmpleado
SL21
SG37
SG14
SA9
SG5
SL41

nombre
Jhon
Peter
David
Mary
Susan
Julie

apellido
White
Denver
Ford
Lee
Sarandon
Roberts

cargo
Gerente
Asistente
Supervisor
Asistente
Gerente
Asistente

sexo fechNac
M
01-Oct-45
M
10-Nov-60
M
09-Sep-58
F
17-Sep-59
F
21-Mar-60
F
13-Jun-63

salario
300000
120000
180000
90000
240000
90000

numOficina
B005
B003
B003
B007
B003
B005

Tabla Propiedad
numPropiedad
PA14
PL94
PG4
PG36
PG21
PG16

calle
16 Holhead
6 Argvill St.
6 Lawrence St
2 Manor Rd
10 Dale Rd
5 Novar Dr

ciudad
Aberdeem
London
Glasgow
Glasgow
Glasgow
Glasgow

codigoPostal
AB7 5SU
NW2
G11 9QX
G114QX
G12
G12 9AX

tipo
hab renta numPropietario
Casa
6
650 C046
Departamento
4
400 C087
Departamento
3
350 C040
Departamento
3
375 C093
Casa
5
600 C087
Departamento
4
450 C093

numEmpleado
SL21
SL21
SA9
SA9
SG5
SL21

2006 Universidad de Las Amricas - Escuela de Ingeniera - ACI210 - Bases de Datos I APAD y JJAA

36

Ejemplo 6.5
Vistas Agrupadas y Unidas
Cree una vista de los empleados que manejan propiedades
para alquiler, incluyendo el nmero de la oficina en que
trabajan, nmero de empleado, y el nmero de
propiedades que l maneja.

CREATE VIEW TotPropEmp (numOficina,


numEmpleado, total)
AS SELECT e.numOficina, e.numEmpleado, COUNT(*)
FROM Empleado e, Propiedad p
WHERE e.numEmpleado = p.numEmpleado
GROUP BY e.numOficina, e.numEmpleado;

Vista TotPropEmp
numOficina
B003
B003
B007

numEmpleado
SL21
SG5
SA9

total
3
1
2

2006 Universidad de Las Amricas - Escuela de Ingeniera - ACI210 - Bases de Datos I APAD y JJAA

37

SQL - DROP VIEW


DROP VIEW NombreVista [RESTRICT |
CASCADE]

Causa que la definicin de la vista sea


eliminada de la base de datos.
For example:
DROP VIEW JefeOficina3;

2006 Universidad de Las Amricas - Escuela de Ingeniera - ACI210 - Bases de Datos I APAD y JJAA

38

SQL - DROP VIEW


Con CASCADE, se suprimen todos los objetos
subordinados relacionados; es decir,
cualquiera vista definida sobre vistas siendo
eliminada.
Con RESTRICT (default), si algunos otros
objetos dependen para su existencia de la
existencia de la vista siendo eliminada, se
rechaza el comando.

2006 Universidad de Las Amricas - Escuela de Ingeniera - ACI210 - Bases de Datos I APAD y JJAA

39

Resolucin de la Vista

Contar el numero de propiedades


manejadas por cada miembro de
la oficina B003,ordenando por
numero de empleado.
Vista TotPropEmp
numOficina
B003
B003
B007

numEmpleado
SL21
SG5
SA9

total
3
1
2

2006 Universidad de Las Amricas - Escuela de Ingeniera - ACI210 - Bases de Datos I APAD y JJAA

40

Resolucin de la Vista
Contar el numero de propiedades manejadas
por cada miembro de la oficina B003,
ordenando por Numero de empleado.

SELECT numEmpleado, total


FROM TotPropEmp
WHERE numOficina = B003
ORDER BY numEmpleado;

2006 Universidad de Las Amricas - Escuela de Ingeniera - ACI210 - Bases de Datos I APAD y JJAA

41

Resolucin de la Vista
(a) Los nombres de columnas en la vista en la
lista SELECT son traducidas a su
correspondiente nombre de columna en la
consulta de definicin:
SELECT e.numEmpleado As numEmpleado,
COUNT(*) As total

(b) Los nombres de la vista en el FROM, son


reemplazados con la correspondiente lista
FROM de la consulta de definicin:
FROM Empleado e, Propiedad p

2006 Universidad de Las Amricas - Escuela de Ingeniera - ACI210 - Bases de Datos I APAD y JJAA

42

Resolucin de la Vista
(c) El WHERE de la consulta del usuario es

combinada con el WHERE con la consulta de


definicin usando AND:
WHERE e.numEmpleado = p.numEmpleado AND
numOficina = B003

(d) Las Clusulas GROUP BY y HAVING son

copiadas de la consulta de definicin:


GROUP BY e.numOficina, e.numEmpleado

(e) El ORDER BY es copiado de la consulta con

los nombres de columnas traducidos en los


nombre de columnas de laconsulta de
definicin.
ORDER BY e.numEmpleado
2006 Universidad de Las Amricas - Escuela de Ingeniera - ACI210 - Bases de Datos I APAD y JJAA

43

Resolucin de la Vista
(f) La mezcla final es ejecutada ahora para
producir el resultado:
SELECT e.numEmpleado AS numEmpleado, COUNT(*) AS
total
FROM Empleado e, Propiedad p
WHERE e.numEmpleado = p.numempleado AND
numOficina = B003
GROUP BY s.branchNo, s.staffNo
ORDER BY s.staffNo;

2006 Universidad de Las Amricas - Escuela de Ingeniera - ACI210 - Bases de Datos I APAD y JJAA

44

Restricciones sobre las Vistas


SQL impone varias restricciones en la
creacin y uso de las vistas.
(a) Si una columna en la vista es basada sobre
una funcin agregada:
La columna puede aparecer solamente en las
clusulas SELECT y ORDER BY de la consulta que
acceda a la vista.
Las columnas no pueden ser usadas en el WHERE
si ser el argumento para una funcin agregada
en ninguna consulta basada en vista.

2006 Universidad de Las Amricas - Escuela de Ingeniera - ACI210 - Bases de Datos I APAD y JJAA

45

Restricciones sobre las Vistas


Por ejemplo, la siguiente consulta debera
fallar:
SELECT COUNT(total)
FROM TotPropEmp;

Similarmente, la siguiente consulta tambien


debera fallar:
SELECT *
FROM TotPropEmp
WHERE total > 2;

2006 Universidad de Las Amricas - Escuela de Ingeniera - ACI210 - Bases de Datos I APAD y JJAA

46

Restricciones sobre las Vistas


(b) Una vista agrupada no se puede unir
(Join) con una tabla base o una vista.

Por ejemplo, la Vista TotPropEmp es una


vista agrupada, de tal manera que
cualquier intento de hacer un join de esta
vista con otra tabla o vista, fallar

2006 Universidad de Las Amricas - Escuela de Ingeniera - ACI210 - Bases de Datos I APAD y JJAA

47

Actualisabilidad de las Vistas


Todas las actualizaciones a la tabla
base son reflejadas en todas la vistas
que abarcan la tabla base.
Similarmente, podemos esperar que
si una vista es actualizada, entonces,
las tablas bases reflejarn dicho
cambio.

2006 Universidad de Las Amricas - Escuela de Ingeniera - ACI210 - Bases de Datos I APAD y JJAA

48

Actualisabilidad de las Vistas


Sin embargo, consideremos nuevamente la
vista TotPropEmp.
Si tratamos de insertar un registro para
indicar que en la oficina B003, el empleado
SG5 maneja 2 propiedades:
INSERT INTO TotPropEmp
VALUES (B003, SG5, 2);

Tenemos que insertar dos registros en


Propiedad, mostrando las propiedades que
SG5 maneja. Sin embargo, no conocemos
que propiedades son, es decir no
conocemos sus claves primarias!.
2006 Universidad de Las Amricas - Escuela de Ingeniera - ACI210 - Bases de Datos I APAD y JJAA

49

Actualizabilidad de las Vistas


If change definition of view and replace
count with actual property numbers:
CREATE VIEW ListaPropEmp (numOficina,
numEmpleado, numPropiedad)
AS SELECT e.numOficina, e.numEmpleado, p.numPropiedad
FROM Empleado e, Propiedad p
WHERE e.numEmpleado = p.numEmpleado;

2006 Universidad de Las Amricas - Escuela de Ingeniera - ACI210 - Bases de Datos I APAD y JJAA

50

Actualizabilidad de las Vistas


Ahora tratamos de insertar el registro:
INSERT INTO ListaPropEmp
VALUES (B003, SG5, PG19);

Aun tenemos problemas, dado que en la


tabla Propiedad, todas las columnas, a
excepcin de codigoPostal y numEmpleado,
son definidas como NOT NULL.
Sin embargo, no tenemos ninguna manera
de dar valores no nulos a las columnas
restantes
2006 Universidad de Las Amricas - Escuela de Ingeniera - ACI210 - Bases de Datos I APAD y JJAA

51

Actualizabilidad de las Vistas


ISO especifica que una vista es actualizable,
si y solo si:

DISTINCT no es especificado.
Cada elemento en la lista SELECT de la consulta de
definicin es un nombre de columna y ninguna
columna aparece ms de una vez.
La clusula FROM especifica solamente una tabla,
excluyendo cualquier vista basada sobre un join,
union, intersection o difference.
No hay SELECT anidado referenciando tablas externas.
No contiene clusulas GROUP BY o HAVING.
Tambin, cada fila agregada con la vista no debe
violar restricciones de integridad de la tabla base.

2006 Universidad de Las Amricas - Escuela de Ingeniera - ACI210 - Bases de Datos I APAD y JJAA

52

Actualizabilidad de las Vistas

Para que una vista sea


actualizable, el DBMS debe
poder remontar cualquier fila o
columna a su fila o columna en
la tabla fuente

2006 Universidad de Las Amricas - Escuela de Ingeniera - ACI210 - Bases de Datos I APAD y JJAA

53

CON OPCIN CHECK


Las filas existen en una vista debido a que
satisfacen la condicin WHERE de la
consulta de definicin.
Si una fila cambia y no ms satisface la
condicin, esta desaparece de la vista.
Nuevas filas aparecen dentro de la vista
cuando se efectan insert/update a la vista
y causan que ellas satisfacen la condicin
WHERE.
Las filas que entran y salen de una vista son
llamadas filas en migracin (migrating
rows).
Con la Opcin CHECK prohbe a una fila
migrar fuera de la vista.
2006 Universidad de Las Amricas - Escuela de Ingeniera - ACI210 - Bases de Datos I APAD y JJAA

54

CON OPCIN CHECK


LOCAL/CASCADED se aplica a jerarquas de vistas.
Con LOCAL, cualquier fila insertada/actualizada
sobre la vista y cualquier vista directamente o
indirectamente definida sobre esta vista no debe
causar que una fila desaparezca de la vista a menos
que la fila tambin desaparezca de la vista/tabla
derivada.
Con CASCADED (default), cualquier fila
insertada/actualizada sobre esta vista y sobre
cualquier vista directamente o indirectamente
definida sobre esta vista no causar que la fila
desaparezca de la vista.

2006 Universidad de Las Amricas - Escuela de Ingeniera - ACI210 - Bases de Datos I APAD y JJAA

55

Ejemplo 6.6
CON OPCION CHECK
CREATE VIEW Manager3Staff
AS
SELECT *
FROM Empleado
WHERE numOficina = B003
WITH CHECK OPTION;

No permite actualizar el numero de oficina


de la fila B003 a B002 dado que esto podra
causar que las filas migren de vista.
Tampoco podemos insertar una fila en la
vista con un numero de oficina distinto de
B003.

2006 Universidad de Las Amricas - Escuela de Ingeniera - ACI210 - Bases de Datos I APAD y JJAA

56

Ejemplo 6.6
CON OPCION CHECK
Ahora consideremos lo siguiente:
CREATE VIEW SalarioBajo

AS SELECT * FROM Empleado WHERE salario >


90000;

CREATE VIEW SalarioAlto

AS SELECT * FROM SalarioBajo


WHERE salario > 10000
WITH LOCAL CHECK OPTION;

CREATE VIEW JefeOficina3

AS SELECT * FROM SalarioAlto


WHERE numOficina = B003;

2006 Universidad de Las Amricas - Escuela de Ingeniera - ACI210 - Bases de Datos I APAD y JJAA

57

Ejemplo 6.6
CON OPCION CHECK
UPDATE JefeOficina3
SET salario = 95000
WHERE numEmpleado = SG37;

Esta actualizacin fallara: aunque la actualizacin


hara desaparecer una fila de SalarioAlto, la fila no
desaparecera de SalarioBajo.
Sin embargo, si la actualizacin trata de asignar el
valor de salario a 80000, la actualizacin seria
exitosa tanto que la fila no debera ser parte de
Salariobajo.

2006 Universidad de Las Amricas - Escuela de Ingeniera - ACI210 - Bases de Datos I APAD y JJAA

58

Ejemplo 6.6
CON OPCION CHECK
Si SalarioAlto se ha especificado con
CASCADED CHECK OPTION, asignar el
salario a 95000 o 80000 debera ser
rechazado debido a que la fila
desaparecera de SalarioAlto.
Para prevenir anomalas como estas, cada
vista debera ser creada usando WITH
CASCADED CHECK OPTION.

2006 Universidad de Las Amricas - Escuela de Ingeniera - ACI210 - Bases de Datos I APAD y JJAA

59

Ventajas de las Vistas

Independencia de datos
Seguridad Mejorada
Complejidad Reducida
Conveniencia
Personalizacin
Integridad de Datos

2006 Universidad de Las Amricas - Escuela de Ingeniera - ACI210 - Bases de Datos I APAD y JJAA

60

Desventajas de las Vistas

Restricciones de Actualizacin
Restriccin de estructura
Desempeo

2006 Universidad de Las Amricas - Escuela de Ingeniera - ACI210 - Bases de Datos I APAD y JJAA

61

Materializacin de la Vista
El mecanismo de la resolucin de la vista
puede ser lento, particularmente si la vista
es accedida frecuentemente.
La materializacin de la vista almacena la
vista como tabla temporal cuando la vista
es consultada la primera vez.
Despus de eso, las preguntas basadas en
la vista materializada pueden ser ms
rpidas que recalcular la vista.
La Dificultad es mantener actualizada la
vista mientras las tablas bases estn siendo
actualizadas.
2006 Universidad de Las Amricas - Escuela de Ingeniera - ACI210 - Bases de Datos I APAD y JJAA

62

Mantencin de la Vista
View maintenance apunta a aplicar
solamente esos cambios necesarios para
mantener la vista actual.
Considere la siguiente vista:
CREATE VIEW EmpleadoPropRenta(numEmpleado)
AS SELECT DISTINCT numEmpleado
FROM Propiedad
WHERE numOficina = B003 AND renta > 400;

2006 Universidad de Las Amricas - Escuela de Ingeniera - ACI210 - Bases de Datos I APAD y JJAA

63

View Materialization
Si insertamos una fila en Propiedad con renta 400
entonces la vista no deberia cambiar.
Si insertamos una fila para Propiedad PG24 en
oficina B003 con numEmpleado = SG19 y renta =
550, entonces la fila debera aparecer en la vista
materializada.
Si insertamos una fila para Propiedad PG54 en
oficina B003 con numEmpleado = SG37 y renta =
450, entonces ninguna fila debera aparecer en la
vista materializada.

Si eliminamos la propiedad PG24, la fila deberia ser


borrada de la vista materializada.
Si eliminamos la propiedad PG54, entonces la fila
para en empleado PG37 no debera ser eliminada
(debido a la existencia de la propiedad PG21).

2006 Universidad de Las Amricas - Escuela de Ingeniera - ACI210 - Bases de Datos I APAD y JJAA

64

Transacciones
SQL define un modelo de transaccin basado
en COMMIT y ROLLBACK.
La transaccin es una unidad lgica de
trabajo con unas o ms declaraciones de
SQL garantizadas para ser atmica con
respecto a la recuperacin.
Una transaccin SQL automticamente
comienza con una declaracin de SQL
iniciando-una-transaccin (Ej., SELECT,
INSERT).
Los cambios realizados por la transaccin no
son visibles a otras transacciones
ejecutndose concurrentemente hasta que
la transaccin termina.
2006 Universidad de Las Amricas - Escuela de Ingeniera - ACI210 - Bases de Datos I APAD y JJAA

65

Transacciones
Las transacciones se pueden completar en una de
cuatro maneras:
COMMIT finaliza la transaccin exitosamente,
haciendo los cambios permanentes.
ROLLBACK aborta la transaccin, retirndose
cualquier cambio realizado por la transaccin.
Para SQL programtico, la terminacin exitosa
del programa finaliza la transaccin
exitosamente, aun si el COMMIT no ha sido
ejecutado.
Para SQL programtico, la terminacin anormal
del programa aborta la transaccin.

2006 Universidad de Las Amricas - Escuela de Ingeniera - ACI210 - Bases de Datos I APAD y JJAA

66

Transacciones
Nuevas transacciones comienzan con con la
prxima instruccin transaction-initiating.
Las transacciones SQL no pueden ser
anidadas.
SET TRANSACTION configura la transaccin:
SET TRANSACTION
[READ ONLY | READ WRITE] |
[ISOLATION LEVEL READ UNCOMMITTED |
READ COMMITTED|REPEATABLE READ
|SERIALIZABLE ]

2006 Universidad de Las Amricas - Escuela de Ingeniera - ACI210 - Bases de Datos I APAD y JJAA

67

Restricciones de integridad
inmediato y diferido
No siempre se desea que las restricciones
sean comprobados inmediatamente, sino
que por el contrario en el commit de la
transaccin.
Las restricciones pueden ser definidas como
INITIALLY IMMEDIATE o INITIALLY
DEFERRED, indicando el modo que las
restricciones asume en el comienzo de cada
transaccin.
En el caso anterior, tambin es posible
especificar si el modo se puede cambiar
posteriormente usando el calificador [NOT]
DEFERRABLE.
El modo por defecto es INITIALLY
IMMEDIATE.
2006 Universidad de Las Amricas - Escuela de Ingeniera - ACI210 - Bases de Datos I APAD y JJAA

68

Restricciones de integridad
inmediato y diferido

SET CONSTRAINTS declaracin


usada para definir el modo para
las restricciones especificadas
para la transaccin actual :
SET CONSTRAINTS
{ALL | constraintName [, . . . ]}
{DEFERRED IMMEDIATE}

2006 Universidad de Las Amricas - Escuela de Ingeniera - ACI210 - Bases de Datos I APAD y JJAA

69

Control de acceso Identificadores


de autorizacin y Propietarios
El identificador de autorizacin es el
identificador normal de SQL usado para
establecer la identidad de un usuario. Tiene
generalmente una contrasea asociada.
Usado para determinar qu objetos puede
referirse el usuario y qu operaciones se
pueden realizar en esos objetos.

Cada objeto creado en SQL tiene un dueo,


segn lo definido en la clusula de la
AUTORIZACIN del esquema a la cual el
objeto pertenece.
El dueo es la nica persona que puede
saber sobre l.
2006 Universidad de Las Amricas - Escuela de Ingeniera - ACI210 - Bases de Datos I APAD y JJAA

70

Privilegios
Acciones permitidas al usuario para realizar
sobre la tabla o vista dada:

SELECT
Recuperar datos de la tabla.
INSERT
Insertar nuevos datos en la tabla.
UPDATE Modificar filas de datos en la tabla.
DELETE
Eliminar filas de datos en la tabla.
REFERENCES
Referenciar columnas de
tablas nombradas en restricciones de
integridad.
USAGE
Usar domains, collations, character
sets, and translations.
2006 Universidad de Las Amricas - Escuela de Ingeniera - ACI210 - Bases de Datos I APAD y JJAA

71

Privilegios
Pueden restringir las operaciones
INSERT/UPDATE/REFERENCES a columnas
nombradas.
El dueo de la tabla debe conceder a otros
usuarios los privilegios necesarios usando la
declaracin GRANT.
Para crear vistas, el usuario debe tener
privilegio de SELECT en todas las tablas que
conforman la vista y privilegios de
REFERENCES sobre las columnas nombradas.

2006 Universidad de Las Amricas - Escuela de Ingeniera - ACI210 - Bases de Datos I APAD y JJAA

72

GRANT
GRANT {PrivilegeList | ALL PRIVILEGES}
ON ObjectName
TO {AuthorizationIdList | PUBLIC}
[WITH GRANT OPTION]

PrivilegeList consiste de una o mas de los


privilegios anteriores, separados por comas.
ALL PRIVILEGES concede todos los
privilegios a un usuario.

2006 Universidad de Las Amricas - Escuela de Ingeniera - ACI210 - Bases de Datos I APAD y JJAA

73

GRANT
PUBLIC permite que el acceso sea
concedido a todos los usuarios autorizados
presentes y futuros.
ObjectName puede ser una tabla base,
vista, dominio, character set, collation o
translation.
WITH GRANT OPTION permite que lo
privilegios sean transferidos.

2006 Universidad de Las Amricas - Escuela de Ingeniera - ACI210 - Bases de Datos I APAD y JJAA

74

Ejemplo 6.7/8 - GRANT


De al Gerente privilegio total sobre la tabla
Empleado.
GRANT ALL PRIVILEGES
ON Empleado
TO Gerente WITH GRANT OPTION;

De a los usuarios Personal y Director


privilegios de SELECT y UPDATE sobre la
columna salario de Empleado.
GRANT SELECT, UPDATE (salario)
ON Empleado
TO Personal, Director;

2006 Universidad de Las Amricas - Escuela de Ingeniera - ACI210 - Bases de Datos I APAD y JJAA

75

Ejemplo 6.9 - GRANT privilegios


especficos a PUBLIC

De a todos los usuarios


privilegios de SELECT sobre la
tabla Oficina.
GRANT SELECT
ON Oficina
TO PUBLIC;

2006 Universidad de Las Amricas - Escuela de Ingeniera - ACI210 - Bases de Datos I APAD y JJAA

76

REVOKE
REVOKE quita los privilegios obtenidos con
GRANT.
REVOKE [GRANT OPTION FOR]
{PrivilegeList | ALL PRIVILEGES}
ON ObjectName
FROM {AuthorizationIdList | PUBLIC}
[RESTRICT | CASCADE]

ALL PRIVILEGES se refiere a todos los


privilegios concedidos a un usuario por el
usuario que revoca privilegios.

2006 Universidad de Las Amricas - Escuela de Ingeniera - ACI210 - Bases de Datos I APAD y JJAA

77

REVOKE
GRANT OPTION FOR permite que los
privilegios pasados via WITH GRANT OPTION
de GRANT sean revocados separadamente.
REVOKE falla si este resulta en un objeto
abandonado, tal como vista, a menos que se
haya especificado la palabra clave CASCADE.
Los privilegios concedidos a este usuario por
otros usuarios no son afectados.

2006 Universidad de Las Amricas - Escuela de Ingeniera - ACI210 - Bases de Datos I APAD y JJAA

78

REVOKE

2006 Universidad de Las Amricas - Escuela de Ingeniera - ACI210 - Bases de Datos I APAD y JJAA

79

Ejemplo 6.10/11 - REVOKE


Privilegios especficos

Revocar privilegio de SELECT


sobre la tabla oficina de todos los
usuarios.
REVOKE SELECT
ON Oficina
FROM PUBLIC;

Revocar todos los privilegios dados a


Director sobre la tabla Empleado..
REVOKE ALL PRIVILEGES
ON Empleado
FROM Director;
2006 Universidad de Las Amricas - Escuela de Ingeniera - ACI210 - Bases de Datos I APAD y JJAA

80

Unidad 6b
El Lenguaje SQL (DDL)

Fin de la Unidad

2006 Universidad de Las Amricas - Escuela de Ingeniera - ACI210 - Bases de Datos I APAD y JJAA

81

Instancias de las relaciones


Oficina y Empleado
Atributos

Relacin

Oficina
numOficina
B005
B007
B003
B004
B002

calle
16 Holhead
6 Argvill St.
6 Lawrence St
2 Manor Rd
10 Dale Rd

PK

ciudad
Aberdeem
London
Glasgow
Glasgow
Glasgow

codigoPostal
AB7 5SU
NW2
Cardinalidad
G11 9QX
G114QX
G12
FK
Llave Foranea

Grado

Llave Primaria

Relacin

Empleado
numEmpleado
SL21
SG37
SG14
SA9
SG5
SL41

Nombre
Jhon
Peter
David
Mary
Susan
Julie

Apellido
White
Denver
Ford
Lee
Sarandon
Roberts

cargo
Gerente
Asistente
Supervisor
Asistente
Gerente
Asistente

Sexo fechNac
M
01-Oct-45
M
10-Nov-60
M
09-Sep-58
F
17-Sep-59
F
21-Mar-60
F
13-Jun-63

renta
30000
12000
18000
9000
24000
9000

numOficina
B005
B003
B003
B007
B003
B005

2006 Universidad de Las Amricas - Escuela de Ingeniera - ACI210 - Bases de Datos I APAD y JJAA

82

Você também pode gostar