You are not logged in Log in Join
You are here: Home » Members » MJ's corner on Zope » QuantumPythons » Seminar4 » DDLStatements

Log in
Name

Password

 
 

History for DDLStatements

??changed:
-
DDL statements

  From the worknotes:

    *This should have a create table definition for each table in your design.
    Make certain your DDL is an implementation of your ERD.  If a relationship 
    is mandatory, the foreign key must be "NOT NULL."  Please declare all 
    primary and foreign keys.  For each foreign key, indicate what should be 
    implemented upon deletion and updating of the row referenced in the parent 
    table.  This will be similar to the **ON DELETE CASCADES** and **ON UPDATE 
    RESTRICT** in chapter 4 in your text.*

  We'll produce this in plain text below.

  Produced SQL::

    CREATE TABLE CUSTOMER 
	(CUST_ID 	char(5) 	NOT NULL
	,CUST_NAME 	varchar(20) 	NOT NULL
	,CUST_INIT 	char(3)
	,CUST_TITLE	char(5)
	,CUST_ADD	varchar(50)
	,CUST_CITY	varchar(20)
	,CUST_STATE	varchar(20)
	,CUST_ZIP
	,CUST_AREA_CD	char (3)
	,CUST_PHONE	char(8)
	,PRIMARY KEY (CUST_ID));

    CREATE TABLE PAYMENT METHODS
	(PAY_METH_ID	CHAR(1)		NOT NULL
	,PAY_METHOD	CHAR(20)	NOT NULL
	,PAY_METH_LIM	NUMBER(5,2)
	PRIMARY KEY (PAY_METH_ID);

    CREATE TABLE VENDOR 
	(VEND_ID	CHAR(5)		NOT NULL
	,VEND_COMP_NAME	VARCHAR(20)	NOT NULL
	,VEND_ADDRS	VARCHAR(50)
	,VEND_CITY	VARCHAR(20)
	,VEND_STATE	VARCHAR(20)
	,VENDOR_ZIP
	,VEND_AREA_CD	CHAR(3)
	,VEND_PHONE	CHAR(8)
	,PRIMARY KEY (CAR_REG));

    CREATE TABLE CAR 
	(CAR_REG	CHAR(10) 	not null
	,CUST_ID 	CHAR(5) 	not null
	,CAR_LAST_SERV 	DATE
	,CAR_MILEAGE	INTEGER
	,PRIMARY KEY (CAR_REG)
	,FOREIGN KEY (CUST_ID) REFERENCES CUSTOMER
	,	ON DELETE RESTRICT
	,	ON UPDATE CASCADE);

    CREATE TABLE PART 
	(PART_ID	CHAR(5)		NOT NULL
	,VEND_ID	CHAR(5)		NOT NULL
	,PART_PRICE	CURRENCY
	,PART_MIN_STCK	SMALLINT
	,PRIMARY KEY (PART_ID)
	,FOREIGN KEY (VEND_ID) REFERENCES VENDOR
	,	ON DELETE RESTRICT
	,	ON UPDATE CASCADE);


    CREATE TABLE INVENTORY
	(INVENTORY_ID	CHAR(5)		NOT NULL
	,PART_ID	CHAR(5)		NOT NULL
	,VENDOR_ID	CHAR(5)		NOT NULL
	,INV_IN_STOCK	SMALLINT
	,PRIMARY KEY (INVENTORY_ID)
	,FOREIGN KEY (PART_ID) REFERENCES PART
	,	ON DELETE RESTRICT
	,	ON UPDATE CASCADE
	,FOREIGN KEY (VENDOR_ID) REFERENCES VENDOR
	,	ON DELETE RESTRICT
	,	ON UPDATE CASCADE);


    CREATE TABLE INVOICE 
	(INV_REF_NO	char(5) 	NOT NULL
	,CUST_ID	char(5) 	NOT NULL
	,INV_DATE 	date
	,INV_LAB_CHG	
	,PAY_METHOD	char(20)	NOT NULL
	,PRIMARY KEY (INV_REF_NO)
	,FOREIGN KEY (CUST_ID) REFERENCES CUSTOMER
	,	ON DELETE RESTRICT
	,	ON UPDATE CASCADE
	,FOREIGN KEY (PAY_METHOD) REFERENCES PAYMENT_METHODS
	,	ON DELETE RESTRICT
	,	ON UPDATE CASCADE);


    CREATE TABLE INVOICE LINES 
	(INV_REF_NO	CHAR(5)		NOT NULL
	,PART_ID	CHAR(5)		NOT NULL
	,INV_LIN_QUANT	INTEGER
	,INV_LIN_TOTAL	INTEGER
	,PRIMARY KEY (INV_REF_NO)
	,FOREIGN KEY (PART_ID) REFERENCES PART
	,	ON DELETE RESTRICT
	,	ON UPDATE CASCADE);



    CREATE TABLE SUPPLIES 
	(PART_ID	CHAR(5)		NOT NULL
	,VENDOR_ID	CHAR(5)		NOT NULL
	,COST		CURRENCY
	,PRIMARY KEY (PART_ID)REFERENCES PART
	,	ON DELETE RESTRICT
	,	ON UPDATE CASCADE
	,PRIMARY KEY (VENDOR_ID)REFERENCES INVENTORY
	,	ON DELETE RESTRICT
	,	ON UPDATE CASCADE);




<hr solid id=comments_below>


stephen_jackson (Sep 10, 2001 2:04 pm; Comment #1)  --
 I will post first draft tuesday using latest data dictionary
 
stephen_jackson (Sep 11, 2001 5:11 am; Comment #2)  --
 John, please note I had a problem with the foreign key in INVOICE which references PAYMENT_METHODS the column names didnt match. Look at my solution. Also I added some data types on the invoice lines
 

mj (Sep 12, 2001 2:58 pm; Comment #3)  --
 I am missing ZIP code and labourcharge types; US ZIP codes are always 5 digits (so char(5) is appropriate) and labour charge should be a currency type. Also, the maximum spending limit of a payment type should be a currency to be consistent.
 
mj (Sep 12, 2001 3:02 pm; Comment #4)  --
 Shouldn't we be using singular entity and table names? 'INVENTORY LINE', 'SUPPLY'
 
mj (Sep 12, 2001 3:13 pm; Comment #5)  --
 Shouldn't that be 'SUPLIES'; it being a composite entity?
 
mj (Sep 12, 2001 3:13 pm; Comment #6)  --
 Shouldn't that be 'SUPLIES'; it being a composite entity?