Empresa de Logística
Crea un tablespace llamado LOGISTICS
Crea tres usuarios cuyo default tablespace sea ese
- LOGISTICS_USER con rol de connect
- LOGISTICS_DEV con rol de connect,resources
- LOGISTICS_ADM con rol de sysdba
Tablas
Entra con SQLDeveloper con LOGISTICS_DEV y crea las siguientes tablas:
INSURANCE
insuranceid integer pk,
description varchar2(30),
renewal date
- Crear claves primarias
- Crear trigger de autonumérico
- Check donde renewal sea mayor que la fecha de hoy
- Introduce unos registros de ejemplo.
-----------------------------------------------------------------------------------------------------
create table INSURANCE(
insuranceid integer primary key NOT NULL,
description varchar2(30),
renewal date
--constraint fecha_mayor_ck check (renewal>sysdate)
);
CREATE SEQUENCE IncrINSURANCE
MINVALUE 1
INCREMENT BY 1
START WITH 1
nomaxvalue
;
MINVALUE 1
INCREMENT BY 1
START WITH 1
nomaxvalue
;
Create Trigger TriggerINSURANCE
before insert on INSURANCE
for each row
begin
Select IncrINSURANCE.nextval into:new.insuranceid from dual;
end;
/
before insert on INSURANCE
for each row
begin
Select IncrINSURANCE.nextval into:new.insuranceid from dual;
end;
/
-----------------------------------------------------------------------------------------------------
TRUCK
plate char(10) pk
model varchar2(30),
insuranceid integer not null fk
plate char(10) pk
model varchar2(30),
insuranceid integer not null fk
- Crear claves primarias y extranjeras
- crear trigger de autonumérico --PARA QUE UN TRIGGER EN UN CHAR.... SE HACE Y YA ESTA
- Introduce unos registros de ejemplo.
create table TRUCK (
plate char(10) primary key not null,
model varchar2(30),
insuranceid integer not null
);
alter table TRUCK
add constraint FK_Truck_insuranceid
foreign key (insuranceID)
references insurance(insuranceid);
plate char(10) primary key not null,
model varchar2(30),
insuranceid integer not null
);
alter table TRUCK
add constraint FK_Truck_insuranceid
foreign key (insuranceID)
references insurance(insuranceid);
-----------------------------------------------------------------------------------------------------
DRIVER
driverid integer primary key,
name varchar2(30),
license char(15),
birthdate date
driverid integer primary key,
name varchar2(30),
license char(15),
birthdate date
- Crear claves primarias
- Crear trigger de autonumérico
- Check donde renewal sea menor que la fecha de hoy
- Introduce unos registros de ejemplo.
----------------------------------------------------------------------------------------------------
create table DRIVER(
driverid integer primary key,
name varchar2(30),
license char(15),
birthdate date
--constraint fecha_mayor_ck check (birthdate>sysdate) -- NO FUNCIONA!!!
);
CREATE SEQUENCE Incrdriver
MINVALUE 1
INCREMENT BY 1
START WITH 1
nomaxvalue
;
Create Trigger TriggerDRIVERID
before insert on DRIVER
for each row
begin
Select IncrDRIVER.nextval into:new.DRIVERID from dual;
end;
/
driverid integer primary key,
name varchar2(30),
license char(15),
birthdate date
--constraint fecha_mayor_ck check (birthdate>sysdate) -- NO FUNCIONA!!!
);
CREATE SEQUENCE Incrdriver
MINVALUE 1
INCREMENT BY 1
START WITH 1
nomaxvalue
;
Create Trigger TriggerDRIVERID
before insert on DRIVER
for each row
begin
Select IncrDRIVER.nextval into:new.DRIVERID from dual;
end;
/
-----------------------------------------------------------------------------------------------------
Tanto DELIVERY COMO PACKAGE deben formar parte de un cluster
-----------------------------------------------------------------------------------------------------
CREATE CLUSTER CLUSTER_TRANSPORTE
(TRANSCODE NUMBER(4))
SIZE 512
STORAGE (initial 100K next 50K);
-----------------------------------------------------------------------------------------------------
DELIVERY
deliveryid integer primary key,
origin varchar(30),
destiny varchar(40),
departure timestamp,
arrival timestamp,
driverid integer fk,
truckid integer fk
cluster CLUSTER_TRANSPORTE(deliveryid );
cluster CLUSTER_TRANSPORTE(deliveryid );
- Crear claves primarias y extranjeras
- Check donde arrival sea mayor que la fecha de hoy
- Crear trigger de autonumérico
- Introduce unos registros de ejemplo.
-----------------------------------------------------------------------------------------------------
customerid integer pk,
name varchar2(40) not null,
address varchar2(40) default 'unknown',
email varchar2(100)
create table DELIVERY(
deliveryid integer primary key,
origin varchar(30),
destiny varchar(40),
departure timestamp,
arrival timestamp,
driverid integer, --fk
truckid integer --fk
)
CLUSTER CLUSTER_TRANSPORTE (deliveryid);
alter table DELIVERY
add constraint FK_DELIVERY_DRIVERid
foreign key (DRIVERID)
references DRIVER(DRIVERid);
alter table DELIVERY
add constraint FK_DELIVERY_TRUCKid
foreign key (PLATE)
references TRUCK(PLATE);
-----------------------------------------------------------------------------------------------------
CUSTOMERdeliveryid integer primary key,
origin varchar(30),
destiny varchar(40),
departure timestamp,
arrival timestamp,
driverid integer, --fk
truckid integer --fk
)
CLUSTER CLUSTER_TRANSPORTE (deliveryid);
alter table DELIVERY
add constraint FK_DELIVERY_DRIVERid
foreign key (DRIVERID)
references DRIVER(DRIVERid);
alter table DELIVERY
add constraint FK_DELIVERY_TRUCKid
foreign key (PLATE)
references TRUCK(PLATE);
-----------------------------------------------------------------------------------------------------
customerid integer pk,
name varchar2(40) not null,
address varchar2(40) default 'unknown',
email varchar2(100)
- Crear claves primarias
- Crear trigger de autonumérico
- Introduce unos registros de ejemplo.
-----------------------------------------------------------------------------------------------------
CREATE TABLE CUSTOMER(
customerid integer primary key,
name varchar2(40) not null,
address varchar2(40) default 'unknown',
email varchar2(100)
);
CREATE SEQUENCE Incrcustomer
MINVALUE 1
INCREMENT BY 1
START WITH 1
nomaxvalue
;
Create Trigger TriggerCUSTOMER
before insert on CUSTOMER
for each row
begin
Select Incrcustomer.nextval into:new.customerid from dual;
end;-----------------------------------------------------------------------------------------------------
PACKAGE
packageid integer pk,
description varchar2(40),
withcare char(1) default 'Y',
customerid integer fk,
deliveryid integer fk
CREATE TABLE CUSTOMER(
customerid integer primary key,
name varchar2(40) not null,
address varchar2(40) default 'unknown',
email varchar2(100)
);
CREATE SEQUENCE Incrcustomer
MINVALUE 1
INCREMENT BY 1
START WITH 1
nomaxvalue
;
Create Trigger TriggerCUSTOMER
before insert on CUSTOMER
for each row
begin
Select Incrcustomer.nextval into:new.customerid from dual;
end;-----------------------------------------------------------------------------------------------------
packageid integer pk,
description varchar2(40),
withcare char(1) default 'Y',
customerid integer fk,
deliveryid integer fk
- Crear claves primarias y extranjeras
- Crear trigger de autonumérico
- Introduce unos registros de ejemplo.
create table PACKAGE(
packageid integer primary key,
description varchar2(40),
withcare char(1) default 'Y',
customerid integer, -- fk,
deliveryid integer -- fk
);
CLUSTER CLUSTER_TRANSPORTE (packageid);
alter table package
add constraint FK_PACKAGE_CUSTOMERID
foreign key (CUSTOMERID)
references CUSTOMER(CUSTOMERid);
alter table PACKAGE
add constraint FK_PACKAGE_DELIVERYID
foreign key (DELIVERYID)
references DELIVERY(DELIVERYID);
-----------------------------------------------------------------------------------------------------
packageid integer primary key,
description varchar2(40),
withcare char(1) default 'Y',
customerid integer, -- fk,
deliveryid integer -- fk
);
CLUSTER CLUSTER_TRANSPORTE (packageid);
alter table package
add constraint FK_PACKAGE_CUSTOMERID
foreign key (CUSTOMERID)
references CUSTOMER(CUSTOMERid);
alter table PACKAGE
add constraint FK_PACKAGE_DELIVERYID
foreign key (DELIVERYID)
references DELIVERY(DELIVERYID);
-----------------------------------------------------------------------------------------------------
Sinónimos
Por cada tabla crea un sinónimo para que se puedan manejar
las tablas con el prefijo LOGISTICS.
-----------------------------------------------------------------------------------------------------
las tablas con el prefijo LOGISTICS.
-----------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------
Consultas
- Crea una consulta que muestre todos los nombres de camiones.
- Crea una consulta que muestre el total de paquetes que se han mandado.
- Crea una consulta que muestre los nombres de los conductores que han hecho algún envío.
- Crea una consulta que solicite un código de conductor y muestre los camiones que ha utilizado en un envío
- Crea una consulta que solicite un envío y muestre los paquetes que van en ese envío.
- Crea una consulta que muestre la suma de paquetes que hay en cada envío.
- Crea una consulta que solicite un código de paquete y muestre el nombre del conductor que lo transportaba
- Crea una consulta que dado un código de envío elimine todos los paquetes que forman parte de el.
No hay comentarios:
Publicar un comentario