Sunteți pe pagina 1din 24

TRABAJO DE INVESTIGACION BASE DE DATOS

IVAN ANTONIO PARADA MENESES

INSTITUTO SUPERIOR DE EDUCACION RURAL ISER


FACULTAD DE INGENERIAS E INFORMATICA
BASE DE DATOS
PAMPLONA
12/09/2019
TRABAJO DE INVESTIGACION BASE DE DATOS

IVAN ANTONIO PARADA MENESES

TRABAJO DE INVESTIGACION

ING MAURICIO ZAFRA

INSTITUTO SUPERIOR DE EDUCACION RURAL ISER


FACULTAD DE INGENERIAS E INFORMATICA
BASE DE DATOS
PAMPLONA
12/09/2019

2
AGRADECIMIENTOS

3
CONTENIDO

Pág.

1. INTRODUCCIÓN 10
2. OBJETIVOS 11
2.1 OBJETIVO GENERAL 11
2.2 OBJETIVOS ESPECÍFICOS 11
3 PLANTEAMIENTO DEL PROBLEMA Error! Bookmark not defined.
3.2 JUSTIFICACIÓN 12
6 DESARROLLO DEL PROYECTO 16
CONCLUSIONES 22
RECOMENDACIONES 23
BIBLIOGRAFÍA 24

LISTA DE GRÁFICAS

4
Pág
-Sin graficas

LISTA DE ANEXOS
-No aplica

5
GLOSARIO

Archivo Un archivo es un elemento que contiene información y que a su vez se identifica


por un nombre y su extensión. Esta última comienza por un punto y determina el tipo de
Aplicación a la que está asociado el archivo.

Base de datos Una colección de registros o archivos relacionados de manera lógica.

Base de datos relacional Una colección de relaciones normalizadas en la que cada relación
tiene un nombre distintivo. Bases de datos distribuidas Son Bases de Datos que no están
almacenadas totalmente en un solo lugar físico, (están segmentadas) y se comunican por

6
medio de enlaces de comunicaciones a través de una red de computadoras distribuidas
geográficamente.

Campo Un campo es la unidad básica de una base de datos. Un campo puede ser, por
ejemplo, el nombre de una persona. Los nombres de los campos no pueden empezar con
espacios en blanco y caracteres especiales. No pueden llevar puntos, ni signos de
exclamación o corchetes.

Clave principal La clave principal en una tabla de una base de datos que se selecciona
para identificar de forma unívoca cada registro de la tabla. Por ejemplo, en una tabla de
alumnos podría ser su número de expediente académico.

Consulta Mediante las consultas tendrás la posibilidad de obtener toda la información


contenida en las tablas añadiendo interesantes funcionalidades.

DDL Lenguaje de definición de datos utilizado para describir todas las estructuras de
información y los programas que se usan para construir, actualizar e introducir la
información que contiene una base de datos.

Diseño de la base de datos Cuando trabajamos con bases de datos relacionales es habitual
distribuir la información en diferentes tablas vinculadas entre sí. Esta característica obliga a
un proceso de planificación y diseño previo para obtener el resultado esperado. Piensa que
deseas almacenar en la base de datos, qué datos necesitas recuperar y en definitiva,
determina el propósito final del proyecto para establecer unos cimientos lo suficientemente
sólidos.

DBMS Conjunto de programas destinados a manejar la creación y todos los accesos a las
bases de datos. Se compone de un lenguaje de definición de datos (DDL: Data Definition
Language), de un lenguaje de manipulación de datos (DML: Data Manipulation Language)
y de un lenguaje de consulta (SQL: Structured Query Language).

Formulario Los formularios resultan útiles principalmente en tareas de introducción de


información. Cuando se trata de incluir pocos datos podemos hacerlo directamente sobre
las tablas pero cuando el volumen es importante, este método se vuelve poco eficaz. Para
resolver este problema tenemos los formularios donde la inclusión de datos se hace de
forma mucho más intuitiva y sencilla.

HTML Siglas de HyperText Markup Language (Lenguaje de Etiquetas de Hipertexto), es el


lenguaje predominante para la construcción de páginas web. Se utiliza para describir la
estructura y el contenido en forma de texto, así como para complementar el texto con otros

7
objetos, como por ejemplo, imágenes. Los archivos creados en este lenguaje suelen
identificarse por su extensión del tipo: "nombre_archivo.html". Informe Los informes tienen
como objetivo proporcionar las herramientas necesarias para obtener una copia impresa de
los datos existentes en una base de datos aunque existen otras posibilidades tan
interesantes como la generación de archivos en formato PDF. Habitualmente, los informes
se suelen construir a partir de los resultados obtenidos de la ejecución de consultas. De
esta forma combinamos la posibilidad de seleccionar sólo los datos que deseemos que nos
ofrecen las consultas con la ventaja de imprimirlos que aportan los informes. Integridad
referencial La integridad referencial es una propiedad imprescindible en cualquier base de
datos. Gracias a la integridad referencial se garantiza que un conjunto de datos (registro)
siempre se relacione con otros conjuntos válidos, es decir, que existen en la base de datos.
Implica que en todo momento dichos datos sean correctos, sin repeticiones innecesarias,
datos perdidos y relaciones mal resueltas.

JDBC La Conectividad de Bases de Datos Java (Java Database Connectivity, JDBC) es


una especificación de la interfaz de aplicación de programa (application program interface,
API) para conectar los programas escritos en Java a los datos en bases de datos populares.
Registro Un registro es el conjunto de información referida a una misma unidad. Relación
El objetivo de estas relaciones sería principalmente evitar la duplicidad de información y en
consecuencia, optimizar el rendimiento de la base de datos. Tabla Unidad donde crearemos
el conjunto de datos de nuestra base de datos. Estos datos estarán ordenados en columnas
verticales. En ella se definen los campos y sus características.

Tulpa También se denomina de este modo a un registro o fila de una tabla. Valor nulo
Representa un valor para un atributo que es actualmente desconocido o no es aplicable
para ese registro. Vista El resultado dinámico de una o más operaciones relacionales que
operan sobre las relaciones base para producir otra relación. Una vista es una relación
virtual que no tiene por qué existir necesariamente en la base de datos, sino que puede
producirse cuando se solicite por parte de un usuario concreto, generándose en el momento
de la solicitud.

8
RESUMEN

Los procedimientos o funciones son estructuras que aglutinan una serie de


instrucciones con el fin de evitar tener que repetir código, esto produce una mejora
en la legibilidad y eficiencia del código, así como un mejor control de errores.
En el SGBD PostgreSQL un procedimiento no devuelve ningún resultado, en cambio
una función si devuelve un resultado.
Buenas prácticas:

9
 Documentar el código generado, incluyendo detalles como autor del
procedimiento, fecha de creación y versión actual, así́ como un registro de los
cambios que dicho procedimiento ha sufrido a lo largo de su vida.
 Asegurarse de que los tipos de datos están correctamente definidos, evita
problemas de compilación o transformación de tipos que baja el rendimiento de
la base de datos.
 Utilizar las llamadas a procedimientos desde las aplicaciones, siempre que
sea posible que actúan como caja negra frente a la base de datos y protege a
las aplicaciones de posibles cambios de estructuras lógicas de las consultas.
 Evitar la generación de código dinámico, evita errores a largo plazo si las
estructuras de datos cambian, así como evitar problemas de seguridad
(denominados Inyección SQL)
 Evitar llamadas a funciones de manera innecesaria, ejemplo llamar a la
función now():date para pedir la hora cada vez que se estime en vez de
almacenarla en una variable temporal en la que solo se la llame una vez.

PALABRAS CLAVE: Presentación trabajo investigación, funciones en postgresql,


base de datos.

1. INTRODUCCIÓN

El lenguaje estructurado de consultas (SQL) es un lenguaje de base de datos


normalizado, utilizado por la gran mayoría de los servidores de bases de datos que
manejan bases de datos relacionales u objeto-relacionales. Es un lenguaje
declarativo en el que las órdenes especifican cual debe ser el resultado y no la
manera de conseguirlo (como ocurre en los lenguajes procedimentales). Al ser
declarativo es muy sistemático, sencillo y con una curva de aprendizaje muy

10
agradable ya que sus palabras clave permiten escribir las ordenes como si fueran
frases en las que se especifica (en inglés) que es lo que queremos obtener. Por
ejemplo: SELECT nombre FROM municipios WHERE población>5000 ORDER BY
población; Devuelve el nombre de aquellos municipios con una población mayor de
5000 habitantes y los presenta ordenados por tamaño. Sin embargo los lenguajes
declarativos carecen de la potencia de los procedimentales Se ha convertido, debido
a su eficiencia, en un estándar para las bases de datos relacionales, de hecho el
gran éxito del modelo de base de datos relacional se debe en parte a la utilización
de un lenguaje como SQL. A pesar de su teórico carácter estándar, se han
desarrollado, sobre una base común, diversas versiones ampliadas como las de
Oracle o la de Microsoft SQL server. Incluye diversos tipos de capacidades: •
Comandos para la definición y creación de una base de datos (create table). •
Comandos para inserción, borrado o modificación de datos (insert, delete, update).
• Comandos para la consulta de datos seleccionados de acuerdo a criterios
complejos que involucran diversas tablas relacionadas por un campo común
(select). • Capacidades aritméticas: En SQL es posible incluir operaciones
aritméticas así como comparaciones, por ejemplo A > B + 3. • Asignación y
comandos de impresión: es posible imprimir una tabla construida por una consulta
o almacenarla como una nueva tabla.

2. OBJETIVOS

2.1 OBJETIVO GENERAL

Identificar los conceptos y aplicación de las funciones existentes en el lenguaje SQL


aprendiendo su declaración como su invocación en una base de datos.

2.2 OBJETIVOS ESPECÍFICOS

11
 Asignación y comandos de impresión: es posible imprimir una tabla construida por
una consulta o almacenarla como una nueva tabla.

 Funciones de agregación: Operaciones tales como promedio (average), suma


(sum), máximo (max), etc. se pueden aplicar a las columnas de una tabla para
obtener una cantidad única y, a su vez, incluirla en consultas más complejas.

3.2 JUSTIFICACIÓN

----------------------------------------------------------------------
-----
--
-- Crear la tabla donde se reflejaran los nuevos cliente menores de
edad

12
--
----------------------------------------------------------------------
-----

CREATE TABLE ventas.tb_promocion_joven


(
promocion_joven_id SERIAL PRIMARY KEY,
client_name char(40) NOT NULL,
age integer,
address char(120),
city char(25),
country char(50) NOT NULL,
contact_email char(100),
phone char(15),
created_date date,
create_by_user char(50)
);

----------------------------------------------------------------------
------
--
-- Crear una funcion que separe a los clientes jovenes en tb_promocion
joven
--
----------------------------------------------------------------------
------

CREATE OR REPLACE FUNCTION ventas.promocion_joven()


RETURNS trigger AS
$$
/*
* Procedimiento: promocion_joven
* Autor: Diego Calvo Barreno
* Fecha creación: 2017-05-29
* Versión: 1.0
* Parámetros: sin parámetros
* Descripción: Procedimiento que cargará en la tabla
tb_promocion_joven
* los clientes que al darse de alta tienen menos de 18 años
*/
DECLARE
-- Define la estructura temporal que servirá para realizar las
operaciones
temp_row ventas.tb_promocion_joven%rowtype;

BEGIN

IF (NEW.age < 18) THEN

-- Capturar datos del nuevo cliente creado


temp_row.promocion_joven_id := NEW.client_id;
temp_row.client_name := NEW.client_name;

13
temp_row.age := NEW.age;
temp_row.address := NEW.address;
temp_row.city := NEW.city;
temp_row.country := NEW.country;
temp_row.contact_email := NEW.contact_email;
temp_row.phone := NEW.phone;

-- Capturar el usuario y el momento de la operación


temp_row.create_by_user := user;
temp_row.created_date := now();

BEGIN
-- Inserta los valores en la tabla CDC
INSERT INTO ventas.tb_promocion_joven SELECT temp_row.*;
END;

-- Devuelve el la estructura grabada NEW


RETURN NEW;
END IF;

RETURN NULL;

END; -- Fin del procedimiento


$$
LANGUAGE plpgsql;

----------------------------------------------------------------------
------
--
-- Crear el disparador que activa la funcion
--
----------------------------------------------------------------------
------

-- Definición del disparador que llama a la función anteriormente


descrita
CREATE TRIGGER tg_promocion_joven
-- Este disparador se activa con los eventos de inserción,
actualización y borrado
AFTER INSERT ON ventas.tb_client
FOR EACH ROW
EXECUTE PROCEDURE ventas.promocion_joven()
;

----------------------------------------------------------------------
------
--
-- Inserciones que prueban la funcion
--
----------------------------------------------------------------------
------

14
INSERT INTO ventas.tb_client ( client_id, client_name, age, address,
city, country, contact_email, phone, created_date ) VALUES
('10000', 'Susana', '15','C/ Real 1', 'Soria', 'España', NULL, NULL,
NULL),
('10001', 'Rosana', '16','C/ Real 1', 'Soria', 'España', NULL, NULL,
NULL),
('10002', 'Javier', '35','C/ Real 2', 'Soria', 'España', NULL, NULL,
NULL);

15
6 DESARROLLO DEL PROYECTO

La sintaxis para crear funciones en PostgreSql es:


CREATE OR REPLACE FUNCTION
functionName(parameter1 type1, parameter2 type2, ... parameterN typeN)
RETURNS
returnType
AS
$$
BEGIN
# Code Here
END;
$$
LANGUAGE
plpgsql;

Donde:
functionName es el nombre de la función.
parameter1 a parameterN es el nombre del parámetro.
type1 a typeN es el tipo de dato del parámetro.
returnType es el tipo de dato que regresa la función.
$$ son delimitadores, el código tiene que ir encerrado en estos caracteres.
BEGIN y END inician y terminan el bloque de código de la función.
LANGUAGE plpgsql indica que el lenguaje utilizado es Procedure Language, de
PostgreSql.
El lenguaje puede ser SQL también. Si este es el caso, cambia la forma de utilizar
los parámetros.

Comencemos creando una función que regrese un entero con la fecha en formato
Unix Time, sin parámetros.
CREATE OR REPLACE FUNCTION
unixtime()

16
RETURNS
integer
AS
$$
BEGIN
RETURN
EXTRACT(
epoch FROM now() AT TIME ZONE 'utc'
)::int;
END;
$$
LANGUAGE
plpgsql;

Donde:
unixtime es el nombre de la función.
No tenemos parámetros.
integer es el tipo de dato que regresa la función.

Segundo ejemplo, la misma función que con un parámetro en el que podamos


establecer una fecha particular, y en caso de que no la establezcamos, nos
devuelva el unixtime para la fecha actual:
CREATE OR REPLACE FUNCTION
unixtime(p_date timestamp DEFAULT now())
RETURNS
integer
AS
$$
BEGIN
RETURN
EXTRACT(

17
epoch FROM p_date AT TIME ZONE 'utc'
)::int;

END;
$$
LANGUAGE
plpgsql;

Como podemos ver, el parámetro es “p_date” y en caso de que no exista,


tomamos el la fecha actual con “now()”. Se utilizaría de esta forma:
-- El unixtime, con fecha preestablecida y sin ella
SELECT unixtime('2016-01-01 14:01:01'), unixtime();

Excelente! Ahora vamos a crear una función para devolver una cadena encriptada
con el algoritmo SHA1.
**Nota**Si no tienes instalado el módulo pgcrypt, instalalo con el comando:
CREATE EXTENSION pgcrypto;

Ahora codificamos la función:


CREATE OR REPLACE FUNCTION
sha1(bytea)
RETURNS
text
AS
$$
SELECT encode(digest($1, 'sha1'), 'hex')
$$
LANGUAGE
SQL STRICT IMMUTABLE;

18
El lenguaje es SQL, STRICT es para que regrese null si el argumento es null e
IMMUTABLE para indicarle que no accederá a datos, que solo utilizará los
parámetros datos. Como podemos observar, el parámetro utilizado no tiene
nombre, solo el tipo, y lo utilizamos con denotación ordinal $1, es decir el primer
argumento.

Comandos:

Comandos Existen dos tipos de comandos SQL:

• Los que permiten crear y definir nuevas bases de datos, campos e índices.
CREATE Utilizado para crear nuevas tablas, campos e índices

DROP: Empleado para eliminar tablas e índices 1 equivalente a una fila de una
tabla 2A partir de este momento, cuando escriba una sentencia SQL lo haré en
negrita, utilizando el prompt de PostgreSQL que consiste en el nombre de la base
de datos (si no se especifica ninguna utilizare de forma genérica bd) seguido de
=#, y con los diferentes elementos de la consulta separados por lineas. Esto último
facilita la interpretación de la orden, pero recuerda que a la hora de trabajar es
preferible escribir toda la orden en una sola línea

ALTER: Utilizado para modificar las tablas agregando campos o cambiando la


definición de los campos. • Los que permiten generar consultas para ordenar,
filtrar y extraer datos de la base de datos.

SELECT: Utilizado para consultar registros de la base de datos que satisfagan un


criterio determinado

INSERT: Utilizado para cargar lotes de datos en la base de datos en una única
operación.

UPDATE: Utilizado para modificar los valores de los campos y registros


especificados

19
DELETE: Utilizado para eliminar registros de una tabla de una base de datos 1.3
Cláusulas Las cláusulas son condiciones utilizadas para concretar que datos son
los que se desea seleccionar o manipular.

FROM: Utilizada para especificar la tabla de la cual se van a seleccionar los


registros

WHERE: Utilizada para especificar las condiciones que deben reunir los registros
que se van a seleccionar

GROUP BY: Utilizada para clasificar los registros seleccionados en grupos


específicos

HAVING: Utilizada para expresar la condición que debe satisfacer cada grupo

ORDER BY: Utilizada para ordenar los registros seleccionados de acuerdo con un
orden específico

Operadores Lógicos:

AND: Evalúa dos condiciones y devuelve un valor de verdad sólo si ambas son
ciertas.

OR: Evalúa dos condiciones y devuelve un valor de verdad si alguna de las dos
es cierta.

NOT: Devuelve el valor contrario de la expresión. 1.5 Operadores de Comparación


< Menor que > Mayor que <> Distinto de <= Menor o Igual que >= Mayor o Igual
que 3 = Igual que

BETWEEN: Utilizado para especificar un intervalo de valores.

LIKE: Para la comparación de una cadena de texto con una expresión regular 1.6
Funciones de Agregación Las funciones de agregación se usan dentro de una
cláusula

SELECT: en grupos de registros para devolver un único valor que se aplica a un


grupo de registros.

20
AVG: Utilizada para calcular el promedio de los valores de un campo
determinado.

COUNT: Utilizada para devolver el número de registros de la selección SUM


Utilizada para devolver la suma de todos los valores de un campo determinado .

MAX: Utilizada para devolver el valor más alto de un campo especificado MIN
Utilizada para devolver el valor más bajo de un campo especificado.

DISTINCT: Omite los registros cuyos campos seleccionados coincidan totalmente.


Con otras palabras el predicado DISTINCT devuelve aquellos registros cuyos
campos indicados en la cláusula SELECT posean un contenido diferente. Clima=#
SELECT

DISTINCT : indentinm, x, y, z, nombre FROM observatorios; DISTINC ON (campo)


Omite registros que coincidan en el campo seleccionado. Por ejemplo la siguiente
orden devuelve un sólo observatorio por valor de altitud: clima=# SELECT
DISTINCT ON (z) indentinm,x,y,z,nombre FROM observatorios;

21
CONCLUSIONES

En base a lo anterior concluyo que en el lenguaje de sql específicamente


basándome en el trabajo de postgressql y todo lo investigado anteriormente existen
diferentes tipos de funciones y operadores que facilitan el trabajo de búsqueda
eliminación remplazamiento en una base de datos en una tabla.

22
RECOMENDACIONES

No aplica.

23
BIBLIOGRAFÍA
1 https://sites.google.com/site/basdededatosrelacionales/home/glosario
2. https://www.um.es/geograf/sigmur/sigpdf/postgresql.pdf
3. http://www.diegocalvo.es/procedimientos-y-funciones-en-postgresql/
4. https://desarrollo.espino.info/bases-de-datos/funciones-en-postgresql.html
5. https://es.wikipedia.org/wiki/SQL#targetText=SQL%20(por%20sus%20siglas
%20en,como%20realizar%20cambios%20en%20ellas.
6. https://www.postgresql.org
7. https://www.uoc.edu/pdf/masters/oficiales/img/913.pdf
8. http://bibliotecadigital.univalle.edu.co/bitstream/10893/10313/3/Fundamentos
%20de%20Bases%20de%20Datos.pdf
9. https://rua.ua.es/dspace/bitstream/10045/2990/1/ApuntesBD1.pdf

24

S-ar putea să vă placă și