很多学生或者说是初学者在学习完成数据库的基础增删改查后就自认为在数据库这里就很熟悉了,但是不接触项目根本部知道需求,我这里准备了50个项目的基本需求来让大家来熟练各类项目的列信息,让大家更好的深入项目进行实战式的练习,可以让大家在后面面试的时候有更多更丰富的资历让大家可以与面试官侃侃而谈。
MySQL版本:5.7.31-log
数据库字符集,所有数据库通用字符集与排序规则,支持中文数据。
字符集:utf8 排序规则:utf8_general_ci
使用工具:Navicat Premium 15,可以在下面的连接中下载
https://download.csdn.net/download/feng8403000/89403778
留言板系统是一个允许用户发表留言、回复其他用户留言、查看留言及回复的交互式平台。该系统主要实现以下功能:
为了直接运行DDL语句并创建表,我们需要确保在创建含有外键约束的表之前,相关的被引用表(即外键指向的表)已经存在。所以我们在创建表的时候一定要按照一定的顺序来创建,否则就会出现没有外键关系导致的创建异常。
-- 创建用户表
CREATE TABLE users (
-- 用户ID,自增主键
user_id INT AUTO_INCREMENT PRIMARY KEY,
-- 用户名,唯一且不能为空
username VARCHAR(50) NOT NULL UNIQUE,
-- 用户密码,不能为空
`password` VARCHAR(255) NOT NULL,
-- 用户邮箱,唯一且可以为空(根据实际情况可设为NOT NULL)
email VARCHAR(100) UNIQUE,
-- 用户性别,可以是'男'或'女',长度为2个字符
-- 这里直接使用了VARCHAR类型存储性别,并设置默认值为'男'
sex VARCHAR(2) DEFAULT '男'
);
-- 创建板块表
CREATE TABLE boards (
-- 板块ID,自增主键
board_id INT AUTO_INCREMENT PRIMARY KEY,
-- 板块名称,唯一且不能为空
board_name VARCHAR(100) NOT NULL UNIQUE
-- 可以添加其他板块属性,如板块描述、创建时间等
-- 例如:description TEXT, create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- 创建留言表
CREATE TABLE messages (
-- 留言ID,自增主键
message_id INT AUTO_INCREMENT PRIMARY KEY,
-- 用户ID,外键关联users表
user_id INT,
-- 板块ID,外键关联boards表
board_id INT,
-- 留言标题,不能为空
title VARCHAR(255) NOT NULL,
-- 留言内容,不能为空
content TEXT NOT NULL,
-- 留言创建时间,默认为当前时间戳
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
-- 设置外键约束,确保引用的数据存在
FOREIGN KEY (user_id) REFERENCES users(user_id),
FOREIGN KEY (board_id) REFERENCES boards(board_id)
-- 可以添加其他留言属性,如点赞数、浏览量等
-- 例如:likes INT DEFAULT 0, views INT DEFAULT 0
);
-- 创建回复表
CREATE TABLE replies (
-- 回复ID,自增主键
reply_id INT AUTO_INCREMENT PRIMARY KEY,
-- 留言ID,外键关联messages表
message_id INT,
-- 用户ID,外键关联users表
user_id INT,
-- 回复内容,不能为空
content TEXT NOT NULL,
-- 回复创建时间,默认为当前时间戳
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
-- 设置外键约束,确保引用的数据存在
FOREIGN KEY (message_id) REFERENCES messages(message_id),
FOREIGN KEY (user_id) REFERENCES users(user_id)
-- 可以添加其他回复属性,如点赞数、是否显示等
-- 例如:is_displayed BOOLEAN DEFAULT TRUE
);
插入数据的时候也要注意主外键关系,如果没有外检的情况下是没有办法插入从表数据的。
INSERT INTO users (username, `password`, email, sex) VALUES
('张三', '123456', 'zhangsan@example.com', '男'),
('李四', 'password1', 'lisi@example.com', '男'),
('王五', 'qwerty', 'wangwu@example.com', '女'),
('赵六', 'secret', 'zhaoliu@example.com', '男'),
('孙七', '1a2b3c', 'sunqi@example.com', '女');
INSERT INTO boards (board_name) VALUES
('技术交流'),
('生活分享'),
('旅行攻略'),
('读书心得'),
('美食天地');
INSERT INTO messages (user_id, board_id, title, content) VALUES
(1, 1, '新技术探讨', '这里有一些关于新技术的讨论内容...'),
(2, 2, '生活小技巧', '分享一些生活中的小技巧...'),
(3, 3, '我的旅行经历', '这是我去年去日本的旅行经历...'),
(4, 4, '推荐一本好书', '这本书真的很不错,推荐给大家...'),
(5, 5, '美食推荐', '最近发现了一家超好吃的餐厅...');
INSERT INTO replies (message_id, user_id, content) VALUES
(1, 2, '对新技术很感兴趣,能详细说说吗?'),
(2, 3, '这些技巧确实很实用,谢谢分享!'),
(3, 5, '我也去过日本,你去了哪些地方呢?'),
(4, 1, '这本书我已经读过了,确实很值得一读。'),
(1, 4, '新技术方面我可以给你一些建议。');
遵循的数据库三范式
数据库建表的三范式(3NF,Third Normal Form)是关系型数据库设计的基本原则,用于确保数据库结构的逻辑性和减少数据冗余。这三个范式是逐步细化的,每一个范式都是在前一个范式的基础上建立的。下面我将详细解释这三个范式:
第一范式(1NF, First Normal Form)
定义:
解释:
第二范式(2NF, Second Normal Form)
定义:
解释:
第三范式(3NF, Third Normal Form)
定义:
解释: