Professional Documents
Culture Documents
SMBD y SQL Avanzado
SMBD y SQL Avanzado
MinisteriodelPoderPopularparalaEducaciónSuperior
UniversidadPolitécnicaTerritorialJoséAntonioAnzoátegui.
SMBDYSQLAVANZADO
Docente: Estudiante:
YormisPérez M
arielysAraujo
C.I27.592.227
IF01
T4-FASEI
INTENSIVO
ElTigre,28deAgostodel2021.
Arquitecturaatresniveles
En 1975 el Organismo de Estandarización de Los Estados Unidos (ANSI)
publica un informe clave para la posterior evolución de los S.G.B.D. Insiste en la
necesidad
de
conseguir
total
independencia
entre
datos
y aplicaciones;
propone
una
arquitecturaa3nivelesydefineelmodeloconceptualparaconseguirtalesobjetivos
La arquitectura interna de SGBD que sigue esta normativa presenta en su
interiortresnivelesperfectamentediferenciados:
1. NivelInternooFísico
2. NivelConceptual
3. NivelExternooLógico
● La
independencia
lógica
es
la
capacidad
de
modificar
el
esquema
conceptual
sin tener que alterar los esquemas externos
ni
los
programas
de
aplicación.
Se puede modificar el esquema conceptual para
ampliar
la
base
de
datos
o
para reducirla. Si, por ejemplo, se reduce la base de datos eliminando una
entidad, los esquemas externos que no se refieran a ella no
deberán
verse
afectados.
● La independencia
física
es
la
capacidad
de
modificar
el
esquema
interno
sin
tener
que
alterar
el
esquema
conceptual
(o
los
externos).
Por
ejemplo,
puede
ser necesario reorganizar ciertos ficheros físicos con el fin de mejorar el
rendimiento de las operaciones de consulta o de actualización de datos.
Dado que la independencia física se refiere sólo a la separación entre las
aplicaciones y las estructuras físicas de almacenamiento, es más fácil de
conseguirquelaindependencialógica.
En los SGBD que tienen la arquitectura de varios niveles es necesario
ampliar el catálogo o diccionario, de modo que incluya información sobre cómo
establecer
la
correspondencia
entre
las
peticiones
de
los
usuarios
y los
datos,
entre
los diversos niveles. El SGBD utiliza una serie
de
procedimientos
adicionales
para
realizar estas correspondencias haciendo referencia a la información de
correspondenciaqueseencuentraenelcatálogo.
La
independencia
de
datos
se
consigue
porque
al
modificarse
el
esquema
en
algún
nivel,
el
esquema
del
nivel
inmediato
superior
permanece
sin
cambios,
sólo
se
modifica la correspondencia entre los dos niveles. No es preciso modificar los
programasdeaplicaciónquehacenreferenciaalesquemadelnivelsuperior.
Por lo tanto, la arquitectura de tres
niveles
puede
facilitar
la
obtención
de
la
verdadera independencia de datos, tanto física como lógica. Sin
embargo,
los
dos
niveles de correspondencia implican un gasto extra durante la ejecución de una
consulta o de un
programa,
lo
cual
reduce
la
eficiencia
del
SGBD.
Es
por
esto
que
muypocosSGBDhanimplementadoestaarquitecturacompleta.
Debido
a la
independencia
de
niveles,
las
Base
de
Datos.
son
flexibles
y adaptables
aloscambios.
LenguajeseInterfacesdelSMBD
Un
sistema
manejador
de
bases
de
datos
(SGBD,
por
sus
siglas
en
inglés)
o
DataBase Management System (DBMS) es una colección de software muy
específico, orientado
al
manejo
de
base
de
datos, cuya
función
es
servir
de
interfaz
entrelabasededatos,elusuarioylasdistintasaplicacionesutilizadas.
Su
uso
permite
realizar
un
mejor
control
a los
administradores
de
sistemas
y,
por otro lado, también obtener mejores resultados a la hora de realizar consultas
que ayuden a la gestión empresarial mediante la generación de la tan
perseguida
ventajacompetitiva.
Estas particularidades son algunos de los rasgos definitorios de un SGBD,
cuyosprocesos esenciales son la manipulación y construcción de las bases de
datos, así como la definición de los mismos. Son características que, a su vez,
facilitan el cumplimiento de una
serie
de
funcionesrelacionadas
con
muchos
de
los
aspectos
apuntados,
entre
otros
la
definición
de
los
datos,
su
fácil
manipulación,
una
rápida
gestión,
poder
representar
relaciones
complejas
entre
datos
y otros
aspectos
relacionadosconlaseguridadyvalidezdelosdatos.
Los lenguajes más utilizados en un Manejador de Base de Datos
(DBMS)
El
Data
Control
Language
(DCL),
por
último,
también
es
un
lenguaje
utilizado
en
un
DBMS
por
el administrador,
en
esta
ocasión
con
el
fin
de
controlar
el
acceso
alosdatosdelabasededatos.
Cursor: Modificacion
por
cursor.
Proteccion
contra
modificaciones
concurrentes.
Un cursor permite acceder un resultado (result set), una fila (registro) a la
vez.
Debido
a su
orientación
en
filas,
los
cursores
a menudo
son
utilizados
en
ciclos
(loops)quelocalizanyprocesanunafiladentrodecadaiteracióndelciclo.
LaimplementacióndelcursorenMySQLtienelassiguientespropiedades:
Este es proporcionado para cursores de solo lectura (read-only); no pueden ser
utilizadosparamodificartablas.
Los
cursores
solo
avanzan
a través
de
un
resultado
fila
por
fila;
no
permiten
ir
hacia
atrásyluegohaciadelatantelibremente.
Para nosotros poder hacer uso de un cursor sera necesario seguir los
siguientes
pasos
● CrearuncursorapartirdeunasentenciaSQL
● Aperturadelcursor
● AccesoaDatos
● Cierredelcursor.
Para
usar
un
cursor
en
una
rutina
almacenada,
se
debe
escribir
la
sentencia
DECLARE CURSOR que nombra
el
cursor
y asociarlo
con
una
sentencia
SELECT
que produce un resultado (result set): DECLARE cursor_name CURSOR FOR
select_statement
Cada
cursor
declarado
dentro
de
un
bloque
debe
tener
un
nombre
diferente. Para abrir el cursor, coloque su nombre en una sentencia OPEN. Esto
ejecuta la sentencia SELECT asociada con el cursor: OPEN cursor_name La
sentencia FETCH localiza la próxima fila o registro de un resultado de un cursor
abierto. La sentencia nombra el cursor y proporciona una lista de
variables
dentro
del cual localizará los valores de las columnas de la fila. Aquí debe estar una
variableporcolumnaenelresultado(resultset).
Es importante mencionar que en MySQL los cursores solo podran ser
utilizadosdentrodestoredprocedures.
Ejemplo
DROPPROCEDUREIFEXISTScargar_imagen;
DELIMITER$$
CREATEPROCEDUREcargar_imagen(
)BEGIN
--VariablesdondealmacenarelidquedelaSELECT
DECLAREi_idimagenBIGINT;
DECLAREv_imagenVARCHAR(250);
--Variableparacontrolarelfindelbucle
DECLAREfindelbucleINTEGERDEFAULT0;
--LaSELECTquequeremos
DECLAREcursor_elidimagenCURSORFOR
SELECTimagen,id_productoFROMimagenes;
--C
uandonoexistanmasdatosfindelbuclesepondraa1
DECLARECONTINUEHANDLERFORNOTFOUNDSETfindelbucle=1;
-- DECLARECONTINUEHANDLERFORNOTFOUNDSET@hecho=TRUE;
OPENcursor_elidimagen;
bucle:LOOP
FETCHcursor_elidimagenINTOv_imagen,i_idimagen;
IFfindelbucle=1THEN
LEAVEbucle;
ENDIF;
UPDATEoc_productSETimage=v_imagenWHEREmodel=i_idimagen;
ENDLOOPbucle;
CLOSEcursor_elidimagen;
END$$
DELIMITER;
QuésonlosprocedimientosalmacenadosMySQL
Los procedimientos almacenados MySQL, también conocidos como Stored
Procedure, se presentan como conjuntos de instrucciones escritas en el lenguaje
SQL. Su objetivo es realizar una tarea determinada, desde operaciones sencillas
hasta tareas muy complejas. Los procedimientos almacenados MySQL contienen
unaomásinstruccionesSQLademásdeunprocesamientomanipuladorológico.
La característica fundamental de los procedimientos almacenados MySQL es que
estos
comandos
se
quedan
almacenados
y se
ejecutan
en
el
servidor
o en
el
motor
de bases de
datos.
Este
aspecto
permite
que
las
aplicaciones
clientes
las
ejecuten
directamentemediantellamadaaunaAPI.
Los procedimientos almacenados MySQL se han diseñado para aligerar a las
aplicaciones
clientes,
pudiendo
ejecutar
directamente
en
el
servidor
aquellas
tareas
pesadasyquenecesitanmuchosrecursos.
Estas son las características principales de los procedimientos almacenados
MySQL:
● Puedenrecibirydevolverparámetros.
● Pueden manejar tablas, ejecutando operaciones e iteraciones
delectura/escritura.
● Puedendevolverunatablacomoresultado.
● Sealmacenanenlabasededatosenlacualsecrean.
● Nodependendeningunatablaenparticular.
● Puedenaceptarrecursividad.
CrearprocedimientosalmacenadosMySQL
Los procedimientos almacenados se implementan desde la versión 5.0 de
MySQL y se pueden
crear
en
casi
todas
las
bases
de
datos,
como
Oracle,
MySQL
Server
y Postgresql.
Para
crear
y gestionar
los
procedimientos
almacenados
MySQL
existeunaseriedecomandosdedicados:
BENEFICIOSDELOSPROCEDIMIENTOSALMACENADOS
•
Sintaxis
SQL
más
flexible.
Las
rutinas
almacenadas
(procedimientos
almacenados)
pueden ser escritas utilizando extensiones para la sintaxis SQL, tales como
composición de sentencias y construcciones para el
control
de
flujo,
esto
facilita
la
expresióndelógicascomplejas.
• Capacidades para el manejo de errores. Una rutina almacenada puede crear
manejadores de errores que son utilizados cuando surgen condiciones
excepcionales. La ocurrencia de
un
error
no
necesitará
causar
la
terminación
de
la
rutinasinoquepuedesermanejadaapropiadamente.
• Fácil de mantener. Una única copia de una rutina es más fácil de
mantener
que
una copia insertada dentro de
cada
aplicación.
La
actualización
de
aplicaciones
es
más fácil si todos utilizan una rutina en común, debido a que si es necesario
actualizarunasolarutina,notodaslasaplicacionesquelausan.
•
Los
clientes
se
benefician
de
las
actualizaciones
del
servidor.
La
actualización
del
servidor (upgrades) mejoran el desempeño de las rutinas almacenadas que se
ejecutan en el host. Esto mejora el desempeño para las aplicaciones clientes que
usanlasrutinasauncuandolasmáquinasclientesnoseanactualizadas.
• Mejor
seguridad.
Una
rutina
puede
ser
escrita
para
acceder
datos
sensibles
sobre
el definidor de la rutina para el
invocador
de
la
rutina,
pero
no
retorna
nada
que
el
invocador no debería ver. Una rutina también puede ser utilizada para modificar
tablas de manera segura, sin
darle
a los
usuarios
acceso
directo
a las
tablas.
Esto
previenelarealizacióndecambiosposiblementenosegurossobreellos.
DIFERENCIASENTREFUNCIONESYPROCEDIMIENTOS
• Un procedimiento no retorna un valor. En su lugar este es invocado con una
sentencia
CALL
para
realizar
una
operación
tales
como
la
modificación
de
una
tabla
oelprocesamientoderegistrosrecuperados.
• Una función es invocada dentro de una expresión y retorna un solo valor
directamente
al
llamador
para
ser
utilizado
en
la
expresión.
Es
decir,
una
función
es
utilizada en expresiones de la misma forma como una constante, una función
preconstruida,ounareferenciaalacolumnadeunatabla.
• No
se
puede
invocar
una
función
con
una
sentencia
CALL,
ni
se
puede
invocar
un
procedimiento
almacenado
en
una
expresión.
La
sintaxis
para
la
creación
de
rutinas
difierealgoparalosprocedimientosyfunciones:
•
Los
parámetros
de
procedimiento
pueden
ser
definidos
como
de
solo
entrada,
solo
salida, o para ambos entrada y salida. Esto significa que un procedimiento puede
pasar valores de regreso al llamador por la utilización de parámetros de salida.
Estos valores pueden ser accedidos en sentencias que sigan la sentencia CALL.
Las funciones solo tienen parámetros de entrada. Como resultado,
aunque
ambos
los procedimientos
y funciones
pueden
tener
parámetros,
la
sintaxis
de
declaración
deparámetrosdeprocedimientodifierenparalasfunciones.
EJEMPLO:
El ambiente SQL: Ambientes. Esquemas. Catálogos. Clientes y
servidoresenelambienteSQL
El
esquema
de
la
base
de
datos.
Una
vez
construido
el
esquema
conceptual,
el
diseño
de
bases
de
datos
obliga
a realizar
varias
tareas
previas
a la
construcción
del esquema lógico global del sistema, también llamado esquema de bases de
datos.
Por
el
momento,
basta
saber
que
el
esquema
de
la
base
de
datos
representa
la descripción de los datos de la base de datos, mientras que el esquema
conceptual representaba a la realidad. La primera de las tareas necesarias es la
identificación de los datos requeridos, para obtener como resultado las partes del
área
de
aplicación
que
deben
representarse
mediante
datos,
y en
qué
forma
deben
presentarseéstosalosusuarios.
SQL Server utiliza la arquitectura Cliente / servidor para coodinar el
trabajo
entre el equipo cliente
y el
equipo
servidor,
dependiendo
del
tipo
de
aplicacion
que
se quiera programar la reparticion de la carga de trabajo entre el cliente y el
servidor.
● Equipo cliente : Se suele encargar de la parte logica y de mostrar la
informacionalusuarioquerealizaunapeticion.
● Equipo
servidor
SQL
Server:
Se
encarga
de
administrar
la
base
de
datos,
de
gestionar los recursos del servidor (CPU, memoria, etc) y por supuesto de
resolverydevolverelresultadodelapeticionrealizadaporelcliente.
EJERCICIO
1)
Crear
un
Stored
Procedure
que
permita
incrementar
en
20
el
numero
de
paginas
de
cada
libro(LIBROSTABLE).
DROPPROCEDUREIFEXISTSprocesoLibros
DELIMITER$$
CREATEPROCEDUREprocesoLibros()
BEGIN
DECLAREidINT;
DECLAREpaginasINT;
DECLAREtituloVARCHAR(255);
DECLAREfinalINTDEFAULT0;
DECLAREcursor1CURSORFORSELECTlibro_id,titulo,paginasFROMLibros;
DECLARECONTINUEHANDLERFORNOTFOUNDSETfinal=1;
OPENcursor1;
bucle:LOOP
FETCHcursor1INTOid,titulo,paginas;
IFfinal=1THEN
LEAVEbucle;
ENDIF;
UPDATElibrosSETpaginas=paginas+20WHERElibro_id=id;
SELECT
tituloAS"titulo",
paginasAS"anterior",
pagAS"Incremento",
FROMlibrosWHERElibro_id=id;
ENDLOOPbucle;
CLOSEcursor1;
END$$
DELIMITER
2) Crear un store procedure que permita obtener los productos por el estado de
disponibilidad.