一個進銷存資料庫設計的例子
CREATE TABLE user(
User_Id varchar(6),
User_Pwd varchar(8)
NULL,
Again_Pwd varchar(8) NULL,
Bel_Group varchar(3) NULL,
Div_Type varchar(1) NULL,
User_Auth varchar(1) NULL,
Auth_Type varchar(1) NULL,
User_Status varchar(1) NULL,
Create_User varchar(6) NULL,
Create_Date varchar(7) NULL,
Create_Time varchar(6) NULL,
Appr_User varchar(6) NULL,
Appr_Date varchar(7) NULL,
Appr_Time varchar(6) NULL,
Pwd_Date
varchar(7) NULL,
Err_Count float NULL,
Use_eJCIC varchar(1)
NULL
)
CREATE TABLE Supplier /*供應商表*/
(
Supplier_ID
int IDENTITY(1,1) NOT NULL, /* 供應商編號 ,主鍵 */
Name
varchar(250) NOT NULL, /* 供應商名稱 */
Address
varchar(250) NOT NULL, /* 地址 */
Phone
varchar(25) NULL, /* 電話 */
Fax
varchar(25) NULL, /* 傳真 */
PostalCode
varchar(10) NULL, /* 郵編 */
ConstactPerson
varchar(20) NULL /* 聯絡人 */
)
CREATE TABLE Customer /* 客戶表*/
(
Customer_ID int
IDENTITY(1,1) NOT NULL, /* 客戶編號,主鍵*/
Name
varchar(250) NOT NULL, /* 客戶名稱 */
Address
varchar(250) NOT NULL, /* 地址 */
Phone
varchar(25) NULL, /* 電話 */
Fax
varchar(25) NULL, /* 傳真 */
PostalCode
varchar(10) NULL, /* 郵編 */
ConstactPerson
varchar(20) NULL /* 聯絡人 */
)
CREATE TABLE Dept /* 部門表 */
(
Dept_ID int
IDENTITY(1,1) NOT NULL, /* 部門編號,主鍵 */
Name
varchar(30) NOT NULL, /* 名稱 */
Remark
varchar(250) NOT NULL/* 描述,備註 */
)
CREATE TABLE Dept_Supplier /* 部門--供應商表*/
(
Dept_ID
int NOT NULL, /* 部門編號,主鍵 , 外來鍵( 參照 DEPT 表 )*/
Supplier_ID int NOT NULL /* 供應商編號 ,主鍵,外來鍵(
參照 SUPPLIER 表) */
)
CREATE TABLE Dept_Customer /* 部門--客戶表*/
(
Dept_ID
int NOT NULL, /* 部門編號,主鍵 , 外來鍵( 參照 DEPT 表 )*/
Customer_ID int NOT NULL /* 客戶編號,主鍵, 外來鍵( 參照
SUPPLIER 表) */
)
CREATE TABLE StoreHouse /* 倉庫表 */
(
StoreHouse_ID int
IDENTITY(1,1) NOT NULL, /* 倉庫編號,主鍵 */
Address
varchar(250) NOT NULL, /* 地址 */
Phone
varchar(25) NULL, /* 電話 */
Employee_ID
INT NOT NULL, /* 倉庫保管 ,外來鍵 ( 參照 EMPLOYEE 表 ) */
CreateDate datetime NULL /* 倉庫成立時間 */
)
CREATE TABLE ProductClass /* 商品總分類表 */
(
ProductClass_ID
int IDENTITY(1,1) NOT NULL, /* 商品總分類編號, 主鍵 */
Name varchar(30) NOT NULL, /* 商品分類名稱 */
Employee_ID INT NOT NULL, /* 建分類人 ,外來鍵 ( 參照
EMPLOYEE 表 )*/
CreateDate datetime NULL,
/* 建分類時間 */
Remark varchar(250) NULL,
/* 描述,備註 */
)
CREATE TABLE ProductList /* 商品細分類表 */
(
ProductClass_ID
INT NOT NULL, /* 商品總分類編號, 外來鍵 ( 參照PRODUCTCLASS 表 )
*/
ProductList_ID int IDENTITY(1,1) NOT NULL, /*
商品細分類編號,主鍵 */
Name varchar(30) NOT NULL,
/* 商品名稱 */
Employee_ID INT NOT NULL, /*
建分類人,外來鍵 ( 參照 EMPLOYEE 表 )*/
CreateDate
datetime NULL, /* 建分類時間 */
Remark
varchar(250) NULL, /* 描述 ,備註 */
)
CREATE TABLE ProductSpec /* 商品規格表 */
(
ProductSpec_ID INT
IDENTITY(1,1) NOT NULL, /* 商品規格編號,主鍵 */
Name
varchar(30) NOT NULL, /* 商品規格名稱 */
Employee_ID
INT NOT NULL, /* 操作員 ,外來鍵 ( 參照 EMPLOYEE 表 )*/
CreateDate datetime NULL, /* 建立時間 */
Remark varchar(250) NULL /* 描述,備註 */
)
CREATE
TABLE ProductUnit /* 商品計量單位表 */
(
ProductUnit_ID INT
IDENTITY(1,1) NOT NULL, /* 計量單位編號 ,主鍵 */
Name
varchar(30) NOT NULL, /* 計量單位名稱 */
Employee_ID
INT NOT NULL, /* 操作員 ,外來鍵 ( 參照 EMPLOYEE 表 )*/
CreateDate datetime NULL, /* 建立時間 */
Remark varchar(250) NULL /* 描述,備註 */
)
CREATE
TABLE Product /* 商品目錄表 */
(
ProductList_ID
int NOT NULL, /* 商品細分類編號, 外來鍵 ( 參照 PRODUCTLIST 表 )
*/
Product_ID INT IDENTITY(1,1) NOT NULL, /* 商品名稱編號,
主鍵 */
Name varchar(30) NOT NULL, /* 商品名稱
*/
ProductSpec_ID INT NOT NULL, /* 商品規格, 外來鍵
( 參照 PRODUCTSPEC 表 ) */
ProductUnit_ID INT
NOT NULL, /* 計量單位, 外來鍵 ( 參照 PRODUCTUNIT 表 ) */
Price
MONEY NULL, /* 參考價格 */
Employee_ID
INT NOT NULL, /* 操作員, 外來鍵 ( 參照 EMPLOYEE 表 )*/
CreateDate datetime NULL, /* 建立時間 */
Remark varchar(250) NULL /* 描述,備註 */
)
CREATE TABLE Product_Supplier /* 商品--供應商表 */
(
Product_ID INT NOT NULL, /* 商品名稱編號,主鍵 , 外來鍵(
參照 PRODUCT 表 )*/
Supplier_ID INT NOT
NULL /* 供應商編號 , 主鍵, 外來鍵( 參照 SUPPLIER 表) */
)
CREATE TABLE Employee /* 員工表 */
(
Employee_ID INT
IDENTITY(1,1) NOT NULL, /* 員工編號 */
Dept_ID
INT NOT NULL, /* 所屬部門編號 */
Name
varchar(30) NOT NULL, /* 姓名 */
Duty
varchar(20) NOT NULL, /* 職務 */
Gender
varchar(6) NOT NULL, /* 性別 */
BirthDate
datetime NOT NULL, /* 出生日期 */
HireDate
datetime NULL, /* 合同簽訂 日期 */
MatureDate
datetime NULL, /* 合同到期日 */
IdentityCard
varchar(20) NULL, /* 身份證號 */
Address
varchar(250) NULL, /* 住址 */
Phone
varchar(25) NULL, /* 電話 */
Email
varchar(30) NULL /* E_MAIL */
)
/*-///////////////////////////////////////////////////////////////////////////////////////-*/
CREATE TABLE BuyOrder /* 進貨合同 */
(
BuyOrder_ID INT
IDENTITY(1,1) NOT NULL, /* 進貨合同編號 , 主鍵 */
WriteDate
datetime NOT NULL, /* 合同簽訂日期 */
InsureDate
datetime NOT NULL, /* 合同生效日期 */
EndDate
datetime NOT NULL, /* 合同到期日期 */
Dept_ID
INT NOT NULL, /* 簽訂部門, 外來鍵 ( 參照 DEPT 表 ) */
Supplier_ID INT NOT NULL, /* 供應商, 外來鍵 ( 參照
SUPPLIER 表 ) */
Employee_ID INT NOT NULL
/* 合同主要負責人, 外來鍵 ( 參照 EMPLOYEE 表) */
)
CREATE TABLE BuyOrder_Detail
/* 進貨合同明細表 */
(
BuyOrder_ID INT NOT
NULL, /* 進貨合同編號,主鍵, 外來鍵 ( 參照 BUYORDER 表 ) */
Product_ID
INT NOT NULL, /* 所進商品編號,主鍵, 外來鍵 (參照 PRODUCT 表 ) */
Quantity INT NOT NULL, /* 商品數量 */
Price money NOT NULL /* 商品進價 */
)
CREATE TABLE EnterStock /* 入庫單表 */
(
EnterStock_ID
INT IDENTITY(1,1) NOT NULL, /* 入庫單編號 , 主鍵 */
EnterDate
datetime NOT NULL, /* 入庫時間 */
Dept_ID
INT NOT NULL, /* 入庫部門 ,外來鍵 ( 參照 DEPT 表 )*/
StoreHouse_ID INT NOT NULL, /* 所入倉庫 ,外來鍵 ( 參照
STOREHOUSE 表)*/
Employee_ID INT NOT NULL
/* 入庫人 , 外來鍵 ( 參照 EMPLOYEE 表)*/
/*需新增 倉庫保管員如何來驗證入庫單 ?? */
)
CREATE TABLE EnterStock_Detail /* 入庫單明細 */
(
EnterStock_ID INT NOT NULL, /* 入庫單編號 , 主鍵, 外來鍵 (參照
ENTERSTOCK 表 )*/
Product_ID INT NOT
NULL, /* 此種商品編號,主鍵, 外來鍵 (參照 PRODUCT 表 ) */
Quantity
int NOT NULL, /* 此種商品數量 */
Price
money NULL, /* 此種商品參考價格 */
HaveInvoice
bit not null, /* 此種商品有沒有開發票 ( 預設為 0 , 有沒有開票 )*/
InvoiceNum varchar(30) NULL /* 發票號 */
)
CREATE TABLE BackStock /* 退庫單表 */
(
BackStock_ID INT
IDENTITY(1,1) NOT NULL, /* 退庫單編號 , 主鍵 */
BackDate
datetime NOT NULL, /* 退庫時間 */
Dept_ID
INT NOT NULL, /* 退庫部門 , 外來鍵 ( 參照 DEPT 表 )*/
StoreHouse_ID INT NOT NULL, /* 所退入倉庫 ,外來鍵 ( 參照
STOREHOUSE 表)*/
Employee_ID INT NOT NULL,
/* 退庫人 , 外來鍵 ( 參照 EMPLOYEE 表)*/
Remark
varchar(250) NULL /* 退庫原因 */
)
CREATE TABLE BackStock_Detail /* 退庫單明細表 */
(
BackStock_ID INT NOT NULL, /* 退庫單編號 , 主鍵, 外來鍵 (參照
BACKSTOCK 表 )*/
Product_ID INT NOT
NULL, /* 所退商品編號,主鍵, 外來鍵 (參照 PRODUCT 表 ) */
Quantity
int NOT NULL, /* 退入數量 */
Price
money NULL /* 參考價格 */
)
CREATE TABLE LeaveStock /* 出庫單表 */
(
LeaveStock_ID INT
IDENTITY(1,1) NOT NULL, /* 出庫單編號 , 主鍵, 外來鍵 (參照 LEAVESTOCK 表 )*/
LeaveDate datetime NOT NULL, /* 出庫時間 */
Dept_ID INT NOT NULL, /* 出庫部門 , 外來鍵 ( 參照
DEPT 表 )*/
StoreHouse_ID INT NOT NULL, /*
所出倉庫 ,外來鍵 ( 參照 STOREHOUSE 表)*/
ToStoreHouse_ID
INT NOT NULL, /* 所入倉庫 ,外來鍵 ( 參照 STOREHOUSE 表)*/
Employee_ID INT NOT NULL /* 出庫人 , 外來鍵 ( 參照
EMPLOYEE 表)*/
/* 倉庫保管員如何來驗證出庫單 ?? */
)
CREATE TABLE LeaveStock_Detail /* 出庫單明細表 */
(
LeaveStock_ID INT NOT NULL, /* 出庫單編號 , 主鍵, 外來鍵
(參照 BACKSTOCK 表 )*/
Product_ID INT NOT
NULL, /* 所出商品編號,主鍵, 外來鍵 (參照 PRODUCT 表 ) */
Quantity
int NOT NULL, /* 出庫數量 */
Price
money NULL /* 出庫價格 */
)
CREATE TABLE BackSale /* 退貨單表 */
(
BackSale_ID INT
IDENTITY(1,1) NOT NULL, /* 退貨單編號 , 主鍵 */
BackDate
datetime NOT NULL, /* 退貨日期 */
Dept_ID
INT NOT NULL, /* 退貨部門 , 外來鍵 ( 參照 DEPT 表 )*/
StoreHouse_ID INT NOT NULL, /* 退入倉庫 , 外來鍵 ( 參照
STOREHOUSE 表)*/
Employee_ID INT NOT NULL,
/* 退貨人 , 外來鍵 ( 參照 EMPLOYEE 表)*/
Remark
varchar(250) NULL /* 退貨原因 */
)
CREATE TABLE BackSale_Detail /* 退貨單明細表 */
(
BackSale_ID INT NOT NULL, /* 退貨單編號 , 主鍵, 外來鍵
(參照 BACKSTOCK 表 )*/
Product_ID INT NOT
NULL, /* 所退商品編號,主鍵, 外來鍵 (參照 PRODUCT 表 ) */
Quantity
int NOT NULL, /* 退貨數量 */
Price
money NULL /* 價格 */
)
CREATE TABLE SaleOrder /* 銷售合同 */
(
SaleOrder_ID
INT IDENTITY(1,1) NOT NULL, /* 合同編號 , 主鍵 */
WriteDate
datetime NOT NULL, /* 合同簽訂日期 */
InsureDate
datetime NOT NULL, /* 合同生效日期 */
EndDate
datetime NOT NULL, /* 合同到期日期 */
Dept_ID
INT NOT NULL, /* 簽訂部門, 外來鍵 ( 參照 DEPT 表 ) */
Customer_ID INT NOT NULL, /* 客戶編號, 外來鍵 ( 參照
CUSTOMER 表 ) */
Employee_ID INT NOT NULL
/* 合同主要負責人, 外來鍵 ( 參照 EMPLOYEE 表) */
)
CREATE TABLE
SaleOrder_Detail /* 銷售合同明細表 */
(
SaleOrder_ID
INT NOT NULL, /* 銷售合同編號,主鍵, 外來鍵 ( 參照 BUYORDER 表 ) */
Product_ID INT NOT NULL, /* 銷售商品編號,主鍵, 外來鍵
(參照 PRODUCT 表 ) */
Quantity int not
null, /* 商品數量 */
Price money
null /* 商品進價 */
)
CREATE TABLE Buy /* 進貨表 ( 驗貨表 ) */
(
Buy_ID
INT IDENTITY(1,1) NOT NULL, /* 進貨編號 , 主鍵 */
ComeDate datetime NOT NULL, /* 進貨日期 */
Dept_ID INT NOT NULL, /* 進貨部門, 外來鍵 ( 參照
DEPT 表 ) */
Employee_ID INT NOT NULL
/* 驗貨人, 外來鍵 ( 參照 EMPLOYEE 表)*/
)
CREATE TABLE Buy_Detail /* 進貨表明細 ( 驗貨表 ) */
(
Buy_ID INT NOT NULL, /* 進貨編號,主鍵, 外來鍵 ( 參照
BUY 表 ) */
Product_ID INT NOT NULL, /*
商品編號,主鍵, 外來鍵 ( 參照 PRODUCT 表 ) */
BuyOrder_ID
INT NULL, /* 採購合同, 外來鍵 ( 參照 BUYORDER 表 ) */
Quantity int not null, /* 數量 */
Price money null /* 價格 */
/* BUYORDER_ID 為 NULL 時, 為現金進貨 */
)
CREATE TABLE Sale /* 銷售 表 */
(
Sale_ID INT
IDENTITY(1,1) NOT NULL, /* 銷售 編號 */
SaleDate
datetime not null, /* 銷售 日期 */
Dept_ID
INT NOT NULL, /* 銷售部門, 外來鍵 ( 參照 DEPT 表 ) */
Employee_ID INT NOT NULL /* 售貨人, 外來鍵 ( 參照
EMPLOYEE 表)*/
)
CREATE TABLE Sale_Detail /* 銷售明細 ( 驗貨表 ) */
(
Sale_ID INT NOT NULL, /* 銷售編號,主鍵, 外來鍵 ( 參照
SALE 表 ) */
Product_ID INT NOT NULL,
/* 商品編號,主鍵, 外來鍵 ( 參照 PRODUCT 表 ) */
SaleOrder_ID
INT NULL, /* 銷售合同, 外來鍵 ( 參照 SALEORDER 表 ) */
Quantity int not null, /* 數量 */
Price money not null, /* 價格 */
Discount int null /* 折扣 */
/* SALEORDER_ID 為 NULL 時, 為現金銷售 */
)
CREATE TABLE StockPile /* 庫存表 */
(
StockPile_ID INT
IDENTITY(1,1) NOT NULL, /* 庫存編號 , 主鍵 */
Dept_ID
INT NOT NULL, /* 商品所屬部門, 外來鍵 ( 參照 DEPT 表 ) */
StoreHouse_ID INT NOT NULL, /* 所在倉庫, 外來鍵 (
參照 SOTREHOUSE 表 ) */
Product_ID INT
NOT NULL, /* 商品編號, 外來鍵 ( 參照 PRODUCT 表 ) */
FirstEnterDate
datetime not null, /* 此種商品第一次入庫時間 */
LastLeaveDate datetime null, /* 此種商品最後一次出庫時間 */
Quantity int not null, /* 所存數量 */
Price money not null /* 加權價 */
/*
LASTLEAVEDATE 為NULL 時,此種商品從來沒有 賣過 */
)