學習《MySQL必知必會》中所使用到的數據庫和數據表

創建表和插入數據的sql文件
鏈接: https://pan.baidu.com/s/137GAZV_5–CVOSsJqnOTrA
提取碼: hacw
我們可以把該數據庫看作是一個推銷商使用的訂單錄入系統,比如喜歡鞋子的朋友可以把他看作是一個AJ推銷商的錄入系統,喜歡手機的朋友可以把他看作是一個手機推銷商的錄入系統。一個市場上的供貨商都可以給推銷上供貨,推銷商向顧客直接銷售,這個數據庫要完成一下幾個任務

  1. 管理供貨商(一個推銷商使用多個供貨商的貨物)
  2. 管理產品目錄(只要產品種類豐富纔可以銷路更廣)
  3. 管理顧客列表(要用心對待每個客戶)
  4. 錄入顧客訂單(客戶訂單可以統計很多東西)
    根據這幾個任務,我們需要把作爲關係數據庫的緊密聯繫的6個表

六張表的UML圖

創建數據表的mysql文件

/* vendors表存儲銷售產品的供應商。每個供應商在這個表中有一個記
錄,供應商ID(vend_id)列用來匹配產品和供應商。*/
-- 表1
CREATE TABLE vendors
(
vend_id INT NOT NULL AUTO_INCREMENT,
vend_name CHAR(50) NOT NULL ,
vend_address CHAR(50) NULL ,
vend_city CHAR(50) NULL ,
vend_state CHAR(5) NULL ,
vend_zip CHAR(10) NULL ,
vend_country CHAR(50) NULL ,
PRIMARY KEY (vend_id)
) ENGINE=INNODB;

/*products表包含產品目錄,每行一個產品。每個產品有唯一的ID
(prod_id列),通過vend_id(供應商的唯一ID)關聯到它的供應商。*/
-- 表2
CREATE TABLE products
(
prod_id CHAR(10) NOT NULL,
vend_id INT NOT NULL ,
prod_name CHAR(255) NOT NULL ,
prod_price DECIMAL(8,2) NOT NULL ,
prod_desc TEXT NULL ,
PRIMARY KEY(prod_id)
) ENGINE=INNODB;
/*customers表存儲所有顧客的信息。每個顧客有唯一的ID(cust_id
列)。*/
-- 表3
CREATE TABLE customers
(
cust_id INT NOT NULL AUTO_INCREMENT,
cust_name CHAR(50) NOT NULL ,
cust_address CHAR(50) NULL ,
cust_city CHAR(50) NULL ,
cust_state CHAR(5) NULL ,
cust_zip CHAR(10) NULL ,
cust_country CHAR(50) NULL ,
cust_contact CHAR(50) NULL ,
cust_email CHAR(255) NULL ,
PRIMARY KEY (cust_id)
) ENGINE=INNODB;

/*orders表存儲顧客訂單(但不是訂單細節)。每個訂單唯一地編號
(order_num列)。訂單用cust_id列(它關聯到customer表的顧客唯一ID)
與相應的顧客關聯。*/
-- 表4
CREATE TABLE orders
(
order_num INT NOT NULL AUTO_INCREMENT,
order_date DATETIME NOT NULL ,
cust_id INT NOT NULL ,
PRIMARY KEY (order_num)
) ENGINE=INNODB;

/*orderitems表存儲每個訂單中的實際物品,每個訂單的每個物品佔
一行。對orders中的每一行,orderitems中有一行或多行。每個訂單物
品由訂單號加訂單物品(第一個物品、第二個物品等)唯一標識*/
-- 表5
CREATE TABLE orderitems
(
order_num INT NOT NULL ,
order_item INT NOT NULL ,
prod_id CHAR(10) NOT NULL ,
quantity INT NOT NULL ,
item_price DECIMAL(8,2) NOT NULL ,
PRIMARY KEY (order_num, order_item)
) ENGINE=INNODB;

/* productnotes表存儲與特定產品有關的註釋。並非所有產品都有相
關的註釋,而有的產品可能有許多相關的註釋。*/
-- 表6
CREATE TABLE productnotes
(
note_id INT NOT NULL AUTO_INCREMENT,
prod_id CHAR(10) NOT NULL,
note_date DATETIME NOT NULL,
note_text TEXT NULL ,
PRIMARY KEY(note_id),
FULLTEXT(note_text)
) ENGINE=MYISAM;

/*Define foreign keys*/

ALTER TABLE orderitems 
  ADD CONSTRAINT fk_orderitems_orders_1 FOREIGN KEY (order_num) REFERENCES orders (order_num) ;

ALTER TABLE orderitems 
  ADD CONSTRAINT fk_orderitems_products_1 FOREIGN KEY (prod_id) REFERENCES products (prod_id) ;

ALTER TABLE orders 
  ADD CONSTRAINT fk_orders_customers_1 FOREIGN KEY (cust_id) REFERENCES customers (cust_id) ;

ALTER TABLE products 
  ADD CONSTRAINT fk_products_vendors_1 FOREIGN KEY (vend_id) REFERENCES vendors (vend_id)

插入數據mysql代碼:

/* vendors表存儲銷售產品的供應商。每個供應商在這個表中有一個記
錄,供應商ID(vend_id)列用來匹配產品和供應商。*/
-- 表1
CREATE TABLE vendors
(
vend_id INT NOT NULL AUTO_INCREMENT,
vend_name CHAR(50) NOT NULL ,
vend_address CHAR(50) NULL ,
vend_city CHAR(50) NULL ,
vend_state CHAR(5) NULL ,
vend_zip CHAR(10) NULL ,
vend_country CHAR(50) NULL ,
PRIMARY KEY (vend_id)
) ENGINE=INNODB;

/*products表包含產品目錄,每行一個產品。每個產品有唯一的ID
(prod_id列),通過vend_id(供應商的唯一ID)關聯到它的供應商。*/
-- 表2
CREATE TABLE products
(
prod_id CHAR(10) NOT NULL,
vend_id INT NOT NULL ,
prod_name CHAR(255) NOT NULL ,
prod_price DECIMAL(8,2) NOT NULL ,
prod_desc TEXT NULL ,
PRIMARY KEY(prod_id)
) ENGINE=INNODB;
/*customers表存儲所有顧客的信息。每個顧客有唯一的ID(cust_id
列)。*/
-- 表3
CREATE TABLE customers
(
cust_id INT NOT NULL AUTO_INCREMENT,
cust_name CHAR(50) NOT NULL ,
cust_address CHAR(50) NULL ,
cust_city CHAR(50) NULL ,
cust_state CHAR(5) NULL ,
cust_zip CHAR(10) NULL ,
cust_country CHAR(50) NULL ,
cust_contact CHAR(50) NULL ,
cust_email CHAR(255) NULL ,
PRIMARY KEY (cust_id)
) ENGINE=INNODB;

/*orders表存儲顧客訂單(但不是訂單細節)。每個訂單唯一地編號
(order_num列)。訂單用cust_id列(它關聯到customer表的顧客唯一ID)
與相應的顧客關聯。*/
-- 表4
CREATE TABLE orders
(
order_num INT NOT NULL AUTO_INCREMENT,
order_date DATETIME NOT NULL ,
cust_id INT NOT NULL ,
PRIMARY KEY (order_num)
) ENGINE=INNODB;

/*orderitems表存儲每個訂單中的實際物品,每個訂單的每個物品佔
一行。對orders中的每一行,orderitems中有一行或多行。每個訂單物
品由訂單號加訂單物品(第一個物品、第二個物品等)唯一標識*/
-- 表5
CREATE TABLE orderitems
(
order_num INT NOT NULL ,
order_item INT NOT NULL ,
prod_id CHAR(10) NOT NULL ,
quantity INT NOT NULL ,
item_price DECIMAL(8,2) NOT NULL ,
PRIMARY KEY (order_num, order_item)
) ENGINE=INNODB;

/* productnotes表存儲與特定產品有關的註釋。並非所有產品都有相
關的註釋,而有的產品可能有許多相關的註釋。*/
-- 表6
CREATE TABLE productnotes
(
note_id INT NOT NULL AUTO_INCREMENT,
prod_id CHAR(10) NOT NULL,
note_date DATETIME NOT NULL,
note_text TEXT NULL ,
PRIMARY KEY(note_id),
FULLTEXT(note_text)
) ENGINE=MYISAM;

/*Define foreign keys*/

ALTER TABLE orderitems 
  ADD CONSTRAINT fk_orderitems_orders_1 FOREIGN KEY (order_num) REFERENCES orders (order_num) ;

ALTER TABLE orderitems 
  ADD CONSTRAINT fk_orderitems_products_1 FOREIGN KEY (prod_id) REFERENCES products (prod_id) ;

ALTER TABLE orders 
  ADD CONSTRAINT fk_orders_customers_1 FOREIGN KEY (cust_id) REFERENCES customers (cust_id) ;

ALTER TABLE products 
  ADD CONSTRAINT fk_products_vendors_1 FOREIGN KEY (vend_id) REFERENCES vendors (vend_id)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章