Vous êtes sur la page 1sur 4

CREATE TABLE regimiento (

id
DECIMAL(2,0),
NombreReg
VARCHAR(45)
NOT NULL,
NombreCoronel
VARCHAR(45)
NOT NULL,
Integrantes
DECIMAL(6,0),
CONSTRAINT
PK_regimiento PRIMARY KEY (id)
);
CREATE TABLE batallon (
id_b
DECIMAL(2,0),
id_reg
DECIMAL (2,0),
nombre
VARCHAR(60) NOT NULL,
Integrantes
DECIMAL(6,0),
CONSTRAINT
PK_id_b PRIMARY KEY (id_b),
CONSTRAINT
FK_id_reg FOREIGN KEY (id_reg) REFERENCES regimiento (id)
);
CREATE TABLE mision (
id
DECIMAL(2,0),
id_b
DECIMAL(2,0),
nombremomento
VARCHAR(60) NOT NULL,
fechasalida
DATE,
fecharetorno
DATE,
CONSTRAINT
PK_idm PRIMARY KEY (id),
CONSTRAINT
FK_id_b FOREIGN KEY (id_b) REFERENCES batallon (id_b)
);

CREATE TABLE ubicacion (


id
DECIMAL(2,0),
id_m
DECIMAL(2,0),
nombre
VARCHAR(60) NOT NULL,
latitud
VARCHAR(60) NOT NULL,
longitud
VARCHAR(60) NOT NULL,
CONSTRAINT PK_id PRIMARY KEY (id),
CONSTRAINT FK_id_m FOREIGN KEY (id_m) REFERENCES mision(id)
);

CREATE TABLE alimento (


id
DECIMAL(10,0),
grupo
VARCHAR(60),
descripcion
VARCHAR(60),
alimento
VARCHAR(60),
GrHD
DECIMAL (15,3),
calorias
DECIMAL(15,3),
proteinas
DECIMAL(15,3),
grasas
DECIMAL(15,3),
cantidad
DECIMAL (15,3),
unidad
char(3),
presentacion
VARCHAR(20),
caducidad
VARCHAR(20),
CONSTRAINT
PK_id_a PRIMARY KEY (id)

);
CREATE TABLE menu (
id_menu
DECIMAL (10,0),
descripcion
VARCHAR(60) NOT NULL,
CONSTRAINT
PK_menu PRIMARY KEY (id_menu)
);
CREATE TABLE componentes (
id_menu
DECIMAL (10,0),
id_alimento
DECIMAL(10,0),
cantidad
DECIMAL (15,3),
CONSTRAINT
PK_componentes PRIMARY KEY (id_menu,id_alimento),
CONSTRAINT
FK_id_comp_alim FOREIGN KEY (id_alimento) REFERENCES alimento (i
d)
);
CREATE TABLE orden (
Id_orden
DECIMAL(10,0),
id_mision
DECIMAL(2,0),
fechapedido
DATE,
id_menu
DECIMAL (10,0),
tipocomida
VARCHAR(60),
CONSTRAINT
PK_orden PRIMARY KEY (id_orden,id_mision,id_menu),
CONSTRAINT
FK_id_mision_orden FOREIGN KEY (id_mision) REFERENCES mision(id)
,
CONSTRAINT
FK_id_menu_orden FOREIGN KEY (id_menu) REFERENCES menu (id_menu
)
);
-------------------consultas
SELECT od.id_orden,
od.id_mision,
od.fechapedido,
od.id_menu,
od.tipocomida,
me.descripcion,
co.id_alimento,
al.descripcion,
al.grupo,
al.alimento,
al.grhd,
al.calorias,
al.proteinas,
al.grasas
FROM orden od ,mision mi ,menu me , componentes co ,alimento al
where od.id_mision = mi.id
and mi.id_b = 1
and od.fechapedido = to_date('01/05/2007','DD/MM/YYYY')
and od.id_menu = me.id_menu
AND me.id_menu = co.id_menu
and co.id_alimento = al.id;
--ejerccicio 3
--a)

SELECT
mi.id_b,
od.fechapedido,
sum(al.proteinas) Total_proteinas
FROM orden od ,mision mi ,menu me , componentes co ,alimento al
where od.id_mision = mi.id
and mi.id_b = 1
and od.fechapedido = to_date('01/05/2007','DD/MM/YYYY')
and od.id_menu = me.id_menu
AND me.id_menu = co.id_menu
and co.id_alimento = al.id
group by mi.id_b,od.fechapedido;
---b)
SELECT
re.nombrereg Regimiento,
mi.nombremomento,
ba.integrantes Total_Integrantes,
sum(al.calorias) Total_calorias_x_integrantes,
ba.integrantes * sum(al.calorias) Total_Regimiento
FROM orden od ,mision mi ,menu me , componentes co ,alimento al , batallon ba
, regimiento re
where od.id_mision = mi.id
and re.id = 1
and mi.id = 2
and re.id = ba.id_reg
and od.id_menu = me.id_menu
AND me.id_menu = co.id_menu
and co.id_alimento = al.id
and mi.id_b = ba.id_b
group by re.nombrereg,mi.nombremomento,ba.integrantes;
--c)

--d)
select al2.grupo,al2.alimento from alimento al2
where al2.grupo = 'Grupo II'
and al2.alimento not in (SELECT distinct al.alimento
FROM orden od ,mision mi ,menu me , componentes co ,al
imento al
where od.id_mision = mi.id
and mi.id_b = 1
AND me.id_menu = co.id_menu
and co.id_alimento = al.id
and al.grupo = 'Grupo II');

--Ejercicio 4

---- secuencia

Manipulacin datos y consultas (10%)

create sequence secuencia_alim2


start with 834
increment by 1
maxvalue 99999
minvalue 1;

----- trigger
CREATE OR REPLACE FUNCTION AlimentoFuncion()
RETURNS "trigger" AS
$BODY$
BEGIN
New.id:=nextval('secuencia_alim2');
Return NEW;
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE;
CREATE TRIGGER AlimentosTrigger
BEFORE INSERT
ON alimento
FOR EACH ROW
EXECUTE PROCEDURE AlimentoFuncion();

Vous aimerez peut-être aussi