blob: c064f396d9a161651d0006ae35739127f4c61bdc [file] [log] [blame]
drop table LINEITEM;
drop table ORDERS;
drop table VENDOR_PART;
drop table VENDOR;
drop table PART_DETAIL;
drop table PART;
/* Self-ref to identify Bill of Material (BOM)
* Compound PK
*/
create table PART (
PART_NUMBER VARCHAR(15) NOT NULL ,
REVISION NUMERIC(2) NOT NULL ,
DESCRIPTION VARCHAR(127) ,
REVISION_DATE DATE NOT NULL ,
BOM_PART_NUMBER VARCHAR(15) ,
BOM_REVISION NUMERIC(2) ,
PRIMARY KEY (PART_NUMBER, REVISION),
FOREIGN KEY (BOM_PART_NUMBER, BOM_REVISION) REFERENCES PART (PART_NUMBER, REVISION)
);
/* Bean will be mapped to 2 tables (PART and PART_DETAIL)
* BLOB column type
* CLOB column type */
create table PART_DETAIL (
PART_NUMBER VARCHAR(15) NOT NULL ,
REVISION NUMERIC(2) NOT NULL ,
SPECIFICATION CLOB ,
DRAWING BLOB ,
PRIMARY KEY (PART_NUMBER, REVISION)
);
/* PK can be mapped to a primitive PK field type */
create table VENDOR (
VENDOR_ID INTEGER PRIMARY KEY,
NAME VARCHAR(30) NOT NULL ,
ADDRESS VARCHAR(127) NOT NULL ,
CONTACT VARCHAR(127) NOT NULL ,
PHONE VARCHAR(30) NOT NULL
);
/* Can be used for unknown PK
* 1-1 to PART
* Compound FK
*/
create table VENDOR_PART (
VENDOR_PART_NUMBER NUMERIC(19) PRIMARY KEY,
DESCRIPTION VARCHAR(127) ,
PRICE DOUBLE PRECISION NOT NULL ,
VENDOR_ID INTEGER NOT NULL ,
PART_NUMBER VARCHAR(15) NOT NULL ,
PART_REVISION NUMERIC(2) NOT NULL ,
FOREIGN KEY (VENDOR_ID) REFERENCES VENDOR (VENDOR_ID),
FOREIGN KEY (PART_NUMBER, PART_REVISION) REFERENCES PART (PART_NUMBER, REVISION),
UNIQUE (PART_NUMBER, PART_REVISION)
);
create table ORDERS (
ORDER_ID INTEGER PRIMARY KEY,
STATUS CHAR(1) NOT NULL ,
LAST_UPDATE DATE NOT NULL ,
DISCOUNT NUMERIC(2) NOT NULL ,
SHIPMENT_INFO VARCHAR(127)
);
/* Overlapping PK-FK
* Uni-directional to VENDOR_PART */
create table LINEITEM (
ORDER_ID INTEGER NOT NULL ,
ITEM_ID NUMERIC(3) NOT NULL ,
QUANTITY NUMERIC(3) NOT NULL ,
VENDOR_PART_NUMBER NUMERIC(19) NOT NULL ,
FOREIGN KEY (ORDER_ID) REFERENCES ORDERS (ORDER_ID),
FOREIGN KEY (VENDOR_PART_NUMBER) REFERENCES VENDOR_PART (VENDOR_PART_NUMBER),
PRIMARY KEY (ORDER_ID, ITEM_ID)
);