Sei sulla pagina 1di 3

CREATE DATABASE PARCIALBD;

CREATE TABLE ASOCIACION(


NIT INT NOT NULL,
NOMBRE VARCHAR(30),
TELEFONO INT,
CORREO VARCHAR(30),
CANTIDAD-ASOCIADOS INT);

CREATE TABLE PERSONA(


CEDULA INT NOT NULL,
NOMBRE VARCHAR(30),
APELLIDO VARCHAR(30),
CORREO VARCHAR(30),
TELEFONO INT,
ESTADO VARCHAR(30));

CREATE TABLE PERTENECE (


PERSONA INT,
ASOCIACION INT,
FECHA-REGISTRO DATE);

CREATE TABLE PREDIO(


ID INT NOT NULL,
NOMBRE VARCHAR(30),
DESCRIPCION VARCHAR(30),
UBICACION VARCHAR(30),
NUMERO-HECTAREAS DECIMAL(50,10),
FUENTES-HIDRICAS INT,
TIPOS-PRODUCCION VARCHAR(30),
TIPO-POSESION VARCHAR(30)
PERSONA INT);

CREATE TABLE CULTIVO(


ID INT NOT NULL,
NUMERO-PLANTAS INT,
VARIEDAD-FRUTAS INT,
ESTADO-VEGETATIVO VARCHAR(30),
PRODUCCION INT,
PREDIO INT,
COSTO INT);

CREATE TABLE COSTO(


ID INT NOT NULL,
NOMBRE VARCHAR(20),
VALOR INT,
DESCRIPCION VARCHAR(30)
);

CREATE TABLE VARIEDAD(


ID INT NOT NULL,
NOMBRE VARCHAR(20),
DESCRIPCION VARCHAR(50),
CULTIVO INT,
FRUTA INT);

CREATE TABLE FRUTA(


ID INT NOT NULL,
NOMBRE VARCHAR(20),
CALORIAS DECIMAL(50,5),
FIBRA DECIMAL(50,5),
VITAMINAB DECIMAL(50,5),
VITAMINAC DECIMAL(50,5)
);

ALTER TABLE ASOCIACION ADD CONSTRAINT PK_ASOCIACION PRIMARY KEY(NIT);


ALTER TABLE PERSONA ADD CONSTRAINT PK_PERSONA PRIMARY KEY(CEDULA);
ALTER TABLE PERTENECE ADD CONSTRAINT PK_PERTENECE PRIMARY KEY(PERSONA, ASOCIACION);
ALTER TABLE PREDIO ADD CONSTRAINT PK_PREDIO PRIMARY KEY(ID);
ALTER TABLE CULTIVO ADD CONSTRAINT PK_CULTIVO PRIMARY KEY(ID);
ALTER TABLE COSTO ADD CONSTRAINT PK_COSTO PRIMARY KEY(ID);
ALTER TABLE VARIEDAD ADD CONSTRAINT PK_VARIEDAD PRIMARY KEY(ID);
ALTER TABLE FRUTA ADD CONTRAINT PK_FRUTA PRIMARY KEY(ID);

ALTER TABLE PERTENECE ADD CONSTRAINT FK_PERSONA FOREIGN KEY (PERSONA) REFERENCES
PERSONA (CEDULA);
ALTER TABLE PERTENECE ADD CONSTRAINT FK_ASOCIACION FOREIGN KEY (ASOCIACION)
REFERENCES Casa (NIT);
ALTER TABLE PREDIO ADD CONSTRAINT FK_USUARIO FOREIGN KEY (USUARIO) REFERENCES
USUARIO (CEDULA);
ALTER TABLE CULTIVO ADD CONSTRAINT FK_PREDIO FOREIGN KEY (PREDIO) REFERENCES PREDIO
(ID);
ALTER TABLE CULTIVO ADD CONSTRAINT FK_COSTO FOREIGN KEY (COSTO) REFERENCES COSTO
(ID);
ALTER TABLE VARIEDAD ADD CONSTRAINT FK_CULTIVO FOREIGN KEY (CULTIVO) REFERENCES
CULTIVO (ID);
ALTER TABLE VARIEDAD ADD CONSTRAINT FK_FRUTA FOREIGN KEY (FRUTA) REFERENCES FRUTA
(ID);

CREATE ROLE USUARIOS;


GRANT SELECT ON PERSONA,PERTENCE,PREDIO, CULTIVO, VARIEDAD, FRUTA, COSTO TO
USUARIOS;
GRANT INSERT ON ASOCIACION, PERSONA, PREDIO, CULTIVO, VARIEDAD, FRUTA, COSTO TO
USUARIOS;
GRANT UPDATE ON ASOCIACION, PERSONA, PREDIO, CULTIVO, FRUTA TO USUARIOS;
GRANT DELETE ON PERSONA, PREDIO, CULTIVO, FRUTA, COSTO TO USUARIOS;

CREATE USER USUARIO1 WITH PASSWORD '123456';


GREANT USUARIOS TO USUARIO1;

CREATE ROLE ADMI;


GRANT SELECT ON PERSONA, ASOCIACION, PERTENECE, PERSONA, PREDIO, CULTIVO, VARIEDAD,
FRUTA, COSTO TO ADMI;
GRANT INSERT ON PERSONA, ASOCIACION, PERTENECE, PERSONA, PREDIO, CULTIVO, VARIEDAD,
FRUTA, COSTO TO ADMI;
GRANT UPDATE ON PERSONA, ASOCIACION, PERTENECE, PERSONA, PREDIO, CULTIVO, VARIEDAD,
FRUTA, COSTO TO ADMI;
GRANT DELETE ON PERSONA, ASOCIACION, PERTENECE, PERSONA, PREDIO, CULTIVO, VARIEDAD,
FRUTA, COSTO TO ADMI;
CREATE USER USUARIO2 WITH PASSWORD '123456';
GREANT ADMI TO USUARIO2;

CREATE OR REPLACE FUNCTION SUMA() RETURNS TRIGGER AS $modificar$


DECLARE BEGIN
UPDATE ASOCIACION SET CANTIDAD-ASOCIADOS =(ASOCIACION.CANTIDAD-ASOCIADOS + 1)
WHERE ASOCIACION.NIT=NEW.ASOCIACION;
RETURN NULL;
END;

$modificar$ LANGUAGE plpgsql;

CREATE TRIGGER modificar AFTER INSERT ON PERSONA FOR EACH ROW


EXECUTE PROCEDURE SUMA();

Potrebbero piacerti anche