亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

實戰 - 數據庫設計

經過上一小節的需求分析,我們將系統分為了鑒權模塊、商品模塊和分類模塊,本節中,我們將圍繞功能模塊,進行數據庫設計。你將學習到實際開發中的一些數據庫設計技巧。請確保在你的開發環境下,已經準備好了一個 MySQL數據庫。

1. 創建庫

首先,我們先給商品管理項目創建一個數據庫,命名為imooc_goods_cms,cmsContent Management System(內容管理系統)的縮寫。

鏈接數據庫,執行以下 SQL:

CREATE DATABASE `imooc_goods_cms` CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_general_ci';

2. 創建表

2.1 通用字段

有一定數據庫設計經驗的同學都知道,一個數據庫中的數據表都會有一些通用字段。關于通用字段有哪些、如何命名以及如何選定字段類型都有一定的套路,不僅受個人開發習慣的影響,也受到團隊開發規范的約束。

該項目,所有的數據表都包含以下字段:

字段名稱 字段類型 字段長度 允許為 NULL 默認值 注釋
id int 0 表主鍵,自增長
create_time timestamp - CURRENT_TIMESTAMP 創建時間
update_time timestamp - CURRENT_TIMESTAMP 更新時間
delete_time timestamp - 刪除時間

另外,除了通用字段,該項目中的所有表都以imooc開頭。

2.2 用戶表

由于該系統鑒權模塊使用用戶名和密碼進行鑒權,需要設計一個用戶表imooc_user,用戶表包含如下字段(已省略通用字段):

字段名稱 字段類型 字段長度 允許為 NULL 默認值 注釋
nickname varchar 50 空字符串 昵稱
username varchar 50 用戶名
password char 32 密碼

Tipspassword字段的類型為char,這是因為我們在實現代碼時,將使用MD5算法進行加密,加密后的密碼長度為32,因此使用定長字符串更加節省存儲空間。

鏈接MySQL并選擇imooc_goods_cms數據庫,執行以下 SQL:

-- ----------------------------
-- Table structure for imooc_user
-- ----------------------------
DROP TABLE IF EXISTS `imooc_user`;
CREATE TABLE `imooc_user`  (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `nickname` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT "昵稱",
  `username` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT "用戶名",
  `password` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT "密碼",
  `create_time` timestamp(0) NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `update_time` timestamp(0) NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `delete_time` timestamp(0) NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of imooc_user
-- ----------------------------
INSERT INTO `imooc_user` VALUES (1, '小慕', 'admin', '123456', '2020-07-20 16:53:19', '2020-07-20 16:53:19', NULL);

2.3 商品表

商品模塊需要一個商品表imooc_goods,商品表包含如下字段(已省略通用字段):

字段名稱 字段類型 字段長度 允許為 NULL 默認值 注釋
name varchar 100 商品名
description varchar 255 空字符串 簡介
category_id int 11 0 分類id
price dicimal 10, 2 價格
stock int 11 0 庫存

鏈接MySQL并選擇imooc_goods_cms數據庫,執行以下 SQL:

-- ----------------------------
-- Table structure for imooc_goods
-- ----------------------------
DROP TABLE IF EXISTS `imooc_goods`;
CREATE TABLE `imooc_goods`  (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '',
  `description` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '',
  `category_id` int(11) NULL DEFAULT 0,
  `price` decimal(10, 2) NOT NULL,
  `stock` int(11) NULL DEFAULT 0,
  `create_time` timestamp(0) NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `update_time` timestamp(0) NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `delete_time` timestamp(0) NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of imooc_goods
-- ----------------------------
INSERT INTO `imooc_goods` VALUES (1, '測試商品1', '', 0, 12.30, 3, '2020-07-20 16:53:19', '2020-07-20 16:53:19', NULL);
INSERT INTO `imooc_goods` VALUES (2, '測試商品2', '', 0, 33.20, 10, '2020-07-20 17:17:53', '2020-07-20 17:17:53', NULL);
INSERT INTO `imooc_goods` VALUES (3, '測試商品3', '', 0, 20.00, 50, '2020-07-20 17:18:09', '2020-07-20 17:18:09', NULL);

2.4 分類表

分類模塊需要一個商品表imooc_category,分類表包含如下字段(已省略通用字段):

字段名稱 字段類型 字段長度 允許為 NULL 默認值 注釋
name varchar 100 商品名
description varchar 255 空字符串 簡介

鏈接MySQL并選擇imooc_goods_cms數據庫,執行以下 SQL:

-- ----------------------------
-- Table structure for imooc_category
-- ----------------------------
DROP TABLE IF EXISTS `imooc_category`;
CREATE TABLE `imooc_category`  (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '',
  `description` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;

至此,我們的數據庫和表已經建立完成。

3. 小結

本小節,我們一起創建了數據庫和表,表結構比較簡單,大家可以去我的代碼倉庫找到SQL文件,并直接在你的數據庫中執行,下一小節,我們將著手業務代碼的實現。