JS:資料庫設計與應用(六)

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

※ Schema Design 小測驗

● 測驗一:電商平台是後端開發最基本的例子

幫電商平台設計一個SQL Database Schema,需要保存商品資料、顧客資料、訂單資料…

輔助設計Schema的工具:

https://drawsql.app

優點

網頁版,方便使用。

功能方面有足夠的簡化,適合初學者。


註冊完畢

raw-image


按New Diagram後,填上Diagram name,資料庫選擇MySQL,再按Create diagram

raw-image

出現空白設計圖

raw-image



● 設計前所需要的基本知識

  1. SQL的基本觀念一個資料庫(Database)通常由多個資料表(Tables)組成,每個資料表包含多行(Rows)和多列(Columns)。
  2. Schema DesignSchema是資料庫的結構或藍圖,定義了資料表、欄位、關聯等。設計Schema時,遵循正規化(Normalization)原則可以幫助減少資料冗餘和提高資料完整性。
  3. Normal Forms
  • 第一正規形式(1NF):確保每個欄位都是原子的,不可再分。
  • 第二正規形式(2NF):在滿足1NF的基礎上,確保每個非主鍵欄位完全依賴於主鍵。
  • 第三正規形式(3NF):在滿足2NF的基礎上,確保每個非主鍵欄位不依賴於其他非主鍵欄位。

● 業務邏輯

  • 電商平台會有很多的商品資料,所以需要一個table來保存商品資料。
raw-image
  • 需要一個table來保存顧客資料。
raw-image
  • 需要一個訂單table,用來釐清訂單與顧客和商品的關係。
  1. Order和Customer的關係:當一個顧客(Customer)可以有多個訂單(Order)時,這是一對多的關係。將顧客的ID(customer_id)存儲在訂單表(Order)中,可以清楚地表示每個訂單屬於哪個顧客。這樣的設計符合正規化原則,特別是第一正規形式(1NF),確保每個欄位只保存一個值。
raw-image


  1. Order和Product的關係:兩者是多對多關係,因為一個Order可以下很多個Product,但一個Product也可以同時包含很多個Order裡面。當多對多關係發生時,我們通常會使用一個中間表(junction table)來保存兩個表之間的關係。假設我們創建一個名為 OrderProduct 的中間表,這個表會包含 order_id 和 product_id 兩個欄位,分別對應 Order 表和 Product 表的主鍵。這樣的設計可以有效地表示一個訂單包含多個產品,同時一個產品也可以出現在多個訂單中。
raw-image
  1. Order和Product的另一層關係:在訂單和產品的多對多關係中,我們使用一個中間表來保存它們之間的關係。這個中間表不僅保存訂單和產品的關聯,還可以記錄每個訂單中每個產品的數量。這樣的設計可以清楚地管理訂單中每個產品的數量,同時保持產品的其他詳細資訊在 Product 表中。
raw-image


● SKU(Stock Keeping Unit):

指的是一個產品在倉庫中的唯一標識單位。每個 SKU 代表一個特定的產品變體,包括規格、顏色、尺寸等。透過 SKU,你可以精確地追蹤和管理庫存,並了解消費者購買的是哪個具體的產品選項。

raw-image


● 電商系統功能優化思考方向:

  • Product 表:保存產品的詳細資訊,包括 SKU。
  • Order 表:保存訂單的詳細資訊,包括寄送、付款、客戶和其他相關資訊。
  • OrderProduct 表:保存訂單和產品之間的關係,包括每個訂單中每個產品的數量。

● Order 表的優化:

  1. 寄送資訊:
    • shipping_address (寄送地址)。
    • shipping_method (寄送方式)。
    • shipping_status (寄送狀態)。
    • tracking_number (追蹤號碼)。
  2. 付款資訊:
    • payment_method (付款方式)。
    • payment_status (付款狀態)。
    • total_amount (總金額)。
  3. 客戶資訊:
    • customer_id (客戶ID,參照客戶表)。
    • order_date (訂單日期)。
    • order_status (訂單狀態,如處理中、已完成、已取消等)。
  4. 其他資訊:
    • discount (折扣)。
    • tax (稅金)。
    • notes (備註)。


留言
avatar-img
留言分享你的想法!
avatar-img
奧莉薇走在成為後端工程師之路上
18會員
138內容數
全端網頁開發專業知識分享
2025/04/26
※ 場景: 即時聊天應用: 設計一個支持多房間功能的即時聊天平台,像 WhatsApp、LINE或Facebook Messenger,提供文字、語音、視訊聊天功能,方便管理群組聊天。 功能亮點:加入特別功能,例如可加入多房間功能、使用者名單、表情符號支持、文件分享或訊息已讀未讀狀態。 展示
2025/04/26
※ 場景: 即時聊天應用: 設計一個支持多房間功能的即時聊天平台,像 WhatsApp、LINE或Facebook Messenger,提供文字、語音、視訊聊天功能,方便管理群組聊天。 功能亮點:加入特別功能,例如可加入多房間功能、使用者名單、表情符號支持、文件分享或訊息已讀未讀狀態。 展示
2025/04/26
※ 先建立基本的express後端服務: 1.建立新資料夾:Socket mkdir socket 2.進入資料夾:Socket cd ​bsocket 3. 安裝 Experss 到專案中 npm init -y //初始化專案,建立 package.json 檔 npm insta
Thumbnail
2025/04/26
※ 先建立基本的express後端服務: 1.建立新資料夾:Socket mkdir socket 2.進入資料夾:Socket cd ​bsocket 3. 安裝 Experss 到專案中 npm init -y //初始化專案,建立 package.json 檔 npm insta
Thumbnail
2025/04/10
※ 什麼是 Socket.io:一個基於傳統 WebSocket API 之上的框架。 ※ Socket.io常用功能: Custom Events:在 Socket.io 中,開發者可以創建自己的事件來處理特定的功能或需求。 Rooms:分組的功能。每個連接的用戶(或稱為 socket)可
Thumbnail
2025/04/10
※ 什麼是 Socket.io:一個基於傳統 WebSocket API 之上的框架。 ※ Socket.io常用功能: Custom Events:在 Socket.io 中,開發者可以創建自己的事件來處理特定的功能或需求。 Rooms:分組的功能。每個連接的用戶(或稱為 socket)可
Thumbnail
看更多
你可能也想看
Thumbnail
「欸!這是在哪裡買的?求連結 🥺」 誰叫你太有品味,一發就讓大家跟著剁手手? 讓你回購再回購的生活好物,是時候該介紹出場了吧! 「開箱你的美好生活」現正召喚各路好物的開箱使者 🤩
Thumbnail
「欸!這是在哪裡買的?求連結 🥺」 誰叫你太有品味,一發就讓大家跟著剁手手? 讓你回購再回購的生活好物,是時候該介紹出場了吧! 「開箱你的美好生活」現正召喚各路好物的開箱使者 🤩
Thumbnail
這篇文章介紹了網站的整體架構以及開發時所使用的工具和套件,包括 Next.js、Tailwind CSS 和 socket.io 等。文章回顧了程式碼的重構與優化,幫助開發者提高工作效率,適合希望深入瞭解前端開發和網站架構的讀者。
Thumbnail
這篇文章介紹了網站的整體架構以及開發時所使用的工具和套件,包括 Next.js、Tailwind CSS 和 socket.io 等。文章回顧了程式碼的重構與優化,幫助開發者提高工作效率,適合希望深入瞭解前端開發和網站架構的讀者。
Thumbnail
CSS 盒模型是理解和設計網頁佈局的核心概念。它包括元素的內容、填充、邊框和外邊距。
Thumbnail
CSS 盒模型是理解和設計網頁佈局的核心概念。它包括元素的內容、填充、邊框和外邊距。
Thumbnail
※ 視圖模板 視圖模板(View Templates) 是在 MVC 架構中負責展示數據的 HTML 文件,包含模板語法,用於在渲染時插入實際數據。它們的主要目的是分離數據與展示邏輯,讓代碼更加模塊化和易於維護。 視圖模板設計和使用的核心理念,就是「重複的事情不要重複做、效益最大化、有效利用資源
Thumbnail
※ 視圖模板 視圖模板(View Templates) 是在 MVC 架構中負責展示數據的 HTML 文件,包含模板語法,用於在渲染時插入實際數據。它們的主要目的是分離數據與展示邏輯,讓代碼更加模塊化和易於維護。 視圖模板設計和使用的核心理念,就是「重複的事情不要重複做、效益最大化、有效利用資源
Thumbnail
本文介紹瞭如何在後端系統開發時設計不同表單的簽核流程,包括請假表單和採購表單。以及如何動態生成簽核表單,並建立簽核節點。另外還介紹瞭如何利用繼承來簡化簽核流程的設定。
Thumbnail
本文介紹瞭如何在後端系統開發時設計不同表單的簽核流程,包括請假表單和採購表單。以及如何動態生成簽核表單,並建立簽核節點。另外還介紹瞭如何利用繼承來簡化簽核流程的設定。
Thumbnail
你好,在下最近在學習開發web,學了html css js,也得出一些心得,由於網路上已有許多教學,所以我會著重在如何開發出to do List,以及解釋我寫的程式碼。相關的教學我會直接貼網址。如果我有什麼地方出錯,或者是可以寫得更好,歡迎在下方留言,討論。 首先先介紹我的開發環境: 我用了vs
Thumbnail
你好,在下最近在學習開發web,學了html css js,也得出一些心得,由於網路上已有許多教學,所以我會著重在如何開發出to do List,以及解釋我寫的程式碼。相關的教學我會直接貼網址。如果我有什麼地方出錯,或者是可以寫得更好,歡迎在下方留言,討論。 首先先介紹我的開發環境: 我用了vs
Thumbnail
軟體系統的發展歷程大多相似,首重解決基本需求、提供操作介面,進而提升安全性、擴充功能、優化操作。
Thumbnail
軟體系統的發展歷程大多相似,首重解決基本需求、提供操作介面,進而提升安全性、擴充功能、優化操作。
Thumbnail
列出一套完整的程式 程式設計有許多種方法,不過通常會先列出清單的再逐一執行,這樣會加快程式設計的速度。設計通常會採取順推的辦法。所以順推的程式設計方式就是經歷觀念溝通、系統分析、資料統合、權限管理、頻率與時間、後台管理、畫面設計等等階段後,將框架設計完了以後,先列出一套完整的程式,將所有使用者都確
Thumbnail
列出一套完整的程式 程式設計有許多種方法,不過通常會先列出清單的再逐一執行,這樣會加快程式設計的速度。設計通常會採取順推的辦法。所以順推的程式設計方式就是經歷觀念溝通、系統分析、資料統合、權限管理、頻率與時間、後台管理、畫面設計等等階段後,將框架設計完了以後,先列出一套完整的程式,將所有使用者都確
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News