2024-10-15|閱讀時間 ‧ 約 0 分鐘

第三方金流串接 – 資料庫規劃

    ※ 架構設計

    raw-image

    ※ 資料庫規劃

    • 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,商品數量,商品價格}])

    ※ 訂單:產品的對應表

    • product_id
    • order_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, 商品數量, 商品價格}]」,表示訂單中的商品內容,預設為空。


    分享至
    成為作者繼續創作的動力吧!
    從 Google News 追蹤更多 vocus 的最新精選內容從 Google News 追蹤更多 vocus 的最新精選內容

    作者的相關文章

    奧莉薇走在成為後端工程師之路上 的其他內容

    你可能也想看

    發表回應

    成為會員 後即可發表留言
    © 2024 vocus All rights reserved.