Sie sind auf Seite 1von 3

alter session set '_ORACLE_SCRIPT' = true;

CREATE USER indicadores IDENTIFIED BY sena default tablespace users;

CREATE TABLE Zona (


idZona NUMBER PRIMARY KEY NOT NULL,
NombreZona varchar (30) NOT NULL,
TipoZona varchar (20) NOT NULL
);
CREATE SEQUENCE SEQ_ZONA
MINVALUE 1
MAXVALUE 1000000
START WITH 1
INCREMENT BY 1;
CREATE or replace TRIGGER TR_ZONA
BEFORE INSERT ON ZONA FOR EACH ROW
DECLARE
NUMERO NUMBER;
BEGIN
SELECT SEQ_ZONA.NEXTVAL INTO NUMERO FROM DUAL;
:NEW.idZONA :=NUMERO;
END;
/
prompt 1
CREATE TABLE Recurso (
idRecurso NUMBER PRIMARY KEY NOT NULL,
NombreRecurso varchar (25) NOT NULL
);
CREATE TABLE Indicador (
idIndicador NUMBER PRIMARY KEY NOT NULL,
idRecurso NUMBER NOT NULL,
NombreIndicador varchar (200) NULL,
Sigla varchar (15) NULL,
TipoIndicador varchar (30) NOT NULL,
Ambito varchar (30) NULL,
Descripcion varchar (1000) NULL
);
CREATE TABLE EstacionMuestreo (
idEstacionMuestreo NUMBER PRIMARY KEY NOT NULL,
idZona NUMBER NOT NULL,
Nombre varchar (50) NULL,
Ubicaci�n varchar (300) NULL,
Longitud decimal (18, 0) NOT NULL
);
CREATE SEQUENCE SEQ_EstacionMuestreo
MINVALUE 49
MAXVALUE 1000000
START WITH 49
INCREMENT BY 1;
CREATE OR REPLACE TRIGGER TR_EstacionMuestreo
BEFORE INSERT ON EstacionMuestreo FOR EACH ROW
DECLARE
NUMERO NUMBER;
BEGIN
SELECT SEQ_EstacionMuestreo.NEXTVAL INTO NUMERO FROM DUAL;
:NEW.idEstacionMuestreo :=NUMERO;
END;
/
prompt 2
CREATE TABLE MuestraMensual (
idMuestraMensual NUMBER PRIMARY KEY NOT NULL,
idIndicador NUMBER NOT NULL,
Fecha NUMBER NOT NULL,
Mes NUMBER NOT NULL,
Valor decimal (18, 0) NOT NULL
);
CREATE SEQUENCE SEQ_MuestraMensual
MINVALUE 1
MAXVALUE 1000000
START WITH 1
INCREMENT BY 1;

CREATE OR REPLACE TRIGGER TR_MuestraMensual


BEFORE INSERT ON MuestraMensual FOR EACH ROW
DECLARE
NUMERO NUMBER;
BEGIN
SELECT SEQ_MuestraMensual.NEXTVAL INTO NUMERO FROM DUAL;
:NEW.idMuestraMensual :=NUMERO;
END;
/
CREATE TABLE MuestraAnual (
idMuestraAnual NUMBER PRIMARY KEY NOT NULL,
idEstacionMuestreo NUMBER NOT NULL,
idIndicador NUMBER NOT NULL,
Fecha NUMBER NOT NULL,
Valor decimal (18, 0) NULL
);
CREATE SEQUENCE SEQ_MuestraAnual
MINVALUE 1
MAXVALUE 1000000
START WITH 1
INCREMENT BY 1;

CREATE OR REPLACE TRIGGER TR_MuestraAnual


BEFORE INSERT ON MuestraAnual FOR EACH ROW
DECLARE
NUMERO NUMBER;
BEGIN
SELECT SEQ_MuestraAnual.NEXTVAL INTO NUMERO FROM DUAL;
:NEW.idMuestraAnual :=NUMERO;
END;
/
/*LLAVES FORANEAS*/
ALTER TABLE Indicador
ADD FOREIGN KEY( idRecurso ) REFERENCES Recurso ( idRecurso );
ALTER TABLE EstacionMuestreo
ADD FOREIGN KEY( idZona ) REFERENCES Zona ( idZona );
ALTER TABLE MuestraMensual
ADD FOREIGN KEY( idIndicador ) REFERENCES Indicador ( idIndicador );
ALTER TABLE MuestraAnual
ADD FOREIGN KEY( idEstacionMuestreo ) REFERENCES EstacionMuestreo (
idEstacionMuestreo );
ALTER TABLE MuestraAnual
ADD FOREIGN KEY( idIndicador ) REFERENCES Indicador ( idIndicador );

INSERT INTO Zona ( idZona , NombreZona , TipoZona ) VALUES (1, 'Canal Rio Negro',
'Cuenca');
INSERT INTO Zona ( idZona , NombreZona , TipoZona ) VALUES (2, 'Canal torca',
'Cuenca');
INSERT INTO Zona ( idZona , NombreZona , TipoZona ) VALUES (3, 'Sector Urbano',
'Area Influencia');
INSERT INTO Zona ( idZona , NombreZona , TipoZona ) VALUES (4, 'Canal Rio Grande',
'Cuenca');
INSERT INTO Zona ( idZona , NombreZona , TipoZona ) VALUES (5, 'Perimetro Urbano',
'Area Influencia');
INSERT INTO Zona ( idZona , NombreZona , TipoZona ) VALUES (6, 'Sector Industria',
'IndustriaControlada');
INSERT INTO Zona ( idZona , NombreZona , TipoZona ) VALUES (7, 'Sector Rural',
'Area Influencia');

Das könnte Ihnen auch gefallen