miércoles, 20 de noviembre de 2013

logistics

--Tablas

--Entra con SQLDeveloper con LOGISTICS_DEV y crea las siguientes tablas:


--INSURANCE
--insuranceid integer pk,
--description varchar2(30),
--renewal date

create sequence insurance_seq start with 1 increment by 1 nocache;

create table insurance(
insuranceid integer default insurance_seq.nextval primary key,
description varchar2 (30),
renewal date check(renewal <= timestamp)
);


--    Crear claves primarias
--    Crear trigger de autonumérico
--    Check donde renewal sea mayor que la fecha de hoy
--    Introduce unos registros de ejemplo.


--TRUCK
--plate char(10) pk
--model varchar2(30),
--insuranceid integer not null fk
create table truck(
plate char(10) primary key,
model varchar2(30),
insuranceid integer not null
);
--    Crear claves primarias y extranjeras
--    Introduce unos registros de ejemplo.

alter table insurance
add constraint fk_truck_insurance
foreign key (insuranceid)
references insurance(insuranceid);
--DRIVER
--driverid integer primary key,
--name varchar2(30),
--license char(15),
--birthdate date

create sequence driver_seq start with 1 increment by 1 nocache;

create table driver(
driverid integer default driver_seq.nextval primary key,
name varchar2(30),
license char(15),
birthdate date check ( birthdate < timestamp)
);
--    Crear claves primarias
--    Crear trigger de autonumérico
--    Check donde renewal sea menor que la fecha de hoy
--    Introduce unos registros de ejemplo.

--Tanto DELIVERY COMO PACKAGE deben formar parte de un cluster
--DELIVERY
--deliveryid integer primary key,
--origin varchar(30),
--destiny varchar(40),
--departure timestamp,
--arrival timestamp,
--driverid integer fk,
--truckid integer fk
CREATE CLUSTER CLUSTER_DELIVERY
 (deliverycode NUMBER(4))
SIZE 512
STORAGE (initial 100K next 50K);

CREATE INDEX IDX_CLUSTERDELIVERY ON CLUSTER CLUSTER_DELIVERY;

create sequence delivery_seq start with 1 increment by 1 nocache;

create table delivery(
  deliveryid integer default delivery_seq.nextval primary key,
  origin varchar2 (30),
  destiny varchar2 (40),
  departure timestamp,
  arrival timestamp,
  driverid integer,
  truckid varchar2 (30)
)

cluster CLUSTER_DELIVERY (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.

alter table delivery
add constraint fk_delivery_driver
foreign key (driverid)
references driver(driverid);


alter table delivery
add constraint fk_delivery_truck
foreign key (truckid)
references truck(truckid);



--CUSTOMER
--customerid integer pk,
--name varchar2(40) not null,
--address varchar2(40) default 'unknown',
--email varchar2(100)

create sequence customer_seq start with 1 increment by 1 nocache;

create table customer(
  customerid integer default customer_seq.nextval primary key,
  name varchar2(40),
  address varchar2(40) default 'unknow',
  email varchar2(100)
);

--    Crear claves primarias
--    Crear trigger de autonumérico
--    Introduce unos registros de ejemplo.

--PACKAGE
--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,
deliveryid integer
)

cluster cluster_delivery(packageid);

alter table package
add constraint fk_package_customer
foreign key (customerid)
references customer(customerid);

alter table package
add constraint fk_package_delivery
foreign key (deliveryid)
references delivery(deliveryid);

No hay comentarios:

Publicar un comentario