Clase 6 - Web del Profesor

Anuncio
Bases de datos
Universidad de Los Andes
Escuela de Ingeniería de Sistemas
Departamento de Computación
Lenguajes de consulta.
Algebra relacional. SQL
Lenguajes de consulta
●
Contenido
●
–
Algebra relacional
–
SQL
25/7/16
Actividades
–
Leer capítulos 6 y 8 de Elmasri y Navathe
(5ta edición)
–
Leer capítulos 3 y 4
de Silberschatz (4ta
edición)
S. Solé - Bases de Datos
2
Ejercicio AR
Persona(ci, nombre, telefono, direccion)
Medico(ci, numcolegio, especialidad)
Paciente(ci, numhistoria, fecha_nac)
Cita(id, fecha, motivo, tratamiento, diagnostico, cipaciente)
Examen(nroexamen, tipo, fechaentrega, fecharealizacion,
resultado)
Solicita(cimedico, nroexamen, fechasol)
Restricciones: fecha_nac < fecha para todo Paciente con Cita,
fecha_nac < fechaentrega y fecha_nac < fecharealizacion para todo
Paciente al que le soliciten examenes, fecha_nac < fechasol para
todo Paciente con solicitu de examenes, fecharealizacion <=
fechaentrega para todo Examen
25/7/16
S. Solé - Bases de Datos
3
Ejercicio AR
Escriba las expresiones de álgebra relacional para:
1.Buscar todos los médicos
2.Consultar los exámenes realizados este año
3.Buscar los tipos de exámenes que se realizaron el año
pasado
4.Buscar número de las historias y cédula de las personas
que tuvieron cita en Febrero 2016 con cédula menor a
10.000.000
5.Genere una lista de los nombres de los números del colegio
de médicos y los números de lo exámenes.
6.Liste los médicos que no han solicitado exámenes.
25/7/16
S. Solé - Bases de Datos
4
Renombramiento ρ
Le da un nuevo nombre a una relación y/o a sus
atributos
Se usa para unificar esquemas de relación antes
de usar operadores de conjuntos.
También se usa para eliminar ambiguedades
cuando se hacen “auto joins”
ρ
(ExpresionRelacional)
Relacion(at1, at2,..., atn)
25/7/16
S. Solé - Bases de Datos
5
Inserción
Insertar una nueva tupla en una relación, para ello el
esquema de la nueva tupla debe coincidir con el
esquema de la relación
Εins = (listaDeValores) Relación
Εins = (“12489758”, “Maria Arroyo”,”0274-9875212”,
“Urb. El Encanto. Casa #22”) Persona
25/7/16
S. Solé - Bases de Datos
6
Eliminación
Eliminar una o más tuplas de la relación, si cumplen
con la condición que se establece.
Εdel = Relación [condición]
Εdel = Medico [ci==”14875940”]
25/7/16
S. Solé - Bases de Datos
7
SQL
Lenguaje estructurado de consulta
Lenguaje estándar de consulta para BD relacionales.
● Es la versión comercial del lenguaje SEQUEL creado por
IBM.
● Lenguaje declarativo
● Puede usarse en cónsola, usando una IGU del SGBD o
embebido en programas de aplicación.
● Soportado por los principales SGBD comerciales
● Basado en álgebra relacional
●
25/7/16
S. Solé - Bases de Datos
8
SQL-89
●
Su primera versión se denominó SQL-89 y
estaba compuesta por tres partes:
● LDD: contiene las instrucciones para definir
el esquema de una BD (create, alter y drop).
● LMD: contempla las instrucciones de gestión
de tablas )(select, insert, delete y update), y
para control de concurrencia (commit y
rollback).
● LCD (Lenguaje de Control de Datos): tiene
instrucciones para dar y revocar permisos de
acceso a los datos de la BD (grant y revoke)
25/7/16
S. Solé - Bases de Datos
9
SQL2
●
Segunda versión de SQL, también denominada SQL-92.
● Incluyó el uso de agentes de software, nuevos tipos
básicos de datos como: Date, Time, Timestamp, BLOB,
Varchar.
● Para sesiones concurrentes se establecen conexiones
cliente-servidor en sesiones concurrentes
● Tiene SQL dinámico
● Aumentó la granularidad a nivel de transacciones
● Crearon nuevas versiones de la operación producto
● Usa un catálogo estandarizado, se manejan códigos de
error estandarizados
● Se utilizan nuevos lenguajes de programación como: C,
ada y mumps
25/7/16
S. Solé - Bases de Datos
10
SQL3
●
Última versión de SQL que contiene
tipos abstractos de datos definidos por el diseñador de la
BD
● manejo de roles de usuarios
● consultas recursivas
● disparadores o triggers
● procedimientos almacenados
● encadenamiento tardío
● manejo de interoperabilidad a través de un API u ODBC
para acceso a bases de datos basado en el estándar
SAG (SQL Access Group)
● manejo de transacciones anidadas
●
25/7/16
S. Solé - Bases de Datos
11
LDD en SQL3
●
Objetos de la BD (varían según la implementación del
SGBD)
Para crear objetos: CREATE
● Para destruir objetos: DROP
● Para modificar objetos: ALTER
●
●
Objetos de la BD en Postgresql: server, database,
table, schema, tablespace, view, function, operator, cast,
sequence, extension, data type, domain, trigger
25/7/16
S. Solé - Bases de Datos
12
LMD en SQL3
Para consultar tuplas: SELECT
● Para insertar tuplas: INSERT
● Para eliminar tuplas: DELETE
● Para modificar tuplas: UPDATE
●
25/7/16
S. Solé - Bases de Datos
13
Tipos de datos en Postgresql
json
textual
JSON data
jsonb
Binary
JSON data,
decomposed
real
float4
single precision
floating-point
number (4
bytes)
smallint
int2
signed two-byte
integer
smallseri
al
serial2
autoincrementin
g two-byte
integer
serial
serial4
autoincrementin
g four-byte
integer
text
variable-length
character string
time [ (p)
]
[ without
time
zone ]
time of day (no
time zone)
timestam
p [ (p) ]
with time
zone
uuid
25/7/16
S. Solé - Bases de Datos
xml
timestamp
tz
date and time,
including time
zone
universally
unique identifier
XML data
14
Crear Relaciones
CREATE TABLE <nomRelacion> (<nomAt> <tipo> [NOT
NULL | WITH DEFAULT],...);
CREATE TABLE Persona (
ci VARCHAR(10) NOT NULL,
nombre VARCHAR(30) NOT NULL,
direccion VARCHAR(70),
telefono VARCHAR(12),
fechaNac DATE
);
25/7/16
S. Solé - Bases de Datos
15
CREATE en Postgresql
CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } | UNLOGGED ] TABLE [ IF NOT EXISTS ]
table_name ( [
{ column_name data_type [ COLLATE collation ] [ column_constraint [ ... ] ]
| table_constraint
| LIKE source_table [ like_option ... ] }
[, ... ]
])
[ INHERITS ( parent_table [, ... ] ) ]
[ WITH ( storage_parameter [= value] [, ... ] ) | WITH OIDS | WITHOUT OIDS ]
[ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ]
[ TABLESPACE tablespace_name ]
CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } | UNLOGGED ] TABLE [ IF NOT EXISTS ]
table_name
OF type_name [ (
{ column_name WITH OPTIONS [ column_constraint [ ... ] ]
| table_constraint }
[, ... ]
)]
[ WITH ( storage_parameter [= value] [, ... ] ) | WITH OIDS | WITHOUT OIDS ]
[ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ]
[ TABLESPACE tablespace_name ]
25/7/16
S. Solé - Bases de Datos
16
Restricciones
●
●
●
●
Atributo único (unique): no hay dos filas con el mismo valor en
esa columna,
Atributo clave primaria (primary key), es única y no acepta nulos,
Atributo clave foránea (foreign key), hace referencia a la clave
primaria de otra tabla, aceptando nulos.
Restriciones de verificación (check) especifica una condición de
búsqueda
CREATE TABLE Persona (
CREATE TABLE Medico (
ci VARCHAR(10) PRIMARY KEY,
ci VARCHAR(10) NOT NULL FOREIGN
nombre VARCHAR(30) NOT NULL,
KEY (ci) REFERENCES Persona,
direccion VARCHAR(70),
numcolegio VARCHAR(30) NOT NULL
telefono VARCHAR(12),
UNIQUE,
fechaNac DATE,
especialidad VARCHAR(70)
numHijos smallint,
);
CHECK (numHijos>0)
S. Solé - Bases de Datos
17
); 25/7/16
Restricciones atributos de
una relación
CREATE TABLE Paciente (
ci VARCHAR(10) PRIMARY KEY,
numhistoria VARCHAR(30) NOT NULL UNIQUE,
fechaNac DATE,
CHECK (fechaNac >= TODAY()),
CONSTRAINT pkPersona FOREIGN KEY ci
REFERENCES Persona(ci)
);
también
CONSTRAINT fechaNac_const CHECK (fechaNac >= TODAY())
25/7/16
S. Solé - Bases de Datos
18
Restricciones globales en la
BD
CREATE ASSERTION nomAser CHECK (condición)
CREATE ASSERTION cantidades
CHECK (cantVen <=
(SELECT cantExistencia
FROM Producto P, Ventas V
WHERE p.nroPro = V.nroProVen));
Las aserciones permiten asegurar condiciones globales en
toda la base de datos durante su tiempo de vida.
25/7/16
S. Solé - Bases de Datos
19
Políticas de mantenimiento
de integridad referencial
●
●
●
Devolver actualizaciones que la violan (por omisión)
Actualizaciones en cascada (CASCADE)
Colocar en nulo (SET NULL)
CREATE TABLE Ventas (
nroVen CHAR(8) UNIQUE,
fechaVen DATE NOT NULL,
nomCli VARCHAR(32),
nroProVen CHAR(6) REFERENCES Producto(nroPro)
ON DELETE SET NULL
ON UPDATE CASCADE,
cantVen int
);
25/7/16
S. Solé - Bases de Datos
20
Restricciones de dominio
CREATE DOMAIN colores CHAR(8) CHECK (VALUE IN
(‘verde’, ‘negro’, ‘rojo’, ‘azul’));
CREATE TABLE Producto (
nroPro CHAR(6) PRIMARY KEY,
nombrePro VARCHAR(64),
cantidad int,
color colores
);
CREATE TYPE colores AS ENUM (’verde’, ’rojo’, ’gris’);
25/7/16
S. Solé - Bases de Datos
21
SELECT
SELECT A1, A2, A3,..., An
FROM R1, R2, ..., Rm
WHERE condicion
ΠA1, A2,..., An
25/7/16
( σcondicion (R1 x R2 x ... x Rm))
S. Solé - Bases de Datos
22
Descargar