在信息系统开发中,数据库是存储和管理数据的核心组件。本文将从实践出发,带大家完成 MySQL 的安装与卸载、数据库原理图绘制,并设计实现图书管理系统的数据库,帮助初学者夯实数据库基础操作与设计思维。
一、MySQL 8.0 安装与卸载(Windows 系统)
1.1 安装前准备
- 环境配置:解压安装包到自定义路径(如D:\MySQL\mysql-8.0.36-winx64),在系统环境变量 “Path” 中添加D:\MySQL\mysql-8.0.36-winx64\bin(便于全局调用 MySQL 命令)。
- 新建配置文件:在安装目录下新建my.ini文件,写入基础配置(指定端口、数据存储路径等):
[mysqld]
# 端口号(默认3306)
port=3306
# 安装目录
basedir=D:\MySQL\mysql-8.0.36-winx64
# 数据存储目录(需手动新建data文件夹)
datadir=D:\MySQL\mysql-8.0.36-winx64\data
# 最大连接数
max_connections=200
# 字符集(默认utf8mb4,支持 emoji)
character-set-server=utf8mb4
# 默认存储引擎
default-storage-engine=INNODB
[mysql]
# 客户端字符集
default-character-set=utf8mb4
1.2 详细安装步骤
- 初始化 MySQL:以管理员身份打开命令提示符(CMD),执行初始化命令(生成临时 root 密码,需记录):
mysqld --initialize --console
执行后会输出类似内容,其中 “root@localhostlocalhost:” 后的字符串即为临时密码(如_pX8k9&Yq2+):安装 MySQL 服务:执行命令将 MySQL 注册为系统服务(服务名默认为 “MySQL”)
2024-XX-XXTXX:XX:XX.XXXXXXZ 0 [Warning] ...
2024-XX-XXTXX:XX:XX.XXXXXXZ 1 [Note] A temporary password is generated for root@localhost: _pX8k9&Yq2+
- 3安装 MySQL 服务:执行命令将 MySQL 注册为系统服务(服务名默认为 “MySQL”):
mysqld --install MySQL
若提示 “Service successfully installed”,说明服务安装成功。
3.启动 MySQL 服务:执行命令启动服务:
net start MySQL
提示 “MySQL 服务已经启动成功” 即可。
4.登录并修改密码:使用临时密码登录 MySQL,然后修改为自定义密码(如123456,实际生产环境需设复杂密码):
# 登录命令
mysql -u root -p
# 输入临时密码(粘贴时注意隐藏字符)
# 修改密码(将'123456'替换为你的密码)
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
# 刷新权限
FLUSH PRIVILEGES;
1.3 安装验证
登录 MySQL 后,执行show databases;命令,若能正常显示系统默认数据库(如information_schema、mysql),说明安装成功:
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.00 sec)
1.4 卸载步骤
若需卸载 MySQL,需按以下步骤操作,避免残留文件影响后续安装:
- 停止 MySQL 服务:管理员身份打开 CMD,执行:
net stop MySQL
3.卸载安装目录:删除 MySQL 安装文件夹(如D:\MySQL\mysql-8.0.36-winx64),注意提前备份数据(若需保留)。
4.清理注册表:按下Win+R输入regedit打开注册表,删除以下路径的 MySQL 相关项(谨慎操作,避免误删其他内容):
-
- HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MySQL
-
- HKEY_LOCAL_MACHINE\SOFTWARE\MySQL AB
5.清理环境变量:删除系统环境变量 “Path” 中 MySQL 的 bin 路径。
1.5 注意事项
- 端口占用问题:若安装时提示 “端口 3306 被占用”,可修改my.ini中的port字段(如 3307),重新执行初始化步骤。
- 临时密码丢失:删除data文件夹,重新执行mysqld --initialize --console生成新临时密码。
二、数据库原理图(ER 图)绘制
ER 图(实体 - 关系图)是数据库设计的核心工具,用于可视化实体、属性及实体间的关系。本次使用免费在线工具DrawIO绘制,步骤如下:
2.1 工具准备
打开 DrawIO 官网,选择 “空白绘图”,在左侧 “形状” 面板中找到 “实体关系图” 分类,包含实体、属性、关系等基础元素。
2.2 绘制步骤(以图书管理系统为例)
- 添加实体:拖拽 “实体” 形状到画布,分别命名为 “用户”“图书”“借阅登记”。
- 添加属性:
-
- 右键 “用户” 实体→“添加属性”,依次添加 “用户名(主键)”“姓名”“密码”“电话”“住址”“专业及年级”;
-
- 右键 “图书” 实体→“添加属性”,依次添加 “图书 ID(主键)”“图书名”“分类”“介绍”“出版社”“入库时间”;
-
- 右键 “借阅登记” 实体→“添加属性”,依次添加 “借阅 ID(主键)”“借阅人(外键,关联用户。用户名)”“图书 ID(外键,关联图书。图书 ID)”“借阅时间”“是否归还”。
- 建立关系:
-
- 拖拽 “关系” 形状连接 “用户” 和 “借阅登记”,标注关系为 “1:N”(1 个用户可有多条借阅记录);
-
- 拖拽 “关系” 形状连接 “图书” 和 “借阅登记”,标注关系为 “1:N”(1 本图书可有多条借阅记录)。
2.3 原理图解析
- 实体:用户、图书、借阅登记(对应数据库中的表);
- 主键:唯一标识实体的属性(如 “用户名” 唯一标识 “用户”);
- 外键:关联两个实体的属性(如 “借阅登记。借阅人” 关联 “用户。用户名”,确保数据一致性);
- 关系:1:N 表示 “一对多”,是图书管理系统中核心的数据关联逻辑。
(注:实际绘制完成后,可通过 DrawIO 的 “文件→导出” 功能保存为 PNG/JPG 格式,便于后续文档插入。)
三、图书管理系统数据库设计与实现
根据需求,设计包含 3 张表的数据库,遵循 “三范式” 原则(减少数据冗余、保证数据一致性),具体实现如下:
3.1 需求分析
| 表名 | 核心需求 |
| 用户表 | 存储用户基本信息,需唯一标识用户(用户名),记录姓名、密码等关键信息 |
| 图书表 | 存储图书信息,需唯一标识图书(新增图书 ID,避免同名图书冲突),记录分类、出版社等 |
| 借阅登记表 | 记录借阅行为,关联用户与图书,需跟踪借阅时间和归还状态 |
3.2 数据库与表设计
- 数据库名:library_management(图书管理系统);
- 表结构设计:
| 表名 | 字段名 | 字段类型 | 约束条件 | 说明 |
| user_info | user_account | VARCHAR(50) | PRIMARY KEY, NOT NULL, UNIQUE | 用户名(主键,唯一标识) |
| | user_name | VARCHAR(50) | NOT NULL | 姓名 |
| | user_password | VARCHAR(100) | NOT NULL | 密码(建议加密存储) |
| | user_phone | VARCHAR(20) | NOT NULL, CHECK(LENGTH>=11) | 电话(至少 11 位) |
| | user_address | VARCHAR(200) | NULL | 住址(可空) |
| | user_major_grade | VARCHAR(50) | NOT NULL | 专业及年级 |
| book_info | book_id | INT | PRIMARY KEY, NOT NULL, AUTO_INCREMENT | 图书 ID(主键,自增) |
| | book_name | VARCHAR(100) | NOT NULL | 图书名 |
| | book_category | VARCHAR(50) | NOT NULL | 分类(如 “计算机科学”) |
| | book_intro | TEXT | NULL | 介绍(长文本,可空) |
| | book_publisher | VARCHAR(100) | NOT NULL | 出版社 |
| | book_stock_time | DATETIME | NOT NULL | 入库时间 |
| borrow_record | borrow_id | INT | PRIMARY KEY, NOT NULL, AUTO_INCREMENT | 借阅 ID(主键,自增) |
| | borrower_account | VARCHAR(50) | NOT NULL, FOREIGN KEY | 借阅人(关联 user_info.user_account) |
| | borrow_book_id | INT | NOT NULL, FOREIGN KEY | 图书 ID(关联 book_info.book_id) |
| | borrow_time | DATETIME | NOT NULL | 借阅时间(默认当前时间) |
| | is_returned | ENUM('YES','NO') | NOT NULL, DEFAULT 'NO' | 是否归还(默认未归还) |
3.3 建库建表语句
打开 MySQL 命令行或 Navicat 等工具,执行以下 SQL 语句:
1. 创建数据库
CREATE DATABASE IF NOT EXISTS library_management
DEFAULT CHARACTER SET utf8mb4
DEFAULT COLLATE utf8mb4_general_ci;
2. 使用数据库
USE library_management;
3. 创建用户表(user_info)
CREATE TABLE IF NOT EXISTS user_info (
user_account VARCHAR(50) PRIMARY KEY NOT NULL UNIQUE,
user_name VARCHAR(50) NOT NULL,
user_password VARCHAR(100) NOT NULL,
user_phone VARCHAR(20) NOT NULL CHECK (LENGTH(user_phone) >= 11),
user_address VARCHAR(200) NULL,
user_major_grade VARCHAR(50) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
4. 创建图书表(book_info)
CREATE TABLE IF NOT EXISTS book_info (
book_id INT PRIMARY KEY NOT NULL AUTO_INCREMENT,
book_name VARCHAR(100) NOT NULL,
book_category VARCHAR(50) NOT NULL,
book_intro TEXT NULL,
book_publisher VARCHAR(100) NOT NULL,
book_stock_time DATETIME NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
5. 创建借阅登记表(borrow_record)
CREATE TABLE IF NOT EXISTS borrow_record (
borrow_id INT PRIMARY KEY NOT NULL AUTO_INCREMENT,
borrower_account VARCHAR(50) NOT NULL,
borrow_book_id INT NOT NULL,
borrow_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
is_returned ENUM('YES','NO') NOT NULL DEFAULT 'NO',
-- 外键约束:关联用户表
FOREIGN KEY (borrower_account) REFERENCES user_info(user_account)
ON DELETE CASCADE ON UPDATE CASCADE,
-- 外键约束:关联图书表
FOREIGN KEY (borrow_book_id) REFERENCES book_info(book_id)
ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
5326

被折叠的 条评论
为什么被折叠?



