※ 架構設計
※ 資料庫規劃
- id:流水號,唯一代替產品名稱的辨識代碼,AUTO_INCREMENT。
- name:VARCHAR(255),NOT NULL。
- amount:INTEGER(整數),UNSIGNED(不能是負數)。
- description:TEXT,描述產品。
- pre_order:作為金流交易賣出物品時的預扣額度。
※ 資料庫規劃轉化為實際操作
- 在src資料夾內建立一個database的資料夾:
- 在database資料夾中建立products.sql檔案,寫進預先規劃的內容:
CREATE TABLE `products` (
`id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
`name` varchar(255) NOT NULL DEFAULT '',
`amount` int UNSIGNED NOT NULL DEFAULT 0,
`description` text,
`pre_order` int UNSIGNED NOT NULL DEFAULT 0,
);
這段 SQL 語句是建立一個名為 products
的資料表,並定義其結構。以下是各欄位的詳細說明:
- id:整數型欄位,無符號 (UNSIGNED),不能為空 (NOT NULL),自動遞增 (AUTO_INCREMENT),並設置為主鍵 (PRIMARY KEY)。
- name:變長字元串 (VARCHAR),最大長度為 255 字元,不能為空,預設值為空字串 ('')。
- amount:無符號整數 (UNSIGNED),不能為空,預設值為 0。
- description:文字型欄位 (TEXT),用於存儲產品描述。
- pre_order:無符號整數 (UNSIGNED),不能為空,預設值為 0。
※ 打開MySQL Workbench新增products 表格:
刪除已有表格:
DROP TABLE IF EXISTS `products`;
建立新的表格:
CREATE TABLE `products` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
`name` VARCHAR(255) NOT NULL DEFAULT '',
`amount` INT UNSIGNED NOT NULL DEFAULT 0,
`description` TEXT,
`pre_order` INT UNSIGNED NOT NULL DEFAULT 0
);
※ 訂單表規劃
- id:VARCHAR(20) NOT NULL PRIMARY KEY。(大部分金流的 API,它們的 ID 都要求是一個亂數的字串)
- total:INT UNSIGNED NOT NULL DEFAULT 0。
- created_at:DATETIME NOT NULL DEFAULT NOW()。
- updated_at:DATETIME NOT NULL DEFAULT NOW()。
- payment_provider:ENUM('PAYPAL', 'ECPAY')。
- payment_way:ENUM('CSV', 'CC', 'ATM', 'PAYPAL')。
- status:ENUM('WAITING', 'SUCCESS', 'FAILED', 'CANCEL')。
- contents:JSON DEFAULT NULL (商品內容[{商品ID,商品數量,商品價格}])
※ 訂單:產品的對應表
※ 訂單表轉化為實際操作
- 在database資料夾內建立orders.sql檔案,寫進預先規劃的內容:
CREATE TABLE `orders` (
`id` varchar(20) NOT NULL PRIMARY KEY COMMENT '大部分金流的API它們的ID都要求是一個亂數的字串',
`total` int unsigned NOT NULL DEFAULT 0,
`created_at` datetime NOT NULL DEFAULT now(),
`updated_at` datetime NOT NULL DEFAULT now(),
`payment_provider` enum('PAYPAL', 'ECPAY'),
`payment_way` enum('CSV', 'CC', 'ATM', 'PAYPAL'),
`status` enum('WAITING', 'SUCCESS', 'FAILED', 'CANCEL'),
`contents` JSON DEFAULT NULL COMMENT '商品內容 [{商品ID, 商品數量, 商品價格}]'
);
這段 SQL 語法的目的是在資料庫中創建一個名為 orders
的表格,並定義其結構。具體內容如下:
- id:VARCHAR(20) NOT NULL PRIMARY KEY,並帶有註解「大部分金流的 API 它們的 ID 都要求是一個亂數的字串」,表示每個訂單的唯一識別碼。
- total:INT UNSIGNED NOT NULL DEFAULT 0,表示訂單的總金額,預設為 0。
- created_at:DATETIME NOT NULL DEFAULT NOW(),表示訂單創建的時間,預設為當前時間。
- updated_at:DATETIME NOT NULL DEFAULT NOW(),表示訂單最後更新的時間,預設為當前時間。
- payment_provider:ENUM('PAYPAL', 'ECPAY'),表示支付提供商,可選擇 PAYPAL 或 ECPAY。
- payment_way:ENUM('CSV', 'CC', 'ATM', 'PAYPAL'),表示支付方式,可選擇 CSV、信用卡、ATM 或 PAYPAL。
- status:ENUM('WAITING', 'SUCCESS', 'FAILED', 'CANCEL'),表示訂單狀態,可選擇等待、成功、失敗或取消。
- contents:JSON DEFAULT NULL,並帶有註解「商品內容 [{商品ID, 商品數量, 商品價格}]」,表示訂單中的商品內容,預設為空。