Advertisement
JUNIORCEDE1

Untitled

Jul 6th, 2017
182
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*==============================================================*/
  2. /* DBMS name:      ORACLE Version 10g                           */
  3. /* Created on:     6/7/2017 21:32:10                            */
  4. /*==============================================================*/
  5.  
  6.  
  7. ALTER TABLE ALQUILER
  8.    DROP CONSTRAINT FK_ALQUILER_FK_ALQUIL_EMBARCAC;
  9.  
  10. ALTER TABLE ALQUILER
  11.    DROP CONSTRAINT FK_ALQUILER_FK_CLIENT_CLIENTE;
  12.  
  13. ALTER TABLE EMBARCACION
  14.    DROP CONSTRAINT FK_EMBARCAC_FK_REPARA_REPARACI;
  15.  
  16. ALTER TABLE EMBARCACION
  17.    DROP CONSTRAINT FK_EMBARCAC_FK_TRIPUL_TRIPULAC;
  18.  
  19. ALTER TABLE FACTURA
  20.    DROP CONSTRAINT FK_FACTURA_FK_ALQUIL_ALQUILER;
  21.  
  22. ALTER TABLE MANTENIMIENTO
  23.    DROP CONSTRAINT FK_MANTENIM_FK_MAN_EM_EMBARCAC;
  24.  
  25. ALTER TABLE PASAJEROS
  26.    DROP CONSTRAINT FK_PASAJERO_FK_TRIPUL_TRIPULAC;
  27.  
  28. ALTER TABLE TRIPULACION
  29.    DROP CONSTRAINT FK_TRIPULAC_FK_TRIPUL_EMBARCAC;
  30.  
  31. DROP INDEX FK_ALQUILER_FACTURA_FK;
  32.  
  33. DROP INDEX FK_ALQUILER_EMBARCACION_FK;
  34.  
  35. DROP INDEX FK_CLIENTE_ALQUILER_FK;
  36.  
  37. DROP TABLE ALQUILER CASCADE CONSTRAINTS;
  38.  
  39. DROP INDEX FK_CLIENTE_FACTURA_FK;
  40.  
  41. DROP TABLE CLIENTE CASCADE CONSTRAINTS;
  42.  
  43. DROP INDEX FK_TRIPULACION_EMBARCACION_FK;
  44.  
  45. DROP INDEX FK_REPARACION_EMBARCACION_FK;
  46.  
  47. DROP TABLE EMBARCACION CASCADE CONSTRAINTS;
  48.  
  49. DROP INDEX FK_ALQUILER_FACTURA2_FK;
  50.  
  51. DROP TABLE FACTURA CASCADE CONSTRAINTS;
  52.  
  53. DROP INDEX FK_MAN_EMBARCA_FK;
  54.  
  55. DROP TABLE MANTENIMIENTO CASCADE CONSTRAINTS;
  56.  
  57. DROP INDEX FK_TRIPULACION_PASAJERO_FK;
  58.  
  59. DROP TABLE PASAJEROS CASCADE CONSTRAINTS;
  60.  
  61. DROP TABLE REPARACION CASCADE CONSTRAINTS;
  62.  
  63. DROP INDEX FK_TRIPULACION_EMBARCACION2_FK;
  64.  
  65. DROP TABLE TRIPULACION CASCADE CONSTRAINTS;
  66.  
  67. /*==============================================================*/
  68. /* Table: ALQUILER                                              */
  69. /*==============================================================*/
  70. CREATE TABLE ALQUILER  (
  71.    ID_ALQUILER          INTEGER                         NOT NULL,
  72.    ID_FACTURA           INTEGER,
  73.    ID_EMBARCACION       INTEGER,
  74.    ID_CLIENTE           INTEGER,
  75.    VALOR_INICIAL_ALQUILER NUMBER(10,2),
  76.    VALOR_FINAL_ALQUILER NUMBER(10,2),
  77.    FECHA_ALQUILER       DATE,
  78.    FECHA_ENTREGA_EMBARCACION DATE,
  79.    FECHA_SALIDA_EMBARCACION DATE,
  80.    OBSERVACION_ALQUILER VARCHAR2(200),
  81.    CONSTRAINT PK_ALQUILER PRIMARY KEY (ID_ALQUILER)
  82. );
  83.  
  84. /*==============================================================*/
  85. /* Index: FK_CLIENTE_ALQUILER_FK                                */
  86. /*==============================================================*/
  87. CREATE INDEX FK_CLIENTE_ALQUILER_FK ON ALQUILER (
  88.    ID_CLIENTE ASC
  89. );
  90.  
  91. /*==============================================================*/
  92. /* Index: FK_ALQUILER_EMBARCACION_FK                            */
  93. /*==============================================================*/
  94. CREATE INDEX FK_ALQUILER_EMBARCACION_FK ON ALQUILER (
  95.    ID_EMBARCACION ASC
  96. );
  97.  
  98. /*==============================================================*/
  99. /* Index: FK_ALQUILER_FACTURA_FK                                */
  100. /*==============================================================*/
  101. CREATE INDEX FK_ALQUILER_FACTURA_FK ON ALQUILER (
  102.    ID_FACTURA ASC
  103. );
  104.  
  105. /*==============================================================*/
  106. /* Table: CLIENTE                                               */
  107. /*==============================================================*/
  108. CREATE TABLE CLIENTE  (
  109.    ID_CLIENTE           INTEGER                         NOT NULL,
  110.    ID_FACTURA           INTEGER,
  111.    NOMBRE_CLIENTE       VARCHAR2(50),
  112.    DIRECCION_CLIENTE    VARCHAR2(70),
  113.    TELEFONO             VARCHAR2(14),
  114.    REINCIDENCIA_ALQUILER INTEGER,
  115.    CEDULA               VARCHAR2(11),
  116.    OBSERVACION_CLIENTE  VARCHAR2(200),
  117.    CONSTRAINT PK_CLIENTE PRIMARY KEY (ID_CLIENTE)
  118. );
  119.  
  120. /*==============================================================*/
  121. /* Index: FK_CLIENTE_FACTURA_FK                                 */
  122. /*==============================================================*/
  123. CREATE INDEX FK_CLIENTE_FACTURA_FK ON CLIENTE (
  124.    ID_FACTURA ASC
  125. );
  126.  
  127. /*==============================================================*/
  128. /* Table: EMBARCACION                                           */
  129. /*==============================================================*/
  130. CREATE TABLE EMBARCACION  (
  131.    ID_EMBARCACION       INTEGER                         NOT NULL,
  132.    ID_REPARACION        INTEGER,
  133.    ID_TRIPULACION       INTEGER,
  134.    MATRICULA            VARCHAR2(50),
  135.    TIPO_EMBARCACION     VARCHAR2(50),
  136.    NOMBRE               VARCHAR2(50),
  137.    MAX_PASAJEROS        INTEGER,
  138.    ESTADO               VARCHAR2(50),
  139.    DISPONIBLE           SMALLINT,
  140.    CONSTRAINT PK_EMBARCACION PRIMARY KEY (ID_EMBARCACION)
  141. );
  142.  
  143. /*==============================================================*/
  144. /* Index: FK_REPARACION_EMBARCACION_FK                          */
  145. /*==============================================================*/
  146. CREATE INDEX FK_REPARACION_EMBARCACION_FK ON EMBARCACION (
  147.    ID_REPARACION ASC
  148. );
  149.  
  150. /*==============================================================*/
  151. /* Index: FK_TRIPULACION_EMBARCACION_FK                         */
  152. /*==============================================================*/
  153. CREATE INDEX FK_TRIPULACION_EMBARCACION_FK ON EMBARCACION (
  154.    ID_TRIPULACION ASC
  155. );
  156.  
  157. /*==============================================================*/
  158. /* Table: FACTURA                                               */
  159. /*==============================================================*/
  160. CREATE TABLE FACTURA  (
  161.    ID_FACTURA           INTEGER                         NOT NULL,
  162.    ID_ALQUILER          INTEGER,
  163.    ID_CLIENTE           INTEGER,
  164.    PAGO_INICIAL         NUMBER(10,2),
  165.    MULTA                NUMBER(10,2),
  166.    IVA                  NUMBER(10,2),
  167.    PAGO_TOTAL           NUMBER(10,2),
  168.    FECHA_FACTURA        DATE,
  169.    CONSTRAINT PK_FACTURA PRIMARY KEY (ID_FACTURA)
  170. );
  171.  
  172. /*==============================================================*/
  173. /* Index: FK_ALQUILER_FACTURA2_FK                               */
  174. /*==============================================================*/
  175. CREATE INDEX FK_ALQUILER_FACTURA2_FK ON FACTURA (
  176.    ID_ALQUILER ASC
  177. );
  178.  
  179. /*==============================================================*/
  180. /* Table: MANTENIMIENTO                                         */
  181. /*==============================================================*/
  182. CREATE TABLE MANTENIMIENTO  (
  183.    ID_MANTENIMIENTO     INTEGER                         NOT NULL,
  184.    ID_EMBARCACION       INTEGER,
  185.    FECHA_MANTENIMIENTO  DATE,
  186.    HORA_MANTENIMIENTO   DATE,
  187.    FECHA_ENTREGA_MANTENIMIENTO DATE,
  188.    HORA_ENTREGA_MANTENIMIENTO DATE,
  189.    VALOR_MANTENIMIENTO  NUMBER(10,2),
  190.    OBSERVACION_MANTENIMIENTO VARCHAR2(200),
  191.    CONSTRAINT PK_MANTENIMIENTO PRIMARY KEY (ID_MANTENIMIENTO)
  192. );
  193.  
  194. /*==============================================================*/
  195. /* Index: FK_MAN_EMBARCA_FK                                     */
  196. /*==============================================================*/
  197. CREATE INDEX FK_MAN_EMBARCA_FK ON MANTENIMIENTO (
  198.    ID_EMBARCACION ASC
  199. );
  200.  
  201. /*==============================================================*/
  202. /* Table: PASAJEROS                                             */
  203. /*==============================================================*/
  204. CREATE TABLE PASAJEROS  (
  205.    ID_PASAJERO          INTEGER                         NOT NULL,
  206.    ID_TRIPULACION       INTEGER,
  207.    EDAD                 INTEGER,
  208.    NOMBRE_PASAJERO      VARCHAR2(50),
  209.    SEXO                 VARCHAR2(50),
  210.    CONSTRAINT PK_PASAJEROS PRIMARY KEY (ID_PASAJERO)
  211. );
  212.  
  213. /*==============================================================*/
  214. /* Index: FK_TRIPULACION_PASAJERO_FK                            */
  215. /*==============================================================*/
  216. CREATE INDEX FK_TRIPULACION_PASAJERO_FK ON PASAJEROS (
  217.    ID_TRIPULACION ASC
  218. );
  219.  
  220. /*==============================================================*/
  221. /* Table: REPARACION                                            */
  222. /*==============================================================*/
  223. CREATE TABLE REPARACION  (
  224.    ID_REPARACION        INTEGER                         NOT NULL,
  225.    FECHA_REPARACION     DATE,
  226.    VALOR_REPARACION     NUMBER(10,2),
  227.    CONSTRAINT PK_REPARACION PRIMARY KEY (ID_REPARACION)
  228. );
  229.  
  230. /*==============================================================*/
  231. /* Table: TRIPULACION                                           */
  232. /*==============================================================*/
  233. CREATE TABLE TRIPULACION  (
  234.    ID_TRIPULACION       INTEGER                         NOT NULL,
  235.    ID_EMBARCACION       INTEGER,
  236.    PUESTOS_DISPONIBLE   INTEGER,
  237.    PUESTOS_OCUPADOS     INTEGER,
  238.    CONSTRAINT PK_TRIPULACION PRIMARY KEY (ID_TRIPULACION)
  239. );
  240.  
  241. /*==============================================================*/
  242. /* Index: FK_TRIPULACION_EMBARCACION2_FK                        */
  243. /*==============================================================*/
  244. CREATE INDEX FK_TRIPULACION_EMBARCACION2_FK ON TRIPULACION (
  245.    ID_EMBARCACION ASC
  246. );
  247.  
  248. ALTER TABLE ALQUILER
  249.    ADD CONSTRAINT FK_ALQUILER_FK_ALQUIL_EMBARCAC foreign KEY (ID_EMBARCACION)
  250.       references EMBARCACION (ID_EMBARCACION);
  251.  
  252. ALTER TABLE ALQUILER
  253.    ADD CONSTRAINT FK_ALQUILER_FK_CLIENT_CLIENTE foreign KEY (ID_CLIENTE)
  254.       references CLIENTE (ID_CLIENTE);
  255.  
  256. ALTER TABLE CLIENTE
  257.    ADD CONSTRAINT FK_CLIENTE_FK_CLIENT_FACTURA foreign KEY (ID_FACTURA)
  258.       references FACTURA (ID_FACTURA);
  259.  
  260. ALTER TABLE EMBARCACION
  261.    ADD CONSTRAINT FK_EMBARCAC_FK_REPARA_REPARACI foreign KEY (ID_REPARACION)
  262.       references REPARACION (ID_REPARACION);
  263.  
  264. ALTER TABLE EMBARCACION
  265.    ADD CONSTRAINT FK_EMBARCAC_FK_TRIPUL_TRIPULAC foreign KEY (ID_TRIPULACION)
  266.       references TRIPULACION (ID_TRIPULACION);
  267.  
  268. ALTER TABLE FACTURA
  269.    ADD CONSTRAINT FK_FACTURA_FK_ALQUIL_ALQUILER foreign KEY (ID_ALQUILER)
  270.       references ALQUILER (ID_ALQUILER);
  271.  
  272. ALTER TABLE MANTENIMIENTO
  273.    ADD CONSTRAINT FK_MANTENIM_FK_MAN_EM_EMBARCAC foreign KEY (ID_EMBARCACION)
  274.       references EMBARCACION (ID_EMBARCACION);
  275.  
  276. ALTER TABLE PASAJEROS
  277.    ADD CONSTRAINT FK_PASAJERO_FK_TRIPUL_TRIPULAC foreign KEY (ID_TRIPULACION)
  278.       references TRIPULACION (ID_TRIPULACION);
  279.  
  280. ALTER TABLE TRIPULACION
  281.    ADD CONSTRAINT FK_TRIPULAC_FK_TRIPUL_EMBARCAC foreign KEY (ID_EMBARCACION)
  282.       references EMBARCACION (ID_EMBARCACION);
  283.  
  284. CREATE OR REPLACE TRIGGER tr_b_i_calculo_multa
  285. before
  286. INSERT OR UPDATE ON FACTURA
  287. FOR EACH ROW
  288. DECLARE
  289. dias NUMBER :=0;
  290. fecha_inicial DATE;
  291. valor_inicial NUMBER :=0;
  292. mensaje VARCHAR2(200) :='';
  293. BEGIN
  294.     SELECT fecha_entrega_embarcacion,valor_inicial_alquiler INTO fecha_inicial,valor_inicial FROM alquiler WHERE id_alquiler = :NEW.id_alquiler;
  295.     dias := :NEW.fecha_factura - fecha_inicial;
  296.     :NEW.pago_inicial := valor_inicial;
  297.     :NEW.iva := valor_inicial*(12/100);
  298.     :NEW.multa := 0;
  299.     DBMS_OUTPUT.put_line(dias);
  300.     IF dias>=1 THEN
  301.         :NEW.multa := valor_inicial*(15/100);
  302.         mensaje := 'Excedió el limite de horas de alquiler '||:NEW.multa;
  303.     END IF;
  304.     :NEW.pago_total := :NEW.iva+:NEW.multa+:NEW.pago_inicial;
  305.     UPDATE cliente SET observacion_cliente = mensaje WHERE id_cliente = :NEW.id_cliente;
  306.     UPDATE alquiler SET observacion_alquiler = mensaje,valor_final_alquiler = :NEW.pago_total
  307.     WHERE id_alquiler = :NEW.id_alquiler;
  308. END;
  309.  
  310. CREATE OR REPLACE TRIGGER tr_b_i_calculo_reicidencia
  311. after
  312. INSERT OR UPDATE ON ALQUILER
  313. FOR EACH ROW
  314. DECLARE
  315. reincidencia INTEGER :=0;
  316. BEGIN
  317.     SELECT reincidencia_alquiler INTO reincidencia FROM cliente WHERE id_cliente = :NEW.id_cliente;
  318.     IF reincidencia IS NULL THEN reincidencia := 0; END IF;
  319.     reincidencia := reincidencia +1;
  320.     UPDATE cliente SET REINCIDENCIA_ALQUILER = reincidencia WHERE id_cliente = :NEW.id_cliente;
  321. END;
  322.  
  323. CREATE OR REPLACE TRIGGER tr_b_i_descuento
  324. before
  325. INSERT OR UPDATE ON ALQUILER
  326. FOR EACH ROW
  327. DECLARE
  328. reincidencia INTEGER :=0;
  329. BEGIN
  330.     SELECT reincidencia_alquiler INTO reincidencia FROM cliente WHERE id_cliente = :NEW.id_cliente;
  331.     IF reincidencia >=7 THEN
  332.         :NEW.valor_inicial_alquiler := :NEW.valor_inicial_alquiler - (:NEW.valor_inicial_alquiler * (40/100));
  333.         UPDATE cliente SET reincidencia_alquiler = 0 WHERE id_cliente = :NEW.id_cliente;
  334.     END IF;
  335. END;
  336.  
  337. CREATE OR REPLACE TRIGGER tr_b_i_eliminar_tripulacion
  338. before
  339. INSERT OR UPDATE ON FACTURA
  340. FOR EACH ROW
  341. DECLARE
  342. embarcacion INTEGER :=0;
  343. tripulacion INTEGER :=0;
  344. BEGIN
  345.     SELECT id_embarcacion INTO embarcacion FROM alquiler WHERE id_alquiler = :NEW.id_alquiler;
  346.     SELECT id_tripulacion INTO tripulacion FROM embarcacion WHERE id_embarcacion = embarcacion;
  347.     DELETE FROM pasajeros WHERE id_tripulacion = tripulacion;
  348.     DELETE FROM tripulacion WHERE id_embarcacion = embarcacion;
  349. END;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement