Está en la página 1de 26

ESCUELA POLITCNICA DEL EJRCITO

DEPARTAMENTO DE CIENCIAS DE LA COMPUTACIN

CARRERA INGENIERA EN SISTEMAS


BASE DE DATOS II

ALUMNOS: ESTRELLA RONNY YACCHIREMA SILVANA

FECHA: 17/07/2012

MANUAL PARA EL MODELADO E IMPLEMENTACIN DE UNA BASE DE DATOS Creacin USUARIO bajo el gestor PLSQLDev7 Para crear un usuario se deben seguir los pasos que se describen a continuacin:

1. Clic en 2. Clic en Equipo. Como muestra la Figura 1.

Figura 1. 3. Seleccionar el disco en donde se encuentra la carpeta que tiene PLSQL, por ejemplo Disco Local C. Ver figura 2.

Figura 2.

4. Buscar la carpeta PLSQLDev7 y abrirla. Ver figura 3.

Figura 3. 4.1 Dentro de la carpeta antes mencionado esta la aplicacin plsqldev, dar clic sobre la misma. Figura 4.

Figura 4. 5. A continuacin se muestra lo siguiente:

Figura 5. En la figura 5 es necesario escribir el usuario y password. Como lo que se necesita es crear un nuevo usuario, se procede a ingresar como usuario SYSTEM y a continuacin se visualiza el nuevo entorno de trabajo. Ver figura 6.

Figura 6. 6. Ahora dentro de la aplicacin, nos dirigimos a la barra de herramientas opcin File/New/Command Window. Ver figura 7 y 8.

Figura 7.

Figura 8.

7. En la pantalla que se observa en la Figura 8, se digita lo siguiente. Ver figura 9.

Figura 9. 8. Para verificar la creacin del usuario se digita lo que se visualiza a continuacin. Ver Figura 10.

Figura 10.

Modelo Conceptual Para el modelamiento de una base de datos se realiza lo siguiente: 1. Clic en 2. Buscar PowerDesigner. Ver Figura 1.

Figura 1. 3. Clic New Model/Model types/Conceptual Data Model. Ver figura 2.

Figura 2.

Los modelos que se ocupan para la realizacin de estos proyectos son: SUBMODELOS TRANSPORTE
CONDUCTOR_TRANSPORTE CODIGO_CONDUCTOR CEDULA_CONDUCTOR NRO_LICENCIA NOMBRE_CONDUCTOR APELLIDO_CONDUCTOR DIRECCION_CONDUCTOR TELEFONO_CONDUCTOR CORREO_CONDUCTOR ...
Pertenece A 1,n

A4 VAR11 VAR15 1,1 VAR25 CONDUCTOR_VEHICULO VAR30 VAR40 VAR12 VAR20 AYUDANTE_VEHICULO

VEHICULO_TRANSPORTE CODIGO_VEHICULO NRO_PLACA MARCA MODELO COLOR CAPACIDAD_MAX PASAJEROS_MAX ... A4 VAR8 VAR15 VAR20 VAR15 A4 A6
1,1

Pertenece A 1,n Pertenece A: 1,n

CATEGORIA_CONDUCTOR
1,1 1,1 Pertenece A 1,n

VEHICULO_CARGO

AYUDANTE_TRANSPORTE CATEGORIA_TRANSPORTE CODIGO_CATEGORIA A4 DESCRIPCION_CATEGORIA VAR30 ... CODIGO_AYUDANTE CEDULA_AYUDANTE NOMBRE_AYUDANTE APELLIDO_AYUDANTE DIRECCION_AYUDANTE TELEFONO_AYUDANTE CORREO_AYUDANTE ... A4 VAR12 VAR25 VAR25 VAR50 VAR12 VAR25

CARGO_TRANSPORTE CODIGO_CARGO NRO_CARGO NRO_PLACA DESCUENTO SUBTOTAL IVA TOTAL ...


1,1

1,1

A4 VAR5 VAR8 F3 F4 F4 F5
1,1

PROVINCIA_CARGO PERTENECE A
1,n 1,1

PROVINCIA_TRANSPORTE CODIGO_PROVINCIA A4 NOMBRE_PROVINCIA VAR30 ...


1,1

PROVINCIA_CANTON CARGO_ESTADOS
PERTENECE A 1,n

CARGO_USUARIO

DETALLES_CARGO A4 F3 VAR2 I I

CANTON_TRANSPORTE CODIGO_CANTON A4 NOMBRE_CANTON VAR25 ...


1,1 CANTON_PARROQUIA

ESTADOS_TRANSPORTE CODIGO_ESTADOS A4 NOMBRE_ESTADO VAR30 ... ESTADOS_CARGO 1,1 PERTENECE A:


1,n

CARGO_ESTADOS CODIGO_ESTADO A3 FECHA DATE ...

CODIGO_DETALLE COSTO_UNITARIO PERTENECE A CARG0_DETALLE 1,n MERCADERIA PERTENECE A: CANTIDAD 0,n UNIDAD ... PERTENECE A:
1,n

PERTENECE A 1,n

USUARIO_TRANSPORTE CODIGO_USUARIO CEDULA_USUARIO NOMBRE_USUARIO APELLIDO_USUARIO NOMBRE_USER PASSWORD DIRECCION_USUARIO TELEFONO_USUARIO CORREO_USUARIO ... A4 VAR12 VAR25 VAR25 VAR10 VAR8 VAR30 VAR12 VAR30

PARROQUIA_TRANSPORTE CODIGO_PARROQUIA A4 NOMBRE_PARROQUIA VAR24 ... TIPO_USUARIO CODIGO_TIPO A4 DESCRIPCION_TIPO VAR25 TIPO_USUARIO ...
1,1

PERTENECE A 1,n

PERSONAL
EMPLEADO_PERSONAL Codigo_empleado Apellidos Nombres Direccion Email Telefono Cargas Fecha_Naci Cedula LibretaMilitar RUC Pasaporte ...
Pertenece A 1,n

SEXO_PERSONAL Codigo_Departamento A3 DESCRIPCIN VA100 Sexo_Empleado ...


1,1 Pertenece a 1,n

A5 VA50 VA50 VA200 VA100 VA12 N2 D VA10 VA15 VA13 VA100


PERTENECE A: 1,n

Pertenece 0,n

EstadoCivil_Empleado
1,1

ESTADO_CIVIL_PERSONAL Codigo_EstCiv A1 Descripcion VA30 ...

DEPARTAMENTO_EMPLEADO

1,1

PARROQUIA_EMPLEADO
1,1

DEPARTAMENTO_PERSONAL Codigo_Departamento A2 Descripcion VA50 ...


1,1 Pertenece a 1,n

PARROQUIA Codigo_Parroquia A4 Descripcion VA35 ...


Pertenece A 1,n

CARGO_PERSONAL Codigo_cargo A3 Descripcion VA50 ...

Cargo_Departamento

1,1 CANTON_PARROQUIA

CANTON Codigo_Canton A3 Descripcion VA60 ...

Pertenece A 1,n

PROVINCIA Provincia_Canton
1,1

Codigo_Provincia A2 Descripcion VA60 ...

Pertenece A 1,n

Pais_Provincia

1,1

PAIS Codigo_Pas A3 Descripcion VA70 ...

MECANICO
CLIENTE_MECANICO CODIGO_CLIENTE CEDULA_IDENTIDAD NOMBRE_CLIENTE APELLIDO_CLIENTE DIRECCION_CLIENTE TELEFONO ...
1,1

A3 VA18 VA25 VA25 VA50 VA12

VEHICULO_MECANICO CODIGO_VEHICULO MATRICULA MODELO_VEHICULO COLOR_VEHICULO FECHA_INGRESO HORA_INGRESO ...


1,n

Cliente_Vehiculo

Pertenece A 1,n

A3 VA17 VA20 VA10 D D

REPUESTO_MECANICO CODIGO_REPUESTO NOMBRE_REPUESTO DESCRIPCIN_REPUESTO TIPO_REPUESTO VALOR_REPUESTO ... A3 VA16 VA50 VA16 F6

Pertenece A 1,n

EMPLEADO_MECANICO CODIGO_EMPLEADO A3 VEHICULO_ASIGNADO VA20 ...


1,1 Pertenece a 1,n

Vehiculo_Empleado

HOJA_PARTE_MECANICO CODIGO_HOJA_PARTE A3 Pertenece A Empleado_Hoja_de_Parte 1,n DESCRIPCION_REPUESTOS VA50 PRECIO_MANO_OBRA F6 ...


1,1 1,1

HOJA_DE_PARTE_REPUESTOS

FACTURA_MECANICO CODIGO_FACTURA NOMBRE_CLIENTE APELLIDO_CLIENTE CEDULA_CLIENTE DIRECCION_FACTURA TELEFONO_CLIENTE MECANICO_RESPONSABLE CEDULA_MECANICO TELEFONO_MECANICO DESCRIPCION_REPUESTO PRECIO_UNITARIO_REPUESTO PRECIO_TOTAL_MANO_DE_OBRA IVA_FACTURA TOTAL_FACTURA ... A5 VA15 VA15 VA17 VA25 VA10 VA15 VA17 VA10 VA50 F6 F6 F3 F6

Hoja_de_Parte_Factura

Pertenece A 0,1

Creacin Base da Datos Para crear la base de datos es necesario seguir los pasos siguientes: 1. Clic en 2. Seleccionar todos los programas ver figura 1.

Figura 1. 3. Buscar la carpeta Base de datos Oracle 10g Express Edition / Ir a Pagina Inicial de Base de Datos. Ver figura 2 y 3.

Figura 2.

Figura 3. 4. Como se observa en la figura 3. Proceda a ingresar el usuario /contrasea. Ver figura 4.

Figura 4. Despus de haber dado clic en Conectar aparece un nuevo entorno de trabajo. Ver figura 5.

Figura 5. 5. Para ejecutar el script dar clic en SQL / Comando SQL / Introducir Comando. Ver Figura 6 y 7.

Figura 6.

Figura 7. 6. En la figura 7. Se procede a ingresar el script y ejecutarlo tabla por tabla. Insercin de Datos Los datos se introducen en la ventana Comandos SQL se selecciona y clic en Ejecutar. Ver figura 8.

Figura 8. Ver tablas Para ver las tablas creadas se digita la sentencia select *from tabs. Ver figura 1

Figura 1. Ver registros en cada tabla Se deben ejecutar SELECT por separado de esta forma. Ver figura 1.

Figura 1. Ahora se debe seleccionar uno a uno y se visualizan las tablas siguientes: //AYUDANTE select *from TEAYU_AYUD

// CANTON select *from TECAN_CANTON

// CARGO select *from TECAR_CARGO

// CATEGORIA select *from TECAT_CATEG

// ESTADO select *from TECE_CAES

// CONDUCTOR select *from TECON_CONDU

// select *from TEDEC_DETCAR

// select *from TEEST_ESTA

// PARROQUIA select *from TEPAQ_PARROQ

// PROVINCIA select *from TEPRO_PROVI

//TIPO select *from TETIP_TIPO

//USUARIO select *from TEUSU_USUAR

// VEHICULO select *from TEVEH_VEHIC

Creacin de Procedimientos - Introduccin Los cursores representan consultas SELECT de SQL que devuelven ms de un resultado y que permiten el acceso a cada fila de dicha consulta. Lo cual significa que el cursor siempre tiene un puntero sealando a una de las filas del SELECT que representa el cursor. Se puede recorrer el cursor haciendo que el puntero se mueva por las filas. Los cursores son las herramientas fundamentales de PL/SQL Procesamiento de cursores Los cursores se procesan en tres pasos: (1) Declarar el cursor (2) Abrir el cursor. Tras abrir el cursor, el puntero del cursor sealar a la primera fila (si la hay) (3) Procesar el cursor. La instruccin FETCH permite recorrer el cursor registro a registro hasta que el puntero llegue al final (se dice que hasta que el cursor est vaco) (4) Cerrar el cursor Declaracin de cursores Sintaxis: CURSOR nombre IS sentenciaSELECT; Definicin Un procedimiento es un bloque PL/SQL al que se le asigna un nombre. Un procedimiento se crea para que realice una determinada tarea de gestin. Los procedimientos son compilados y almacenados en la base de datos. Gracias a ellos se consigue una reutilizacin eficiente del cdigo, ya que se puede invocar al procedimiento las veces que haga falta desde otro cdigo o desde una herramienta de desarrollo como Oracle Developer. Una vez almacenados pueden ser modificados de nuevo.

Estructura La sintaxis es: CREATE [OR REPLACE] PROCEDURE nombreProcedimiento [(parmetro1 [modelo] tipoDatos [,parmetro2 [modelo] tipoDatos [,...]])] {IS|AS} seccinDeDeclaraciones BEGIN instrucciones [EXCEPTION controlDeExcepciones] END;

Los procedimientos permiten utilizar parmetros para realizar su tarea. Por ejemplo supongamos que queremos crear el procedimiento ESCRIBIR para escribir en el servidor (como hace DBMS_OUTPUT.PUT_LINE) lgicamente dicho procedimiento necesita saber lo que queremos escribir. Ese sera el parmetro, de esa forma el procedimiento Antes debemos activar la escritura por consola para que nuestros mensajes se muestren de una manera correcta para lo que vamos a utilizar: SET SERVEROUTPUT ON; sera: CREATE OR REPLACE PROCEDURE Escribir(texto VARCHAR) IS BEGIN DBMS_OUTPUT.PUT_LINE(texto); END; Para invocarle: BEGIN Escribir(Hola); END;

O se invoca de la siguiente manera EXECUTE Escribir(Hola);

Borrar procedimientos El comando DROP PROCEDURE seguido del nombre del procedimiento que se elimina es el encargado de realizar esta tarea. PROCESOS EJEMPLOS INSERTAR
CREATE OR REPLACE PROCEDURE insertar_ayudante(codigo_ayudante char,cedula_ayudante varchar2,nombre_ayudante varchar2,apellido_ayudante varchar2, direccion_ayudante varchar2, telefono_ayudante varchar2, correo_ayudante varchar2) AS CURSOR verifica_ayudante IS SELECT teayu_cedula FROM teayu_ayud WHERE teayu_cedula= cedula_ayudante; v_dummy teayu_ayud.teayu_cedula%TYPE DEFAULT NULL; BEGIN /* Comprobacin de que la cedula no est duplicada */ OPEN verifica_ayudante; FETCH verifica_ayudante INTO v_dummy; CLOSE verifica_ayudante; IF v_dummy IS NOT NULL THEN /*Mensaje de que la cedula esta repetida*/ DBMS_OUTPUT.PUT_LINE('Cedula Repetida'); ELSE /*insercion de los datos en la tabla ayudante*/ INSERT INTO teayu_ayud(teayu_codigo,teayu_cedula,teayu_nombre,teayu_apell,teayu_dire,teayu_tel,teayu_co rreo) VALUES (codigo_ayudante,cedula_ayudante,nombre_ayudante ,apellido_ayudante, direccion_ayudante, telefono_ayudante, correo_ayudante); END IF; END; /

ELIMINAR
CREATE OR REPLACE PROCEDURE elimina_ayudante(codigo_ayudante char) AS CURSOR verifica_ayudante IS SELECT teayu_codigo FROM teayu_ayud WHERE teayu_codigo = codigo_ayudante; v_dummy teayu_ayud.teayu_codigo%TYPE DEFAULT NULL; BEGIN /* Comprobacin de que el codigo existe*/ OPEN verifica_ayudante; FETCH verifica_ayudante INTO v_dummy; CLOSE verifica_ayudante; IF v_dummy IS NOT NULL THEN DELETE FROM teayu_ayud WHERE teayu_codigo=codigo_ayudante; DBMS_OUTPUT.PUT_LINE('Registro Eliminado'); ELSE DBMS_OUTPUT.PUT_LINE('Codigo No Existe'); END IF; END; /

ACTUALIZAR
CREATE OR REPLACE PROCEDURE actualiza_ayudante(codigo_ayudante char,nombre_ayudante varchar2,apellido_ayudante varchar2, direccion_ayudante varchar2, telefono_ayudante varchar2, correo_ayudante varchar2) AS CURSOR verifica_ayudante IS SELECT teayu_codigo FROM teayu_ayud WHERE teayu_codigo= codigo_ayudante; v_dummy teayu_ayud.teayu_codigo%TYPE DEFAULT NULL; BEGIN /* Comprobacin de que el codigo existe para la actualizacion */ OPEN verifica_ayudante; FETCH verifica_ayudante INTO v_dummy; CLOSE verifica_ayudante; IF v_dummy IS NOT NULL THEN UPDATE teayu_ayud SET teayu_nombre=nombre_ayudante,teayu_apell=apellido_ayudante,teayu_dire=direccion_ayudante, teayu_tel=telefono_ayudante,teayu_correo=correo_ayudante WHERE teayu_codigo=codigo_ayudante; ELSE DBMS_OUTPUT.PUT_LINE('Codigo no Existente'); END IF; END; /

SELECCIONAR
CREATE OR REPLACE PROCEDURE seleccionar_ayudante(codigo_ayudante char) AS CURSOR verifica_ayudante IS SELECT teayu_codigo,teayu_cedula,teayu_nombre,teayu_apell,teayu_dire,teayu_tel,teayu_correo FROM teayu_ayud WHERE teayu_codigo= codigo_ayudante; BEGIN FOR iAyudante IN verifica_ayudante LOOP /*Mensaje de que la cedula esta repetida*/ DBMS_OUTPUT.PUT_LINE(iAyudante.teayu_codigo); DBMS_OUTPUT.PUT_LINE(iAyudante.teayu_cedula); DBMS_OUTPUT.PUT_LINE(iAyudante.teayu_nombre); DBMS_OUTPUT.PUT_LINE(iAyudante.teayu_apell); DBMS_OUTPUT.PUT_LINE(iAyudante.teayu_dire); DBMS_OUTPUT.PUT_LINE(iAyudante.teayu_tel); DBMS_OUTPUT.PUT_LINE(iAyudante.teayu_correo); END LOOP; END; /

Triggers -Definicin Se llama trigger (o disparador) al cdigo que se ejecuta automticamente cuando se realiza una determinada accin sobre la base de datos. El cdigo se ejecuta independientemente de la aplicacin que realiz dicha operacin. De esta forma tenemos tres tipos triggers: - Triggers de tabla. Se trata de triggers que se disparan cuando ocurre una accin DML sobre una tabla. - Triggers de vista. Se lanzan cuando ocurre una accin DML sobre una vista. - Triggers de sistema. Se disparan cuando se produce un evento sobre la base de datos (conexin de un usuario, borrado de un objeto,) En este manual slo se da cabida a los del primer y segundo tipo. Por lo que se dar por hecho en todo momento que nos referiremos siempre a ese tipo de triggers.

Los triggers se utilizan para: - Ejecutar acciones relacionadas con la que dispara el trigger - Centralizar operaciones globales - Realizar tareas administrativas de forma automtica - Evitar errores - Crear reglas de integridad complejas El cdigo que se lanza con el trigger es PL/SQL. No es conveniente realizar excesivos triggers, slo los necesarios, de otro modo se ralentiza en exceso la base de datos.

Creacin de triggers Puesto que un trigger es un cdigo que se dispara, al crearle se deben indicar las siguientes cosas: (1) El evento que da lugar a la ejecucin del trigger (INSERT, UPDATE o DELETE) (2) Cuando se lanza el evento en relacin a dicho evento (BEFORE (antes), AFTER (despus) o INSTEAD OF (en lugar de)) (3) Las veces que el trigger se ejecuta (tipo de trigger: de instruccin o de fila) (4) El cuerpo del trigger, es decir el cdigo que ejecuta dicho trigger Cundo ejecutar el trigger En el apartado anterior se han indicado los posibles tiempos para que el trigger se ejecute. stos pueden ser: BEFORE. El cdigo del trigger se ejecuta antes de ejecutar la instruccin DML que caus el lanzamiento del trigger. AFTER. El cdigo del trigger se ejecuta despus de haber ejecutado la instruccin DML que caus el lanzamiento del trigger. INSTEAD OF. El trigger sustituye a la operacin DML Se utiliza para vistas que no admiten instrucciones DML.

-Estructura CREATE [OR REPLACE] TRIGGER nombreDeTrigger clusulaDeTiempo evento1 [OR evento2[,...]] ON tabla [DECLARE declaraciones ] BEGIN cuerpo [EXCEPTION captura de excepciones ] END; Referencias NEW y OLD Cuando se ejecutan instrucciones UPDATE, hay que tener en cuenta que se modifican valores antiguos (OLD) para cambiarles por valores nuevos (NEW). Las palabras NEW y OLD permiten acceder a los valores nuevos y antiguos respectivamente. El apartado REFERENCING de la creacin de triggers, permite asignar nombres a las palabras NEW y OLD (en la prctica no se suele utilizar esta posibilidad). As NEW.nombre hara referencia al nuevo nombre que se asigna a una determinada tabla y OLD.nombre al viejo. En el apartado de instrucciones del trigger (el BEGIN) hay que adelantar el smbolo : a las palabra NEW y OLD (seran :NEW.nombre y :OLD.nombre)

EJEMPLOS TRIGGERS AVISA CUANDO SE INSERTA O MODIFICA UN DATO DE LA TABLA AYUDANTE CREATE OR REPLACE TRIGGER inserta_modifica_ayudante BEFORE INSERT OR UPDATE ON teayu_ayud FOR EACH ROW BEGIN IF INSERTING THEN DBMS_OUTPUT.PUT_LINE('Ha realizado una insercion'); ELSIF UPDATING THEN DBMS_OUTPUT.PUT_LINE('Ha realizado una modificacion'); END IF; END; / NIEGA LA INSERCION DE DATOS EN LA TABLA AYUDANTE CREATE OR REPLACE TRIGGER negado_ayudante BEFORE INSERT OR UPDATE ON teayu_ayud FOR EACH ROW DECLARE BEGIN IF INSERTING THEN RAISE_APPLICATION_ERROR(-20001,'Esta intentando realizar una insercion y no se encuentra autorizado'); ELSIF UPDATING THEN RAISE_APPLICATION_ERROR(-20001,'Esta intentando realizar una modificacion y no se encuentra autorizado'); END IF; END; /

CREACION DE UNA TABLA DE CONTROL Y TRIGGERS QUE VERIFICA LA FECHA Y USUARIO QUE HIZO UNA INSERCION EN LA TABLA AYUDANTE CREATE TABLE contro_ingresos_ayudantes( username varchar2(50), fecha date ); CREATE OR REPLACE TRIGGER tr_ingreso_ayudantes before insert on teayu_ayud for each row insert into contro_ingresos_ayudantes values(user,sysdate); end; / Alteramos el format en el que se guarde la fecha para que muestre la hora tambien con el siguiente commando. alter session set NLS_DATE_FORMAT = 'DD/MM/YYYY HH24:MI:SS'; CREACION DE UNA TABLA PARA HISTORICO Y TRIGGER QUE ENVIE LOS DATOS A LA MISMA CON LA REFERENCIA NUEVA Y VIEJA. CREATE TABLE teayu_his( teayu_cod_his char(4), teayu_ced_his varchar2(12), teayu_nom_ant varchar2(25), teayu_nom_nue varchar2(25), teayu_ape_ant varchar2(25), teayu_ape_nue varchar2(25), teayu_dir_ant varchar2(50), teayu_dir_nue varchar2(50), teayu_tel_ant varchar2(12), teayu_tel_nue varchar2(12), teayu_corr_ant varchar2(25), teayu_corr_nue varchar2(25), usuario varchar2(50), fecha date

);

CREATE OR REPLACE TRIGGER modifica_ayudante_historico BEFORE UPDATE ON teayu_ayud FOR EACH ROW WHEN (OLD.teayu_codigo=NEW.teayu_codigo) BEGIN INSERT INTO teayu_his VALUES(:OLD.teayu_codigo,:OLD.teayu_cedula,:OLD.teayu_nombre,:NEW.t eayu_nombre,:OLD.teayu_apell,:NEW.teayu_apell,:OLD.teayu_dire,:NEW.teayu_di re,:OLD.teayu_tel,:NEW.teayu_tel,:OLD.teayu_correo,:NEW.teayu_correo,user,sys date); END;

NOTA: Para realizar la desactivacin o activacin de los triggers simplemente usamos la siguiente sintaxis. ALTER TRIGGER Nombre del Trigger enable (ACTIVAR) ALTER TRIGGER Nombre del Trigger disabel (DESACTIVAR) Ejemplo: alter trigger modifica_ayudante_historico enable //activa } alter trigger modifica_ayudante_historico disable// desactiva

También podría gustarte