Está en la página 1de 27

Taller de Base de Datos

Unidad 1

Taller de Base de Datos


Conceptos Generales:

Algunas dcadas atrs, la tecnologa Mainframe permita desarrollar y


operar sistemas que residan en un nico computador con grandes
capacidades de procesamiento y almacenamiento.
Todo el procesamiento se ejecuta en el computador central.
Los usuarios interactan mediante los llamados terminales tontos.
Cada fabricante de mainframes implementa su propio sistema operativo y
su propio sistema de comunicaciones.

Taller de Base de Datos

Terminal

Mainframe

Taller de Base de Datos


Conceptos Generales:

Problema de los sistemas mainframe Incompatibilidad total entre


sistemas que residen en computadores de distintos fabricantes.
Clientes esclavizados al proveedor.

Avances en las telecomunicaciones traen aires de cambio:

ISO define un estndar de modelo de red.


Expansin de los microcomputadores (con capacidad de procesamiento).
Aparece la tecnologa de red local.
Tecnologa Ethernet evoluciona rpidamente.
DoD experimenta con ArpaNet, lo que desemboca en la tecnologa TCP/IP.
Expansin de la tecnologa Internet.
Sistema Unix se propone como plataforma abierta.

Lo anterior ofrece diversas alternativas para la implementacin de


sistemas computacionales.
Diferentes computadores hablan el mismo lenguaje TCP/IP
4

Taller de Base de Datos


Conceptos Generales:

Ahora existen diversos tipos de computadores que pueden conectarse por


medio de una red (LAN/WAN).
Las distintas partes de un sistema computacional pueden residir en
distintos computadores.
Problema para los desarrolladores Cmo distribuir los componentes
de un sistema entre diversos computadores? Arquitectura de software:

Monoltica.
Cliente / servidor.
Tres capas.
SOA Service Oriented Architecture.

La arquitectura cliente/servidor es ampliamente utilizada. Consiste en


disponer aplicaciones servidoras en equipos potentes, a las cuales se
conectan aplicaciones clientes para solicitar un servicio.
Actualmente gran parte de los sistemas computacionales se implementan
bajo la arquitectura cliente/servidor, utilizando tecnologa TCP/IP.
5

Taller de Base de Datos


Ejemplos de Sistemas Cliente/servidor:

FTP File Transfer Protocol: Un servidor FTP dispone archivos de datos


para descargar y aplica control de acceso. Distintos clientes FTP se
conectan al servidor y descargan o suben archivos.
Correo electrnico: Un servidor e-mail se ocupa de enviar los mensajes a
las casillas e-mail (SMTP). Otro servidor e-mail se ocupa de recibir los
mensajes (POP3, IMAP). Distintos clientes e-mail se conectan a estos
servidores para enviar y recibir mensajes.
Web: Un servidor Web administra las pginas web residentes en el equipo
servidor (escritas en HTML). Diversos clientes web (navegadores) se
conectan al servidor web para solicitar acceso a las pginas web.
Base de datos: Un servidor de base de datos administra diversas bases
residentes en el equipo servidor. Las aplicaciones clientes se ejecutan en
computadores usuarios (escritas en algn lenguaje de programacin).
Estas aplicaciones se conectan al servidor para solicitar consultas de datos
y/o actualizacin de datos.
6

Taller de Base de Datos


Componentes de Hardware de un Sistema Cliente/Servidor:

Clientes: usualmente son computadores personales operados por los usuarios,


aunque actualmente tambin se utilizan equipos porttiles.
Red: Cables y medios de comunicacin, tarjetas de red, switches, routers y otros
dispositivos que permiten conectar los clientes con los servidores. Actualmente las
comunicaciones comprenden redes locales y redes de rea amplia.
Servidor: Usualmente llamado servidor de base de datos, es un computador que
tiene suficiente memoria RAM, potencia de procesamiento y suficiente espacio de
almacenamiento, para almacenar y administrar los datos de los sistemas.

Taller de Base de Datos


Componentes de Software de un Sistema Cliente/Servidor:

Software de Servidor: Para almacenar y administrar las bases de datos, se requiere


un Sistema Administrador de Bases de Datos o DBMS. El trabajo efectuado por el
DBMS, se denomina en forma genrica como procesamiento back-end y el
servidor BD mismo se denomina back-end.
Software Cliente: Aplicacin que se ejecuta en el hardware cliente, pero usa datos
almacenados en el servidor. Para acceder a los datos requiere una API (Aplication
Program Interface), la cual provee la interfaz entre la aplicacin y el DBMS; por ej:
ODBC, JDBC. EL trabajo efectuado por el cliente, usualmente es referido como
procesamiento front-end y el cliente mismo se denomina front-end.
Interfaz SQL: La aplicacin cliente se comunica con el DBMS mediante consultas
SQL a travs de las API. SQL es el lenguaje estndar para trabajar con bases de
datos relacionales.

Taller de Base de Datos


Otras Arquitecturas:
Actualmente los sistemas pueden estar implementados en una variedad
de arquitecturas, combinando distintos tipos de servidores:
a) Servidor de aplicaciones: En este caso el sistema se distribuye en tres
reas. La interfaz de usuario de la aplicacin se ejecuta en el cliente. El
resto del procesamiento efectuado por la aplicacin es almacenado en
uno o ms servidores de aplicacin, luego el cliente enva solicitudes al
servidor de aplicacin. Si la solicitud involucra acceso a datos, el servidor
de aplicacin arma una consulta apropiada y la pasa al servidor de base de
datos. El resultado de la consulta es devuelto al servidor de aplicacin, el
cual a su vez la reenva al cliente.

Taller de Base de Datos


Otras Arquitecturas:
b) Sistema Web: En este caso un navegador Web (por ej: Chrome) que se
ejecuta en el cliente, enva solicitudes HTTP a travs de Internet, a una
aplicacin que se ejecuta en un servidor Web. Este servidor Web enva la
respuesta en forma de una pgina Web (escrita en HTML), la cual es
desplegada en el cliente por el navegador Web. Si la solicitud implica
acceso a datos, la aplicacin en el servidor Web arma las consultas
apropiadas para enviarlas al servidor de base de datos. El DBMS responde
a la aplicacin en el servidor Web y sta arma la respuesta que enviar al
cliente, en forma de cdigo HTML.

10

Taller de Base de Datos


Esquema de un Sistema Web:

El servicio Web se puede combinar con un servicio de base de datos, para


ofrecer pginas web dinmicas.

11

Taller de Base de Datos


Clasificacin de Tecnologas Web:

Lenguaje estndar para trabajar con las bases de datos


- Definicin de datos DDL
- Manipulacin de datos DML
- Control sobre los datos DCL

SQL, contiene instrucciones para:

12

Taller de Base de Datos


Tipos de Clientes.
Para un servidor BD, bsicamente existen tres tipos de clientes:
Cliente usuario: Corresponde a una aplicacin de software creada por un
desarrollador, la cual ejecuta instrucciones SQL para trabajar con las
tablas de la BD. El acceso a las tablas es transparente para el usuario.
Cliente desarrollador: Corresponde a una aplicacin que permite a un
desarrollador, modelar y crear bases de datos, tablas, ndices, triggers,
procedimientos, etc.
Cliente administrador: Corresponde a una aplicacin que permite manejar
las cuentas de usuario, control de accesos, afinamiento y actualizaciones
del DBMS, respaldos de datos, etc.

En la prctica hay aplicaciones cliente que permiten interactuar con el


DBMS como un desarrollador y/o como un administrador.

13

Taller de Base de Datos


Ejemplos de Clientes de Administracin/Desarrollo:

DBMS

PostgreSQL:

PgAdmin = cliente de administracin.


phpPgAdmin = cliente de administracin va Web.

DBMS

MySQL:

Workbench = cliente de administracin.


phpMyAdmin = cliente de administracin va Web.

DBMS

Oracle:

SQL Developer = cliente de administracin

DBMS

SQL-Server:

SSMS SQL Server Management Studio

Multiplataforma:
DBArtisan = cliente de administracin compatible con diversos DBMSs
14

Taller de Base de Datos


Ejemplos de Clientes de Aplicacin de Usuario:

La mayora de los lenguajes de programacin usados actualmente,


contienen soporte para trabajar con bases de datos:
Java:
JDBC (Java Data Base Connectivity): API que permite la ejecucin de
operaciones sobre una base de datos, desde programas Java. Es
independiente del sistema operativo.

PHP:
OCI8: API para conexin a bases de datos Oracle.
Mysqli : API para conexin a bases de datos MySQL

Las aplicaciones escritas en estos lenguajes pueden ejecutar parte de su


cdigo en el computador cliente, pero el cdigo que accede a las bases de
datos se ejecuta en el servidor, lo que ofrece un mayor nivel de seguridad.

15

Taller de Base de Datos


Objetos que Componen una Base de Datos.

Base de datos: Coleccin organizada de datos, de acuerdo a un modelo


predefinido. Por ejemplo una base de datos de clientes, mantiene en una unidad
de almacenamiento todos los datos relacionados con los clientes. Actualmente las
bases de datos siguen un modelo relacional, es decir los datos estn organizados
en un conjunto de tablas relacionadas entre s.
Esquema (Schema): Corresponde a la estructura lgica de una base de datos,
definida en base a algn lenguaje formal, por ejemplo SQL. Esta definicin
contiene la estructuras de las tablas, junto con otra informacin para mantener la
integridad de los datos.
Tabla (Relation): En una BD relacional, equivale a una estructura bidimensional o
matriz, la cual contiene los datos de una entidad del mundo real, por ejemplo, la
tabla de ciudades de la BD de clientes.
Vista (View): Una tabla almacena muchos datos relacionados con alguna entidad,
sin embargo no todos los usuarios de la BD necesitan ver esa cantidad de datos.
Una vista permite presentar una porcin de los datos de una o ms tablas. En rigor
una vista no contiene datos, slo consiste en la definicin de un tipo de consulta a
una o ms tablas, para presentar dichos dato a un usuario determinado.
16

Taller de Base de Datos


Objetos que Componen una Base de Datos.

ndice (Index): Una tabla puede contener miles de filas, e incluso ms. La consulta
de datos sera muy lenta en este tipo de tabla. Los ndices son estructuras que
permiten definir un ordenamiento determinado en una tabla de BD. Por defecto
se crea un ndice para la clave primaria de cada tabla, pero es posible definir
ndices adicionales para una misma tabla.
Procedimientos Almacenados (Stored Procedures): La mayora de los sistemas
actuales se construyen bajo un paradigma Cliente/Servidor. Esto significa que
existe un fuerte trfico de datos a travs de la red, lo que puede afectar al
rendimiento de los sistemas. Una forma de optimizar el rendimiento, es almacenar
en el servidor las rutinas que acceden a la BD y las aplicaciones clientes slo las
invocan, es decir, por la red slo fluye la orden para ejecutar la rutina almacenada,
en vez de el cdigo completo de dicha rutina.
Disparador (Trigger): Equivale a un cdigo procedural que se ejecuta bajo ciertas
condiciones, por ejemplo al crear, modificar o eliminar una fila de una tabla. En
general se utilizan para mantener la integridad de los datos en la BD. En algunos
casos se pueden aplicar a eventos como cuando un usuario se conecta o
desconecta de la BD, o cuando se modifica una tabla, etc.
Secuencias: Permiten crear valores secuenciales nicos para un dato determinado.
17

Taller de Base de Datos


Introduccin al Modelo de Datos Relacional.

En 1970, E. Codd desarroll el modelo de datos relacional, con el objeto


de facilitar la administracin y controlar la redundancia de los datos.

Organizacin de Tablas:
Los datos se almacenan en una o ms tablas.
Cada tabla se puede ver como una matriz de filas y columnas. Cada fila
contiene datos acera de una entidad individual, por ejemplo un empleado.
Cada columna representa a un atributo de esa entidad, por ejemplo nombre.
Si una tabla contiene una o ms columnas que identifican en forma nica a
cada fila, dichas columnas conforman la clave primaria de la tabla. Por
ejemplo la clave primaria de la tabla empleados, es la columna RUT. Una clave
primaria compuesta est formada por varias columnas.
Una clave nica, es una o ms columnas que , sin ser clave primaria, pueden
identificar en forma nica a cada fila de la tabla, por ejemplo N pasaporte.
Los ndices permiten un acceso rpido a los datos. En forma automtica se
crea un ndice para la clave primaria de una tabla; sin embargo es posible
crear ndices adicionales para una misma tabla.
18

Taller de Base de Datos


Introduccin al Modelo de Datos Relacional.

http://www.rena.edu.ve/cuartaEtapa/Informatica/Tema9.html

19

Taller de Base de Datos


Introduccin al Modelo de Datos Relacional.

Relacin entre Tablas:


Dentro de una base de datos, las tablas se pueden relacionar entre s,
mediante valores en columnas especficas.
Estas relaciones pueden ser de distintos tipos, por ejemplo: uno-a-uno (1:1),
uno-a-muchos (1:N), muchos-a-muchos (M:N). Adems existen relaciones
opcionales o mandatory.
Estas relaciones se implementan mediante claves forneas, es decir, una o
ms columnas de una tabla, que hacen referencia a la clave primaria de otra
tabla. La clave fornea impone restricciones para la creacin y eliminacin de
datos de la BD.

20

Taller de Base de Datos


Introduccin al Modelo de Datos Relacional.

Relacin entre Tablas Clave Fornea:

http://www.rena.edu.ve/cuartaEtapa/Informatica/Tema9.html

21

Taller de Base de Datos


Introduccin al Modelo de Datos Relacional.

Definicin de Columnas de una Tabla:


Al definir columnas de una tabla, se le deben asignar ciertas propiedades
definidas en la etapa de diseo de la BD.
La propiedad ms importante de una columna es el tipo de dato que va a
contener. Generalmente se asigna un tipo de dato que minimice el espacio de
almacenamiento en disco, principalmente para mejorar el rendimiento de las
consultas que se implementarn posteriormente.
A cada columna se le puede asignar un valor por defecto, el cual se usar al
momento de crear una fila sin indicar el valor para esa columna.
Tambin se debe indicar si la columna aceptar o no valores nulos (NULL).
Algunos tipos de datos soportados en Oracle:
Tipo de dato

Descripcin

CHAR, VARCHAR2

Un string de letras, nmeros, smbolos ASCII

NUMBER

Nmeros enteros decimales, que contienen un valor exacto

FLOAT

Nmeros en punto flotante, que contienen un valor aproximado

DATE

Fechas y horas
22

Taller de Base de Datos


SQL Structured Query Language.

Actualmente todos los DBMSs relacionales soportan SQL para sus


operaciones de administracin y operacin de las bases de datos.
Aunque se trata de un lenguaje estndar, distintos fabricantes de DBMS
implementan dialectos que contienen extensiones al estndar (por ej:
T-SQL, PL/SQL, etc.). Sin embargo las instrucciones SQL bsicas son las
mismas en cada dialecto, lo que permite un aprendizaje fcil.
Por otra parte, convertir aplicaciones que usan SQL desde un DBMS a otro
distinto, usualmente requiere cambios substanciales.
Instrucciones SQL para trabajar con datos (DML):
Instruccin

Descripcin

SELECT

Recupera datos desde una o ms tablas

INSERT

Agrega nuevas filas a una tabla

UPDATE

Modifica los valores de una o ms filas de una tabla

DELETE

Elimina una o ms filas de una tabla


23

Taller de Base de Datos


SQL Structured Query Language.
Instrucciones SQL para trabajar con objetos (DDL):
Instruccin

Descripcin

CREATE USER

Crea un nuevo usuario para la base de datos

CREATE TABLE

Crea una nueva tabla en la base de datos

CREATE SEQUENCE

Crea una nueva secuencia que genera nmeros automticamente

CREATE INDEX

Crea un nuevo ndice para una tabla

ALTER USER

Modifica la definicin de un usuario existente

ALTER TABLE

Modifica la definicin de una tabla existente

ALTER SEQUENCE

Modifica la definicin de una secuencia existente

ALTER INDEX

Modifica la estructura de un ndice existente

DROP USER

Elimina un usuario existente

DROP TABLE

Elimina una tabla existente

DROP SEQUENCE

Elimina una secuencia existente

DROP INDEX

Elimina un ndice existente

GRANT

Asigna privilegios a un usuario

REVOKE

Quita privilegios a un usuario

24

Taller de Base de Datos


SQL Structured Query Language.

25

Taller de Base de Datos


SQL Structured Query Language.
Trabajo con Objetos:
Creacin de un usuario
y asignacin de privilegios:

CREATE USER ap IDENTIFIED BY ap;


GRANT ALL PRIVILEGES TO ap;

Creacin de una tabla:


CREATE TABLE facturas (
id_factura
NUMBER
NOT NULL,
id_prov
NUMBER
NOT NULL,
nombre_prov
VARCHAR2(50)
NOT NULL,
dir_prov
VARCHAR2(50)
NOT NULL,
fecha_factura
DATE
NOT NULL,
total_factura
NUMBER(9,2)
NOT NULL,
iva
NUMBER(9,2)
NOT NULL,
prepago
NUMBER(9,2)
DEFAULT 0,
credito
NUMBER(9,2)
DEFAULT 0,
fecha_pago
DATE,
CONSTRAINT factura_pk
PRIMARY KEY (id_factura),
CONSTRAINT factura_fk_prov
FOREIGN KEY (id_prov) REFERENCES proveedores(id_prov));

Hay algo extrao en esta tabla ?

26

Taller de Base de Datos


SQL Structured Query Language.
Trabajo con Objetos:
Agregar una columna a la tabla:
ALTER TABLE facturas ADD fecha_entrega DATE;

Eliminar columna de la tabla:


ALTER TABLE facturas DROP COLUMN fecha_entrega;

Crear un ndice para la tabla:


CREATE INDEX facturas_prov ON facturas(id_prov);

Eliminacin del ndice anterior


DROP INDEX facturas_prov;

Creacin de secuencia para generar valores de id-factura:


CREATE SEQUENCE sec_id_factura
START WITH 115
INCREMENT BY 1;

27

Taller de Base de Datos


SQL Structured Query Language.
Trabajo con Datos:
Consulta ordenada de facturas:
SELECT id_factura, fecha_factura, total_factura, prepago
FROM facturas
WHERE total_factura prepago > 0
ORDER BY fecha_factura;

Consulta con unin de datos de dos tablas:


SELECT nom_prov, id_factura, fecha_factura, total_factura
FROM proveedores INNER JOIN facturas
ON proveedores.id_prov = facturas.id_prov
WHERE total_factura >= 500000
ORDER BY nombre_prov, total_factura DESC;

La clusula JOIN permite combinar datos de dos o ms tablas, dentro de una consulta.
El tipo ms comn de JOIN es el INNER JOIN, el cual combina las filas de ambas tablas,
slo si los valores coinciden.
OUTER JOIN recupera las filas de una tabla, an en el caso que no hayan coincidencias.
28

Taller de Base de Datos


SQL Structured Query Language.
Trabajo con Datos:
Agregar una fila a la tabla de facturas:
INSERT INTO facturas
(id_factura, id_prov, fecha_factura, total_factura, credito)
VALUES
(sec_id_factura.NEXTVAL, 12, 2014-01-22, 58000, 0);

Modificar el valor de una columna, para una fila determinada:


UPDATE facturas
SET credito = 16000
WHERE id_factura = 290623;

Modificar el valor de una columna para varias filas que cumplen una condicin:
UPDATE facturas
SET prepago = 0
WHERE credito > 0;

29

Taller de Base de Datos


SQL Structured Query Language.
Trabajo con Datos:
Eliminar una fila especfica de la tabla de facturas:
DELETE FROM facturas
WHERE id_factura = 928031;

Eliminar un conjunto de filas que cumplan con una condicin determinada:


DELETE FROM facturas
WHERE prepago < 0;

Trabajo con Vistas:


Una vista es un objeto de una base de datos, que equivale a una consulta
predefinida, la cual ofrece una forma alternativa de observar los datos
almacenados en una tabla.
En la prctica, un usuario percibe una vista como otra tabla de datos.
Las vistas se pueden usar para restringir el acceso a los datos por parte de un
usuario, o para presentar los datos de manera que sean ms fciles de entender.
30

Taller de Base de Datos


SQL Structured Query Language.
Trabajo con Vistas:
Creacin de una vista:
CREATE VIEW facturas_min AS
SELECT id_factura, total_factura, iva, prepago, credito
FROM facturas;

La vista facturas_min equivale a una tabla de facturas pero con menos


columnas.
Recomendaciones de codificacin SQL:

Instrucciones SQL en maysculas, nombres de objetos y datos en minsculas.


Separar las palabras de nombres con guin bajo, ej: nombre_cliente.
Iniciar cada clusula en una lnea nueva.
Dividir las clusulas demasiado largas en mltiples lneas, con indentacin.
Ej: SELECT rut, nombre, apellido, direccion, telefono
FROM cliente_hab
WHERE ciudad = santiago OR ciudad = punta arenas
AND tipo = ESP
ORDER BY apellido;
31

Taller de Base de Datos


Ejercicio.

Este ejercicio implica instalar la plataforma de desarrollo XAMPP (MySQL). Luego


crear una base de datos segn un modelo predefinido y por ltimo poblar las
tablas de la base de datos, con datos de prueba.
Se trabajar con el cliente de consola, de manera que todas las instrucciones se
deben ingresar por el teclado.
Pasos:
1.
2.
3.
4.

Descargar e instalar la aplicacin XAMPP.


Iniciar el servidor MySQL.
Crear una base de datos con nombre acme2014.
Utilizar instrucciones SQL-DDL para crear las tablas de la base de datos, segn lo
indicado en el modelo adjunto y respetando las restricciones indicadas.
5. Utilizar instrucciones SQL-DML para poblar las tablas de la base de datos.
6. Probar consultas simples sobre la base de datos.
7. Tomar nota de las acciones realizadas, instrucciones utilizadas, problemas
encontrados, errores cometidos, soluciones aplicadas, etc.

32

Taller de Base de Datos


Ejercicio Modelo de Datos.
Clave
primaria
Atributo
NOT NULL

Clave fornea
NULL

Clave fornea
NOT NULL

Atributo
NULL

33

Taller de Base de Datos


Ejercicio Modelo de datos.

Primero crear la base de datos y luego partir creando las tablas que no tengan
claves forneas, por ej:

CREATE SCHEMA IF NOT EXISTS acme2014


DEFAULT CHARACTER SET utf8
COLLATE utf8_unicode_ci;
USE acme2014;
CREATE TABLE IF NOT EXISTS sucursal (
num_suc VARCHAR(3) NOT NULL ,
direccion VARCHAR(30) NOT NULL ,
ciudad VARCHAR(20) NOT NULL ,
telefono VARCHAR(10) NOT NULL ,
PRIMARY KEY (num_suc) )
ENGINE = InnoDB;

CREATE TABLE IF NOT EXISTS empleado (


num_emp VARCHAR(4) NOT NULL ,
nombre VARCHAR(20) NOT NULL ,
apellido VARCHAR(20) NOT NULL ,
cargo VARCHAR(20) NOT NULL DEFAULT ' NOASIG' ,
fecha_ing DATE NOT NULL ,
salario INT(9) NOT NULL ,
num_suc VARCHAR(3) NULL DEFAULT NULL ,
PRIMARY KEY (num_emp) ,
INDEX fk_empleado_sucursal1 (num_suc ASC) ,
CONSTRAINT fk_empleado_sucursal1
FOREIGN KEY (num_suc)
REFERENCES sucursal (num_suc)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;

34

Taller de Base de Datos

35

Taller de Base de Datos

36

Taller de Base de Datos


Ejercicio Modelo de datos.

Poblar las tablas en el mismo orden en que se crearon, por ejemplo:


INSERT INTO sucursal VALUES
('10','CONDELL 98','VALPARAISO','2326588'),
('20','COLON 102','VALPARAISO','8911805'),
('30','BLANCO 126','VALPARAISO','2268531'),
('40','VICTORIA 14','VALPARAISO','2569364'),
('50','COSTANERA 592','SAN ANTONIO','4961228');
INSERT INTO empleado VALUES
('7369','ANDREA','SOTO','ASISTENTE','2000-12-17',618000,'20'),
('7499','PEDRO','LOPEZ','GERENTE','2001-02-20',1800000,'40'),
('7521','SAMUEL','MUOZ','SUPERVISOR','2001-02-22',1287500,'30'),
('7566','BRUNO','LIRA','ASISTENTE','2001-04-02',741600,'20'),
('7654','XIMENA','BRITO','SUPERVISOR','2001-09-28',1287500,'30'),
('7698','CARLOS','SILVA','GERENTE','2001-05-02',2000775,'30'),
('7782','CRISTOBAL','CEA','GERENTE','2001-06-09',1568175,'40'),
('7788','CLAUDIA','NUEZ','GERENTE','1997-04-19',2163000,'20'),
('7839','JOSE','LOPEZ','DIRECTOR','2001-11-17',4120000,'10'),
('7844','JORGE','RAMOS','SUPERVISOR','2001-09-08',1545000,'40'),
('7876','ROCIO','MENA','ASISTENTE','2007-05-23',669500,'20'),
('7900','JUAN','ARENAS','ASISTENTE','2011-12-03',772500,'30'),
('7902','PABLO','TOBAR','SUPERVISOR','2001-12-03',2060000,'20'),
('7934','IVAN','VERA','ASISTENTE','2002-02-23',1133000,'10');

37

Taller de Base de Datos


Ejercicio Modelo de datos.

Poblar resto de las tablas con phpMyAdmin (localhost / 127.0.0.1):

38

Taller de Base de Datos


SQL Consultas:
Generar un listado con todos los datos de todos los empleados:
SELECT num_emp, nombre, apellido, cargo, fecha_ing, salario,
num_suc FROM empleado;
SELECT *
FROM empleado;
Generar un listado con el N, nombre, apellido y sueldo de todos los empleados
SELECT num_emp, nombre, apellido, salario
FROM empleado;

39

Taller de Base de Datos


SQL Consultas :
Generar un listado con los N de
propiedad de todas las propiedades
visitadas.
SELECT num_prop
FROM visita;

Dado que hay propiedades visitadas varia veces, el resultado


contiene valores repetidos
Para evitar esto se puede usar la clusula DISTINCT
SELECT DISTINCT num_prop
FROM visita;

40

Taller de Base de Datos


Consultas.
1.
2.
3.
4.
5.

Consultar la direccin, el tipo y la cantidad de piezas de todas las propiedades.


Consultar la direccin, ciudad y telfono de las sucursales.
Consultar todos los datos de los propietarios.
Consultar el nombre, apellido, tipo de preferencia y valor mximo de los clientes.
Consultar el N de propiedad y la fecha de todas las visitas a propiedades.

6.
7.

Generar un listado con todas las propiedades de Valparaso y Quilpu.


Generar un listado de todos los empleados cuyo salario est en el rango entre $800.000 y
$1.400.000
Generar un listado con todos los datos de gerentes y supervisores

8.

9. Consultar la direccin, el tipo y la cantidad de piezas de todas las propiedades de Valparaso.


10. Consultar la direccin, ciudad y propietario de las propiedades cuyo valor de arriendo flucta
entre $180.000 y $220.000.
11. Consultar todos los datos de los clientes cuyas preferencias no son CASAS ni DEPTOS.
12. Consultar todas las propiedades administradas por los empleados Bruno Lira, o Jorge Ramos
http://www.w3schools.com/sql/
http://www.sqlcourse.com/index.html
http://dev.mysql.com/doc/refman/5.0/es/index.html
http://www.aulaclic.es/sql/

41

Taller de Base de Datos


Trabajo con DBMS Oracle Express Edition.
Requiere la instalacin de las siguiente aplicaciones:

Oracle XE11gR2:
Descargar de Internet:
http://www.oracle.com/technetwork/database/express-edition/downloads/index.html)

Descomprimir archivo descargado a una carpeta temporal


Abrir la carpeta temporal (DISK1) y ejecutar el programa setup.exe

SQL Developer:
Descargar de Internet:
http://www.oracle.com/technetwork/developer-tools/sql-developer/

Seleccionar versin segn sistema operativo


Requiere la instalacin de JRE. Instalar previamente o descargar versin que
incluye JRE.
Crear una carpeta y descomprimir el archivo descargado a esa carpeta.
Abrir la carpeta y ejecutar el programa sqldeveloper.exe

42

Taller de Base de Datos


Trabajo con DBMS Oracle Express Edition.
La administracin de la base de datos se puede hacer a travs del cliente de consola o
a travs del cliente SQL Developer:

43

Taller de Base de Datos


Trabajo con DBMS Oracle Express Edition.

Ingresar a la consola de administracin y conectarse como usuario system.


SQL> connect system /as sysdba
Enter password:
Connected.
SQL>

No tiene contrasea

Crear el usuario ap y asignarle privilegios:


SQL> CREATE USER ap IDENTIFIED BY ap;
SQL> GRANT ALL PRIVILEGES TO ap;

En la consola abrir conexin con el usuario recin creado:


SQL> conn ap/ap
Connected.
SQL>

Al crear el usuario ap, tambin se cre el esquema ap en donde se


almacenarn todos los objetos creados por el usuario.
44

Taller de Base de Datos


Trabajo con DBMS Oracle Express Edition.

Creacin de la tabla facturas dentro del esquema ap.


CREATE TABLE facturas (
id_factura
NUMBER
id_prov
NUMBER
nombre_prov
VARCHAR2(50)
dir_prov
VARCHAR2(50)
fecha_factura
DATE
total_factura
NUMBER(9,2)
iva
NUMBER(9,2)
prepago
NUMBER(9,2)
credito
NUMBER(9,2)
fecha_pago
DATE,
CONSTRAINT factura_pk
PRIMARY KEY (id_factura) );

NOT NULL,
NOT NULL,
NOT NULL,
NOT NULL,
NOT NULL,
NOT NULL,
NOT NULL,
NULL,
NULL,

Verificar la creacin de la tabla facturas:


SQL> DESCRIBE facturas;

45

Taller de Base de Datos


Trabajo con DBMS Oracle Express Edition.

Crear una secuencia para asignar el N de factura en forma automtica:


CREATE SEQUENCE sec_id_factura
START WITH 115
INCREMENT BY 1;

La instruccin anterior crea un objeto secuencia, que puede ser utilizado al


momento de crear filas de una tabla. En esta caso, al crear nuevas facturas se
puede utilizar esta secuencia, la cual asigna un N nico e incrementa el valor para
la siguiente factura que se ingresar a la base.
La ventaja de los objetos secuencia es que pueden generar valores nicos en un
entono multi-usuario, ya que asegura que dos sesiones concurrentes no generen
un valor repetido.
Por esta razn, los valores generados por objetos secuencia se pueden utilizar
como claves primarias en las tablas de datos.

46

Taller de Base de Datos


Oracle Procedimientos Almacenados.

Un procedimiento almacenado (SP) es un programa en cdigo SQL que est


almacenado en el servidor de base de datos, en vez de residir en el servidor Web,
lo que puede presentar algunas ventajas:
Mejor rendimiento de las consultas: Los procedimientos almacenados se
mantienen como SQL precompilado en la BD, luego el proceso de dos pasos
(compilar y ejecutar) de las consultas, se reduce a un slo paso de ejecutar.
Facilidad de mantencin: Un nico procedimiento almacenado puede ser
invocado desde distintas aplicaciones, luego resulta ms simple modificar el
cdigo en una sola ubicacin, en vez de en todas las aplicaciones que lo
utilizan. Esto tambin significa un nivel de seguridad adicional, puesto que los
usuarios no acceden directamente a los datos, sino que deben invocar a un
procedimiento almacenado.
Desventajas:
Una cantidad excesiva de procedimientos almacenados en un servidor BD,
implican una carga adicional de procesamiento, lo que puede mermar el
rendimiento global del servidor BD. Esto se debe tener en cuenta
especialmente cuando un nico servidor de BD otorga servicio de datos a
varios servidores Web.
47

Taller de Base de Datos


Trabajo con DBMS Oracle Express Edition.

Crear un procedimiento almacenado para insertar una nueva fila a la tabla


facturas, segn lo siguiente:
Se debe utilizar el objeto secuencia para asignar el N de factura.
Asignar la fecha del sistema a la columna fecha_factura.
Asegurar que los tipos de datos y cantidad de columnas sean consecuentes.
CREATE OR REPLACE PROCEDURE inserta_factura
( id_pro NUMBER,
nombre_pro VARCHAR2,
dir_pro VARCHAR2,
total NUMBER,
par_iva NUMBER )
AS
BEGIN
INSERT INTO facturas VALUES
( sec_id_factura.NEXTVAL, id_pro, nombre_pro, dir_pro, SYSDATE,
total, par_iva, 0, 0, NULL );
COMMIT;
EXCEPTION
WHEN OTHERS THEN
ROLLBACK;
END;
/

48

Taller de Base de Datos


Trabajo con DBMS Oracle Express Edition.

Ejecucin del procedimiento almacenado:

call inserta_factura(100306, 'CARLOS VICENCIO', 'CONDELL 360', 25720, 4887);


Call completed.

Verificar la ejecucin del SP:


SQL> select * from facturas;
ID_FACTURA
ID_PROV NOMBRE_PROV
---------- ---------- -------------------------------------------------DIR_PROV
FECHA_FA TOTAL_FACTURA
-------------------------------------------------- -------- ------------IVA
PREPAGO
CREDITO FECHA_PA
---------- ---------- ---------- -------115
100306 CARLOS VICENCIO
CONDELL 360
03/03/14
25720
4887
0
0

49

Taller de Base de Datos


Trabajo con DBMS Oracle Express Edition.

Ejecutar el SP con los siguientes datos:

Id. Proveedor

Nombre Proveedor

Direccin

Total

IVA

100307

FLORERIA COLON

COLON 1106

12000

2280

100340

SANTA ISABEL

PEDRO MONTT 830

88400

16796

100346

REPUESTOS XYZ

GENERAL CRUZ 36

138000

26220

100361

AGENCIA PORTUARIA

BLANCO 2862

360000

68400

Verificar la ejecucin del SP:


SELECT id_factura, fecha_factura, total_factura, iva
FROM facturas;
ID_FACTURA
---------115
116
117
118
119

FECHA_FA TOTAL_FACTURA
IVA
-------- ------------- ---------03/03/14
25720
4887
03/03/14
12000
2280
03/03/14
88400
16796
03/03/14
138000
26220
03/03/14
360000
68400
50

Taller de Base de Datos


Trabajo con DBMS Oracle Express Edition.
Vistas (VIEWS).
Las vistas se aplican a una o ms tablas de una BD y permiten seleccionar algunas
columnas para que sean utilizadas por algn usuario especfico.
En este caso se requiere crear una vista de la tabla facturas, que slo contenga el
N de factura y los campos numricos.
CREATE VIEW factura_num AS
SELECT id_factura, total_factura, iva, prepago, credito
FROM facturas;

Verificar la vista:
SQL> select * from factura_num;
ID_FACTURA TOTAL_FACTURA
IVA
PREPAGO
CREDITO
---------- ------------- ---------- ---------- ---------115
25720
4887
0
0
116
12000
2280
0
0
117
88400
16796
0
0
118
138000
26220
0
0
119
360000
68400
0
0

51

Taller de Base de Datos


Trabajo con DBMS Oracle Express Edition.
Funciones de Usuario (User-Defined Function UDF):
Una UDF es similar a un SP. Est almacenada en el servidor y su sintaxis de
creacin es similar a la sintaxis de un SP.
La principal diferencia es que no puede modificar los datos almacenados en la BD,
pero pueden realizar algn procesamiento y retornar valores.
Una UDF se utiliza en forma similar a las funciones incorporadas de Oracle. Ej:
CREATE OR REPLACE FUNCTION factura_prom
( par_id_prov NUMBER )
RETURN NUMBER
AS prom_total_factura NUMBER (9,2);
BEGIN
SELECT AVG(total_factura)
INTO prom_total_factura
FROM facturas
WHERE id_prov = par_id_prov;
RETURN prom_total_factura;
END;
/
52

Taller de Base de Datos


Trabajo con DBMS Oracle Express Edition.
Funciones de Usuario (User-Defined Function UDF):
Ingreso de una nueva factura mediante el SP inserta_factura
call inserta_factura(100307, 'FLORERIA COLON', 'COLON 1106', 52000, 9880);

Uso de la UDF dentro de una sentencia SELECT.


SELECT DISTINCT id_prov, factura_prom(id_prov)
FROM facturas
ORDER BY id_prov;
ID_PROV FACTURA_PROM(ID_PROV)
---------- --------------------100306
25720
100307
32000
100340
88400
100346
138000
100361
360000

53

Taller de Base de Datos


Trabajo con DBMS Oracle Express Edition.
Ejercicios por consola de administracin:
1. Crear una vista (factura_pro) de la tabla facturas, que muestre el N de factura y
los datos del proveedor.
2. Crear una vista (factura_100) de la tabla facturas, que muestre el N de factura y
los campos numricos, slo para las facturas con total >= $100.000.
3. Crear un SP para consultar todas las facturas de la vista factura_num con total de
factura <= a un valor especfico (pasado como parmetro).
4. Crear un SP para ingresar los campos prepago y credito, para una factura especfica
(pasada como parmetro).
5. Crear una vista (factura_pag) para ver las facturas prepagadas (prepago > 0)
6. Crear un SP para consultar la vista factura_pag, entre dos fechas especficas
(pasadas como parmetro).
7. Crear un SP para eliminar una factura especfica (pasada como parmetro).
8. Crear un ndice para mantener las facturas ordenadas por nombre de proveedor.
9. Crear una UDF para consultar el total de facturas de todos los proveedores.
10. Crear la tabla proveedores(id_prov, nombre_prov, dir_prov, ciudad,
rubro, credito), asignar tipos de datos apropiados.
54

También podría gustarte