|
@@ -0,0 +1,272 @@
|
|
|
+
|
|
|
+CREATE TABLE public.Truck (
|
|
|
+ Tru_id VARCHAR NOT NULL,
|
|
|
+ Tru_available BOOLEAN DEFAULT True NOT NULL,
|
|
|
+ CONSTRAINT truck_pk PRIMARY KEY (Tru_id)
|
|
|
+);
|
|
|
+COMMENT ON COLUMN public.Truck.Tru_id IS 'Unique identifier (for instance : AC-543-AG).';
|
|
|
+COMMENT ON COLUMN public.Truck.Tru_available IS 'True if can make deliveries. False if in maintenance (temporally unavailable) or written off (definitely unavailable, for example car accident, end of life). Warning ! This attribute does NOT track if a truck is unavailble because it is on the road !';
|
|
|
+
|
|
|
+
|
|
|
+CREATE SEQUENCE public.driver_dri_id_seq_1;
|
|
|
+
|
|
|
+CREATE TABLE public.Driver (
|
|
|
+ Dri_id INTEGER NOT NULL DEFAULT nextval('public.driver_dri_id_seq_1'),
|
|
|
+ Dri_firstName VARCHAR,
|
|
|
+ Dri_lastName VARCHAR NOT NULL,
|
|
|
+ Dri_available BOOLEAN DEFAULT True NOT NULL,
|
|
|
+ Tru_id VARCHAR NOT NULL,
|
|
|
+ CONSTRAINT driver_pk PRIMARY KEY (Dri_id)
|
|
|
+);
|
|
|
+COMMENT ON TABLE public.Driver IS 'A driver who is working in our society or has worked in our society by the past';
|
|
|
+COMMENT ON COLUMN public.Driver.Dri_available IS 'True if the driver is availbale and can make deliveries. False if the driver is fired, has resigned, is sick, etc.';
|
|
|
+COMMENT ON COLUMN public.Driver.Tru_id IS 'Unique identifier (for instance : AC-543-AG).';
|
|
|
+
|
|
|
+
|
|
|
+ALTER SEQUENCE public.driver_dri_id_seq_1 OWNED BY public.Driver.Dri_id;
|
|
|
+
|
|
|
+CREATE SEQUENCE public.postaladdress_add_id_seq_2;
|
|
|
+
|
|
|
+CREATE TABLE public.PostalAddress (
|
|
|
+ Add_id INTEGER NOT NULL DEFAULT nextval('public.postaladdress_add_id_seq_2'),
|
|
|
+ Add_number VARCHAR,
|
|
|
+ Add_name VARCHAR NOT NULL,
|
|
|
+ Add_city VARCHAR NOT NULL,
|
|
|
+ CONSTRAINT postaladdress_pk PRIMARY KEY (Add_id)
|
|
|
+);
|
|
|
+COMMENT ON COLUMN public.PostalAddress.Add_number IS 'Number in the street (NULL if irrelevant).';
|
|
|
+COMMENT ON COLUMN public.PostalAddress.Add_name IS 'Name of the street if relevant or name of the place';
|
|
|
+COMMENT ON COLUMN public.PostalAddress.Add_city IS 'City';
|
|
|
+
|
|
|
+
|
|
|
+ALTER SEQUENCE public.postaladdress_add_id_seq_2 OWNED BY public.PostalAddress.Add_id;
|
|
|
+
|
|
|
+CREATE SEQUENCE public.loadingpoint_lpt_id_seq_1;
|
|
|
+
|
|
|
+CREATE TABLE public.LoadingPoint (
|
|
|
+ Lpt_id INTEGER NOT NULL DEFAULT nextval('public.loadingpoint_lpt_id_seq_1'),
|
|
|
+ Add_id INTEGER NOT NULL,
|
|
|
+ CONSTRAINT loadingpoint_pk PRIMARY KEY (Lpt_id)
|
|
|
+);
|
|
|
+COMMENT ON TABLE public.LoadingPoint IS 'A place were trucks can be loaded.';
|
|
|
+
|
|
|
+
|
|
|
+ALTER SEQUENCE public.loadingpoint_lpt_id_seq_1 OWNED BY public.LoadingPoint.Lpt_id;
|
|
|
+
|
|
|
+CREATE SEQUENCE public.mission_mis_id_seq;
|
|
|
+
|
|
|
+CREATE TABLE public.Mission (
|
|
|
+ Mis_id INTEGER NOT NULL DEFAULT nextval('public.mission_mis_id_seq'),
|
|
|
+ Lpt_id INTEGER NOT NULL,
|
|
|
+ Tru_id VARCHAR NOT NULL,
|
|
|
+ Mis_loadingDate TIMESTAMP NOT NULL,
|
|
|
+ Dri_id INTEGER NOT NULL,
|
|
|
+ CONSTRAINT mission_pk PRIMARY KEY (Mis_id)
|
|
|
+);
|
|
|
+COMMENT ON TABLE public.Mission IS 'A sequence of targets for a driver, from a loading point ans multiple delivery points';
|
|
|
+COMMENT ON COLUMN public.Mission.Tru_id IS 'Unique identifier (for instance : AC-543-AG).';
|
|
|
+COMMENT ON COLUMN public.Mission.Mis_loadingDate IS 'The time of truck loading. The driver should be present at that time to the mission associated loading point.';
|
|
|
+
|
|
|
+
|
|
|
+ALTER SEQUENCE public.mission_mis_id_seq OWNED BY public.Mission.Mis_id;
|
|
|
+
|
|
|
+CREATE SEQUENCE public.product_pro_id_seq;
|
|
|
+
|
|
|
+CREATE TABLE public.Product (
|
|
|
+ Pro_id INTEGER NOT NULL DEFAULT nextval('public.product_pro_id_seq'),
|
|
|
+ Pro_name VARCHAR NOT NULL,
|
|
|
+ CONSTRAINT product_pk PRIMARY KEY (Pro_id)
|
|
|
+);
|
|
|
+COMMENT ON TABLE public.Product IS 'List of products than can be sold or were sold by the past';
|
|
|
+
|
|
|
+
|
|
|
+ALTER SEQUENCE public.product_pro_id_seq OWNED BY public.Product.Pro_id;
|
|
|
+
|
|
|
+CREATE SEQUENCE public.company_com_id_seq;
|
|
|
+
|
|
|
+CREATE TABLE public.Company (
|
|
|
+ Com_id INTEGER NOT NULL DEFAULT nextval('public.company_com_id_seq'),
|
|
|
+ Com_name VARCHAR NOT NULL,
|
|
|
+ Add_id INTEGER NOT NULL,
|
|
|
+ CONSTRAINT com_pk PRIMARY KEY (Com_id)
|
|
|
+);
|
|
|
+COMMENT ON TABLE public.Company IS 'Every company that can take orders or have taken orders by the past.';
|
|
|
+COMMENT ON COLUMN public.Company.Com_name IS 'The public name of the company';
|
|
|
+COMMENT ON COLUMN public.Company.Add_id IS 'The address of the company office';
|
|
|
+
|
|
|
+
|
|
|
+ALTER SEQUENCE public.company_com_id_seq OWNED BY public.Company.Com_id;
|
|
|
+
|
|
|
+CREATE SEQUENCE public.warehouse_war_id_seq_1;
|
|
|
+
|
|
|
+CREATE TABLE public.Warehouse (
|
|
|
+ War_id INTEGER NOT NULL DEFAULT nextval('public.warehouse_war_id_seq_1'),
|
|
|
+ Com_id INTEGER NOT NULL,
|
|
|
+ Add_id INTEGER NOT NULL,
|
|
|
+ CONSTRAINT warehouse_pk PRIMARY KEY (War_id)
|
|
|
+);
|
|
|
+COMMENT ON TABLE public.Warehouse IS 'A place for a customer where products can be delivered';
|
|
|
+
|
|
|
+
|
|
|
+ALTER SEQUENCE public.warehouse_war_id_seq_1 OWNED BY public.Warehouse.War_id;
|
|
|
+
|
|
|
+CREATE SEQUENCE public.bookorder_ord_id_seq;
|
|
|
+
|
|
|
+CREATE TABLE public.BookOrder (
|
|
|
+ Ord_id INTEGER NOT NULL DEFAULT nextval('public.bookorder_ord_id_seq'),
|
|
|
+ Ord_date TIMESTAMP NOT NULL,
|
|
|
+ Com_id INTEGER NOT NULL,
|
|
|
+ CONSTRAINT bookorder_pk PRIMARY KEY (Ord_id)
|
|
|
+);
|
|
|
+COMMENT ON TABLE public.BookOrder IS 'List or ordered products';
|
|
|
+COMMENT ON COLUMN public.BookOrder.Ord_date IS 'The date of order creation';
|
|
|
+
|
|
|
+
|
|
|
+ALTER SEQUENCE public.bookorder_ord_id_seq OWNED BY public.BookOrder.Ord_id;
|
|
|
+
|
|
|
+CREATE SEQUENCE public.ordereditem_ori_id_seq;
|
|
|
+
|
|
|
+CREATE TABLE public.OrderedItem (
|
|
|
+ Ori_id INTEGER NOT NULL DEFAULT nextval('public.ordereditem_ori_id_seq'),
|
|
|
+ Ori_quantity INTEGER NOT NULL,
|
|
|
+ Ori_deliveryDueDate TIMESTAMP NOT NULL,
|
|
|
+ Pro_id INTEGER NOT NULL,
|
|
|
+ Ord_id INTEGER NOT NULL,
|
|
|
+ War_id INTEGER NOT NULL,
|
|
|
+ CONSTRAINT ordereditem_pk PRIMARY KEY (Ori_id)
|
|
|
+);
|
|
|
+COMMENT ON TABLE public.OrderedItem IS 'A line in an order, associated to a product. Should be delivered in the future.';
|
|
|
+COMMENT ON COLUMN public.OrderedItem.Ori_quantity IS 'In kilogrammes';
|
|
|
+COMMENT ON COLUMN public.OrderedItem.Ori_deliveryDueDate IS 'The initially planned delivery date';
|
|
|
+
|
|
|
+
|
|
|
+ALTER SEQUENCE public.ordereditem_ori_id_seq OWNED BY public.OrderedItem.Ori_id;
|
|
|
+
|
|
|
+CREATE TABLE public.OrderedItemMission (
|
|
|
+ Ori_id INTEGER NOT NULL,
|
|
|
+ Mis_id INTEGER NOT NULL,
|
|
|
+ CONSTRAINT ordereditemmission_pk PRIMARY KEY (Ori_id, Mis_id)
|
|
|
+);
|
|
|
+COMMENT ON TABLE public.OrderedItemMission IS 'Association table, an order item can be added in mission several times if the product was not found (ie : was missing) in the previous delivery.';
|
|
|
+
|
|
|
+
|
|
|
+CREATE SEQUENCE public.slip_sli_id_seq;
|
|
|
+
|
|
|
+CREATE TABLE public.Slip (
|
|
|
+ Sli_id INTEGER NOT NULL DEFAULT nextval('public.slip_sli_id_seq'),
|
|
|
+ Sli_deliveryDate TIMESTAMP NOT NULL,
|
|
|
+ Sli_signed BOOLEAN NOT NULL,
|
|
|
+ Ori_id INTEGER NOT NULL,
|
|
|
+ CONSTRAINT slip_pk PRIMARY KEY (Sli_id)
|
|
|
+);
|
|
|
+COMMENT ON TABLE public.Slip IS 'Created when an order item is delivered. Should be signed.';
|
|
|
+COMMENT ON COLUMN public.Slip.Sli_deliveryDate IS 'Effective delivery date';
|
|
|
+COMMENT ON COLUMN public.Slip.Sli_signed IS 'True if the physical paper slip has been signed.';
|
|
|
+
|
|
|
+
|
|
|
+ALTER SEQUENCE public.slip_sli_id_seq OWNED BY public.Slip.Sli_id;
|
|
|
+
|
|
|
+ALTER TABLE public.Mission ADD CONSTRAINT truck_mission_fk
|
|
|
+FOREIGN KEY (Tru_id)
|
|
|
+REFERENCES public.Truck (Tru_id)
|
|
|
+ON DELETE NO ACTION
|
|
|
+ON UPDATE NO ACTION
|
|
|
+NOT DEFERRABLE;
|
|
|
+
|
|
|
+ALTER TABLE public.Driver ADD CONSTRAINT truck_driver_fk
|
|
|
+FOREIGN KEY (Tru_id)
|
|
|
+REFERENCES public.Truck (Tru_id)
|
|
|
+ON DELETE NO ACTION
|
|
|
+ON UPDATE NO ACTION
|
|
|
+NOT DEFERRABLE;
|
|
|
+
|
|
|
+ALTER TABLE public.Mission ADD CONSTRAINT driver_mission_fk
|
|
|
+FOREIGN KEY (Dri_id)
|
|
|
+REFERENCES public.Driver (Dri_id)
|
|
|
+ON DELETE NO ACTION
|
|
|
+ON UPDATE NO ACTION
|
|
|
+NOT DEFERRABLE;
|
|
|
+
|
|
|
+ALTER TABLE public.Company ADD CONSTRAINT postaladdress_company_fk
|
|
|
+FOREIGN KEY (Add_id)
|
|
|
+REFERENCES public.PostalAddress (Add_id)
|
|
|
+ON DELETE NO ACTION
|
|
|
+ON UPDATE NO ACTION
|
|
|
+NOT DEFERRABLE;
|
|
|
+
|
|
|
+ALTER TABLE public.Warehouse ADD CONSTRAINT postaladdress_warehouse_fk
|
|
|
+FOREIGN KEY (Add_id)
|
|
|
+REFERENCES public.PostalAddress (Add_id)
|
|
|
+ON DELETE NO ACTION
|
|
|
+ON UPDATE NO ACTION
|
|
|
+NOT DEFERRABLE;
|
|
|
+
|
|
|
+ALTER TABLE public.LoadingPoint ADD CONSTRAINT postaladdress_loadingpoint_fk
|
|
|
+FOREIGN KEY (Add_id)
|
|
|
+REFERENCES public.PostalAddress (Add_id)
|
|
|
+ON DELETE NO ACTION
|
|
|
+ON UPDATE NO ACTION
|
|
|
+NOT DEFERRABLE;
|
|
|
+
|
|
|
+ALTER TABLE public.Mission ADD CONSTRAINT loadingpoint_mission_fk
|
|
|
+FOREIGN KEY (Lpt_id)
|
|
|
+REFERENCES public.LoadingPoint (Lpt_id)
|
|
|
+ON DELETE NO ACTION
|
|
|
+ON UPDATE NO ACTION
|
|
|
+NOT DEFERRABLE;
|
|
|
+
|
|
|
+ALTER TABLE public.OrderedItemMission ADD CONSTRAINT mission_ordereditemmission_fk
|
|
|
+FOREIGN KEY (Mis_id)
|
|
|
+REFERENCES public.Mission (Mis_id)
|
|
|
+ON DELETE NO ACTION
|
|
|
+ON UPDATE NO ACTION
|
|
|
+NOT DEFERRABLE;
|
|
|
+
|
|
|
+ALTER TABLE public.OrderedItem ADD CONSTRAINT product_ordereditem_fk
|
|
|
+FOREIGN KEY (Pro_id)
|
|
|
+REFERENCES public.Product (Pro_id)
|
|
|
+ON DELETE NO ACTION
|
|
|
+ON UPDATE NO ACTION
|
|
|
+NOT DEFERRABLE;
|
|
|
+
|
|
|
+ALTER TABLE public.BookOrder ADD CONSTRAINT company_bookorder_fk
|
|
|
+FOREIGN KEY (Com_id)
|
|
|
+REFERENCES public.Company (Com_id)
|
|
|
+ON DELETE NO ACTION
|
|
|
+ON UPDATE NO ACTION
|
|
|
+NOT DEFERRABLE;
|
|
|
+
|
|
|
+ALTER TABLE public.Warehouse ADD CONSTRAINT company_warehouse_fk
|
|
|
+FOREIGN KEY (Com_id)
|
|
|
+REFERENCES public.Company (Com_id)
|
|
|
+ON DELETE NO ACTION
|
|
|
+ON UPDATE NO ACTION
|
|
|
+NOT DEFERRABLE;
|
|
|
+
|
|
|
+ALTER TABLE public.OrderedItem ADD CONSTRAINT warehouse_ordereditem_fk
|
|
|
+FOREIGN KEY (War_id)
|
|
|
+REFERENCES public.Warehouse (War_id)
|
|
|
+ON DELETE NO ACTION
|
|
|
+ON UPDATE NO ACTION
|
|
|
+NOT DEFERRABLE;
|
|
|
+
|
|
|
+ALTER TABLE public.OrderedItem ADD CONSTRAINT bookorder_ordereditem_fk
|
|
|
+FOREIGN KEY (Ord_id)
|
|
|
+REFERENCES public.BookOrder (Ord_id)
|
|
|
+ON DELETE NO ACTION
|
|
|
+ON UPDATE NO ACTION
|
|
|
+NOT DEFERRABLE;
|
|
|
+
|
|
|
+ALTER TABLE public.Slip ADD CONSTRAINT ordereditem_slip_fk
|
|
|
+FOREIGN KEY (Ori_id)
|
|
|
+REFERENCES public.OrderedItem (Ori_id)
|
|
|
+ON DELETE NO ACTION
|
|
|
+ON UPDATE NO ACTION
|
|
|
+NOT DEFERRABLE;
|
|
|
+
|
|
|
+ALTER TABLE public.OrderedItemMission ADD CONSTRAINT ordereditem_ordereditemmission_fk
|
|
|
+FOREIGN KEY (Ori_id)
|
|
|
+REFERENCES public.OrderedItem (Ori_id)
|
|
|
+ON DELETE NO ACTION
|
|
|
+ON UPDATE NO ACTION
|
|
|
+NOT DEFERRABLE;
|