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

更新於 發佈於 閱讀時間約 8 分鐘

※ 架構設計:

raw-image


※ 資料庫規劃 — 產品表:

  • id:流水號,唯一代替產品名稱的辨識代碼,AUTO_INCREMENT。
  • name:VARCHAR(255),NOT NULL。
  • amount:INTEGER(整數),UNSIGNED(不能是負數)。
  • description:TEXT,描述產品。
  • pre_order:作為金流交易賣出物品時的預扣額度。

※ 資料庫中建立產品資料庫:

  • 在src資料夾內建立一個database的資料夾:
raw-image
  • 在database資料夾中建立products.sql檔案:
raw-image
  • 在 MySQL 中建立名為 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,
`price`int UNSIGNED NOT NULL DEFAULT 0
);

程式碼說明:

  • CREATE TABLE products:這句命令表示創建一個名為 products 的資料表。
  • id:整數型欄位,不允許負數 (UNSIGNED),不能為空 (NOT NULL),自動遞增 (AUTO_INCREMENT),並設置為主鍵 (PRIMARY KEY)。
  • name:變長字元串 (VARCHAR),最大長度為 255 字元,不能為空,預設值為空字串 ('')。
  • amount:整數 ,不允許負數(UNSIGNED),不能為空,預設值為 0。
  • description:文字型欄位 (TEXT),用於存儲產品描述。
  • pre_order:整數 ,不允許負數(UNSIGNED),不能為空,預設值為 0。

※ 打開MySQL Workbench新增products 表格

專案要和資料庫連線

raw-image


刪除已有表格

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
);


raw-image


新增price欄位

ALTER TABLE `products` ADD COLUMN `price` int UNSIGNED NOT NULL DEFAULT 0;
raw-image
raw-image


※ 資料庫規劃 — 訂單表:

raw-image


  • 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檔案:
raw-image
  • 在 MySQL 中建立名為orders 的資料表內容:
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('CVS', 'CC', 'ATM', 'PAYPAL'),
`status` enum('WAITING', 'SUCCESS', 'FAILED', 'CANCEL'),
`contents` JSON DEFAULT NULL COMMENT '商品內容 [{商品ID, 商品數量, 商品價格}]'
);

程式碼說明:

  • CREATE TABLE orders:這句命令表示創建一個名為 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。enum(枚舉型別):通常用於表示相關的值集合。
  • payment_way:ENUM('CVS', 'CC', 'ATM', 'PAYPAL'),表示支付方式,可選擇 CVS、信用卡、ATM 或 PAYPAL。
  • status:ENUM('WAITING', 'SUCCESS', 'FAILED', 'CANCEL'),表示訂單狀態,可選擇等待、成功、失敗或取消。
  • contents:JSON DEFAULT NULL,並帶有註解「商品內容 [{商品ID, 商品數量, 商品價格}]」,表示訂單中的商品內容,預設為空。
raw-image


全端網頁開發專業知識分享
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
※ 下載Typescript 建立 TypeScript 和 Express 的基本目錄結構和必要配置。 npm install -g typescript-express-generator 建立模板引擎: ts-express --view=ejs server 安裝node_m
※ 必備開發環境: Node.Js環境。 Npm或yarn套件管理工具。 Docker倉庫套件:可以快速建立MySQL的資料庫。 下載 Docker Desktop:Docker Desktop for Windows。 ※ Docker快速建立MySQL資料庫,使用步驟: 準備Dock
※ 開發第三方金流串接使用工具: Typescript。 MySQL。 ※ 開發第三方金流串接使用技術: 基礎的docker使用方式。 用Typescript開發Node.JS的金流服務伺服器。 前端框架VueJs。 ※ 常見第三方金流平台介紹: PayPal: 特色: 全球最大
※ 具備三項工具: 編輯器 終端機 瀏覽器 ※ 步驟一:建立資料夾 mkdir mongodb-demo cd mongodb-demo code . ※ 步驟二:初始化,建立package.json npm init -y ※ 步驟三:安裝網頁伺服器 – Express 因為
※ Mongoose官網 ※ 認識Mongoose Mongoose 是提供給 Node.js 使用的 MongoDB ODM。透過 Mongoose,我們可以用物件導向語法,以更直覺的方式操作 MongoDB 資料庫。 ※ Mongoose安裝 ※ 建立資料夾: mkdir mo
※建置 MongoDB 資料庫,可以有兩種方式: 上 MongoDB 官網,把 MongoDB 的軟體下載下來,在本地安裝資料庫。 使用 MongoDB Atlas,這是 MongoDB 官方提供的全球雲端文件資料庫服務。 兩者的功能和操作上是相同的,在本地安裝與啟動資料庫會有連線速度上的優勢
※ 下載Typescript 建立 TypeScript 和 Express 的基本目錄結構和必要配置。 npm install -g typescript-express-generator 建立模板引擎: ts-express --view=ejs server 安裝node_m
※ 必備開發環境: Node.Js環境。 Npm或yarn套件管理工具。 Docker倉庫套件:可以快速建立MySQL的資料庫。 下載 Docker Desktop:Docker Desktop for Windows。 ※ Docker快速建立MySQL資料庫,使用步驟: 準備Dock
※ 開發第三方金流串接使用工具: Typescript。 MySQL。 ※ 開發第三方金流串接使用技術: 基礎的docker使用方式。 用Typescript開發Node.JS的金流服務伺服器。 前端框架VueJs。 ※ 常見第三方金流平台介紹: PayPal: 特色: 全球最大
※ 具備三項工具: 編輯器 終端機 瀏覽器 ※ 步驟一:建立資料夾 mkdir mongodb-demo cd mongodb-demo code . ※ 步驟二:初始化,建立package.json npm init -y ※ 步驟三:安裝網頁伺服器 – Express 因為
※ Mongoose官網 ※ 認識Mongoose Mongoose 是提供給 Node.js 使用的 MongoDB ODM。透過 Mongoose,我們可以用物件導向語法,以更直覺的方式操作 MongoDB 資料庫。 ※ Mongoose安裝 ※ 建立資料夾: mkdir mo
※建置 MongoDB 資料庫,可以有兩種方式: 上 MongoDB 官網,把 MongoDB 的軟體下載下來,在本地安裝資料庫。 使用 MongoDB Atlas,這是 MongoDB 官方提供的全球雲端文件資料庫服務。 兩者的功能和操作上是相同的,在本地安裝與啟動資料庫會有連線速度上的優勢
你可能也想看
Google News 追蹤
Thumbnail
/ 大家現在出門買東西還會帶錢包嗎 鴨鴨發現自己好像快一個禮拜沒帶錢包出門 還是可以天天買滿買好回家(? 因此為了記錄手機消費跟各種紅利優惠 鴨鴨都會特別注意銀行的App好不好用! 像是介面設計就是會很在意的地方 很多銀行通常會為了要滿足不同客群 會推出很多App讓使用者下載 每次
Thumbnail
為什麼會有Schema Registry的出現? 因為Kafka的零拷貝原則, 也就是kafka本身並不會去碰觸到訊息也不進行資料驗證, 而是bypass的傳送, 預設都以位元組來傳輸資料會比較有效率, 但位元組誰看得懂啊...。 加上Kafka的特性是生產者與消費者並不能直接溝通, 因
Thumbnail
到存放虛擬機的磁碟處\點選想要註冊的機器\註冊機器(登錄虛擬機器)
Thumbnail
題目敘述 題目會給我們一組定義好的界面和需求,要求我們設計一個資料結構,可以滿足平均O(1)的插入元素、刪除元素、隨機取得元素的操作。 RandomizedSet() 類別建構子 bool insert(int val) 插入元素的function界面 bool remove(int val
Thumbnail
Accept:用戶端能夠接收的內容類型。 Accept: text/plain, text/html Accept-Charset:瀏覽器可以接受的字元編碼集。 Accept-Charset: utf8 Accept-Encoding:指定瀏覽器可以支援的web伺服器返回內容壓縮編碼
Thumbnail
/ 大家現在出門買東西還會帶錢包嗎 鴨鴨發現自己好像快一個禮拜沒帶錢包出門 還是可以天天買滿買好回家(? 因此為了記錄手機消費跟各種紅利優惠 鴨鴨都會特別注意銀行的App好不好用! 像是介面設計就是會很在意的地方 很多銀行通常會為了要滿足不同客群 會推出很多App讓使用者下載 每次
Thumbnail
為什麼會有Schema Registry的出現? 因為Kafka的零拷貝原則, 也就是kafka本身並不會去碰觸到訊息也不進行資料驗證, 而是bypass的傳送, 預設都以位元組來傳輸資料會比較有效率, 但位元組誰看得懂啊...。 加上Kafka的特性是生產者與消費者並不能直接溝通, 因
Thumbnail
到存放虛擬機的磁碟處\點選想要註冊的機器\註冊機器(登錄虛擬機器)
Thumbnail
題目敘述 題目會給我們一組定義好的界面和需求,要求我們設計一個資料結構,可以滿足平均O(1)的插入元素、刪除元素、隨機取得元素的操作。 RandomizedSet() 類別建構子 bool insert(int val) 插入元素的function界面 bool remove(int val
Thumbnail
Accept:用戶端能夠接收的內容類型。 Accept: text/plain, text/html Accept-Charset:瀏覽器可以接受的字元編碼集。 Accept-Charset: utf8 Accept-Encoding:指定瀏覽器可以支援的web伺服器返回內容壓縮編碼