iT邦幫忙

2026 iThome 鐵人賽

DAY 7
0

確認三張資料表與它們之間的關聯後,今天要來決定每個欄位的資料型態。

良好的資料型態設計,不僅能避免資料溢位或型態錯誤,更能節省儲存空間並提升 MySQL 的查詢效率。

資料表型態規劃

  1. 書籍表 (books)
欄位名稱 資料型態 屬性/說明
id INT 主鍵 (PK)
title VARCHAR(255) 字串
author VARCHAR(100) 作者
isbn VARCHAR(20) ISBN
publish_year YEAR 出版年份
category VARCHAR(50) 分類名稱
total INT 總庫存量
available INT 剩餘可借數量
  1. 會員表 (members)
欄位名稱 資料型態 屬性/說明
id INT 主鍵 (PK)
name VARCHAR(100) 會員姓名
email VARCHAR(191) 帳號/信箱
password VARCHAR(255) 密碼
role VARCHAR(255) 權限角色(一般使用者 / 管理員)
created_at DATETIME 註冊時間
  1. 借閱紀錄表 (loans)
欄位名稱 資料型態 屬性/說明
id INT 主鍵 (PK)
member_id INT 外鍵 (FK),對應 members.id
book_id INT 外鍵 (FK),對應 books.id
borrowed_at DATETIME 借出時間
due_date DATE 應還日期
returned_at DATETIME 實際歸還時間(預設 NULL)
status ENUM('borrowed', 'returned') 借閱狀態

型態選擇的三大關鍵

  1. 外鍵型態必須完全一致:loans.member_id 與 loans.book_id 必須與原表 id 的型態相同,否則建立外鍵 constraint 時會報錯。
  2. 密碼欄位長度要給足:PHP 使用 password_hash() 生成的雜湊字串通常為 60 字元以上,設定 VARCHAR(255) 最安全。
  3. 精準選擇日期型別:borrowed_at 需要精確到秒數所以用 DATETIME;而 due_date 只需記錄到哪一天,用 DATE 即可。

確定好每個欄位的型態與屬性後,明天就可以正式撰寫 MySQL 語法,並在 WSL2 環境中建立資料庫與外鍵關聯。


上一篇
Day 6 三張表:books、members、loans
下一篇
Day 8 建立資料表、資料庫與外鍵關聯
系列文
從零打造圖書管理系統:WSL2 × MySQL × Claude Code 的整合實作 共 17 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言