知识问答

【MySQL 数据库应用】-购物网站系统数据库设计

【MySQL 数据库应用】-购物网站系统数据库设计

  • 项目开发背景
  • 开发项目的目标及设计要求
    • 项目目标
    • 设计要求
    • 数据库需求分析
      • 用例和用例图
      • 数据需求
      • 处理需求
      • 安全性与完整性要求
        • 主键约束
        • 唯一性约束
        • 外键约束
        • ON DELETE 和 ON UPDATE 触发动作
        • 数据库设计与实现
          • 数据字典
            • 用户信息数据结构的描述
            • 地址信息数据结构的描述
            • 商品类别数据结构的描述
            • 商品数据结构的描述
            • 购物车数据结构的描述
            • 订单数据结构的描述
            • 订单项数据结构的描述
            • 概念模型及逻辑结构
              • 实体图及 E-R 图
              • E-R 图转换为关系模式
              • 表结构设计
              • 编写程序
                • 视图
                  • 视图 1:获取所有商品及其所属类别名称
                  • 视图 2:获取所有订单以及用户信息和地址详情
                  • 视图3:获取用户的购物车内容
                  • 视图4:获取用户的收货地址列表课程名
                  • 视图5:获取用户的订单详情
                  • 存储过程
                    • 存储过程1:添加商品到购物车
                    • 存储过程2:创建订单
                    • 存储过程3:更新订单状态
                    • 触发器及事务
                    • 事件
                    • 数据完整性
                      • 定义各表的主键(在建表的时候定义)
                      • 删除用户表时同时删除 地址表表中相关行的行为
                      • 将类别表删除或修改时,商品表的类别要同步删除或修改
                      • 删除或修改用户时,同时删除或修改购物车中与该用户关联的数据
                      • 删除商品时,同时删除购物车中与该商品关联的数据
                      • 在删除用户时,同时删除与该用户关联的订单数据
                      • orders与 address 表的关联:在删除或更新关联行时不采取任何动作。
                      • 实现级联删除或更新。在删除或更新订单时,相关的订单项也会被删除或更新
                      • item与 product 表的关联,在删除或更新关联行时不采取任何动作限制条件}
                      • 数据更新
                        • 插入数据
                        • 修改数据
                        • 删除数据
                        • 权限管理
                          • 由sa给组长授予管理员权限
                          • 由组长创建项目角色,并授予项目角色相关权限
                          • 由组长将组员与项目角色捆绑
                          • 由组长给组员授予登录本组项目数据库的权限
                          • 数据库备份与恢复
                            • 数据库备份
                            • 数据库恢复
                            • 前端界面设计
                            • 项目代码下载

                              项目开发背景

                              MyShop商城致力于提供流畅的购物体验,旨在为用户打造一个便捷的在线购物平台,涵盖了商品浏览、购物车管理、结算付款等功能。同时提供了后台管理系统,方便商家管理商品信息和订单。该项目需要一个可靠高效的数据库系统来管理商品、用户和订单信息。这个数据库系统必须具备出色的性能和可靠性,通过设计和优化提高系统响应速度和数据一致性。我们的目标是设计实现MyShop商城的数据库系统,从而为用户提供卓越的购物体验。通过这个项目,我们不仅希望学习MySQL数据库开发技术,更致力于为用户创造一个简单实用的购物平台。

                              开发项目的目标及设计要求

                              项目目标

                              本项目旨在通过学习MySQL数据库应用,着重于购物网站系统的数据库设计。我们的目标是构建一个高效可靠的数据库系统,有效管理商品、用户和订单信息,从而提供顶尖的购物体验。通过理论与实践相结合,强调培养团队的协作沟通、数据库设计能力,并专注于最新技术的应用与掌握。同时,我们致力于建立"MyShop商城",为现代消费者打造一个便捷高效的在线购物平台,集成商品浏览、购物车管理、结算付款等功能,并借助后台管理系统提供用户友好的购物环境。我们的目标是通过学习MySQL数据库开发技术,构建安全、高效的系统,满足用户的购物需求。

                              设计要求

                              为确保系统的稳定性、安全性和完整性,该项目设计要求包括功能模块设计、数据库结构设计、数据安全性、数据一致性与完整性以及前后端交互实现,要求如下:

                              • 功能模块设计:划分并设计清晰的功能模块,涵盖用户管理、商品展示、购物车管理、订单处理、支付功能等,确保每个模块的功能完备并相互协调。
                              • 数据库结构设计:创建恰当的表结构,涵盖用户信息、商品数据、订单详情等核心信息,确保表之间的关联性和数据一致性,以支持系统各项功能的有效运作。
                              • 数据安全性:引入适当的加密技术,如密码加密、传输加密等,确保用户信息在存储和传输过程中的安全,以防止数据泄露或被未授权者访问。
                              • 一致性与完整性:设计数据约束和验证规则,确保数据的一致性和完整性,避免数据冗余和错误,以提供准确可靠的信息支持系统运作。
                              • 前后端实现:使用Java与jsp技术实现前后端交互,确保系统各功能模块间数据的有效传递与协调运作,以提供用户流畅的体验。

                                数据库需求分析

                                用例和用例图

                                数据需求

                                MyShop 商城系统的数据需求包括用户数据、地址数据、商品数据、购物车数据、订单数据和订单项数据。用户数据包括账号、密码、邮箱等信息,地址数据包括收货地址和联系方式,商品数据包括商品类别和详细信息,购物车数据用于记录用户选择的商品,订单数据用于管理用户的订单信息,订单项数据用于记录订单中每个商品的详细信息。通过满足这些数据需求,MyShop 商城系统可以实现用户管理、地址管理、商品展示、购物车管理、订***理和订单项管理的功能。

                                处理需求

                                MyShop 商城系统的功能和数据处理方式,主要包括用户管理、商品管理、购物车管理、订***理、地址管理等方面。用户管理涵盖注册、登录、账号管理和权限控制;商品管理包括商品信息的录入、更新和查询;购物车管理允许用户管理购物车中的商品;订***理涉及订单的生成、处理和管理;地址管理用于管理用户的收货地址;通过对这些处理需求进行分析,可以确保系统能够满足商城的核心功能需求,并提供良好的用户体验和商城运营效果。

                                安全性与完整性要求

                                主键约束

                                • 用户表(user):{u_id} 列被定义为主键。
                                • 地址表(address):{a_id} 列被定义为主键。
                                • 类别表(type):{t_id} 列被定义为主键。
                                • 商品表(product):{p_id} 列被定义为主键。
                                • 购物车表(cart):{c_id} 列被定义为主键。
                                • 订单表(orders):{o_id} 列被定义为主键。
                                • 订单项表(item):{i_id} 列被定义为主键。

                                  唯一性约束

                                  • 用户表({user}):{u_name} 列被定义为唯一性约束。

                                    外键约束

                                    • 地址表(address):{u_id} 定义为外键约束,引用用户表(user)的 u_id}列。
                                    • 商品表(product):t_id定义为外键约束,引用类别表(type)的 t_id 列。
                                    • 购物车表(cart):u_id定义为外键约束,引用用户表(user)的 u_id 列。
                                    • 购物车表(cart):p_id 定义为外键约束,引用商品表(product)的 p_id列。
                                    • 订单表(orders):u_id定义为外键约束,引用用户表(user)的 u_id 列。
                                    • 订单表(orders):a_id 定义为外键约束,引用地址表(address)的 a_id列。
                                    • 订单项表(item):o_id定义为外键约束,引用订单表(orders)的 o_id 列。
                                    • 订单项表(item):p_id定义为外键约束,引用商品表(product)的 p_id列。

                                      ON DELETE 和 ON UPDATE 触发动作

                                      • 在删除关联行时,购物车表(cart)和订单表(orders)的外键约束使用 ON DELETE CASCADE
                                      • 触发动作,表示删除关联行时自动删除相关行。 在更新关联行时,地址表(address)的外键约束使用 ON UPDATE CASCADE 触发动作,表示更新关联行时自动更新相应行。

                                        这些约束条件确保了数据库中的数据一致性和完整性,限制了不正确的操作并保护了数据的准确性和可靠性。

                                        数据库设计与实现

                                        数据字典

                                        用户信息数据结构的描述

                                        数据结构名:user

                                        说明:用于存储用户的账号信息和相关属性。

                                        组成:u_id,u_name,u_password,u_email,u_sex,u_status,u_code,u_role

                                        地址信息数据结构的描述

                                        数据结构名: address

                                        说明: 用于存储用户的收货地址信息。

                                        组成:a_id,u_id,a_name,a_phone,a_detail,a_state

                                        商品类别数据结构的描述

                                        数据结构名:type

                                        说明:用于存储商品的分类信息。

                                        组成:t_id,t_name,t_info

                                        商品数据结构的描述

                                        数据结构名:product

                                        说明:用于存储具体的商品信息。

                                        组成:p_id,t_id,p_name,p_time,p_image,p_price,p_state,p_info

                                        购物车数据结构的描述

                                        数据结构名:cart

                                        说明:用于存储用户的购物车信息。

                                        组成: c_id,u_id,p_id,c_count,c_num

                                        订单数据结构的描述

                                        数据结构名:orders

                                        说明:用于存储用户的订单信息。

                                        组成: o_id,u_id,a_id,o_count,o_time,o_state

                                        订单项数据结构的描述

                                        数据结构名: item

                                        说明:用于存储订单中每个商品的详细信息。

                                        组成:i_id,o_id,p_id,i_count,i_num

                                        概念模型及逻辑结构

                                        实体图及 E-R 图

                                        E-R 图转换为关系模式

                                        表结构设计

                                        编写程序

                                        视图

                                        视图 1:获取所有商品及其所属类别名称

                                        -- 视图1:获取所有商品及其所属类别名称CREATE VIEW vw_Products ASSELECT p.p_id, p.p_name, p.p_time, p.p_image, p.p_price, p.p_state, p.p_info, t.t_nameFROM product pJOIN type t ON p.t_id = t.t_id;-- 查询所有商品及其所属类别名称SELECT * FROM vw_Products;

                                        视图 2:获取所有订单以及用户信息和地址详情

                                        -- 视图2:获取所有订单以及用户信息和地址详情CREATE VIEW vw_Orders ASSELECT o.o_id, o.o_count, o.o_time, o.o_state, u.u_name, u.u_email, u.u_sex, a.a_name, a.a_phone, a.a_detailFROM orders oJOIN `user` u ON o.u_id = u.u_idJOIN address a ON o.a_id = a.a_id;-- 查询所有订单以及用户信息和地址详情SELECT * FROM vw_Orders;

                                        视图3:获取用户的购物车内容

                                        -- 视图3:获取用户的购物车内容CREATE VIEW vw_Cart ASSELECT c.c_id, c.u_id, c.p_id, c.c_count, c.c_num, p.p_name, p.p_price, p.p_imageFROM cart cJOIN product p ON c.p_id = p.p_id;-- 查询指定用户的购物车内容SELECT * FROM vw_Cart WHERE u_id = 5; 

                                        视图4:获取用户的收货地址列表课程名

                                        -- 视图4:获取用户的收货地址列表CREATE VIEW vw_Addresses ASSELECT a.a_id, a.u_id, a.a_name, a.a_phone, a.a_detail, a.a_state, u.u_nameFROM address aJOIN `user` u ON a.u_id = u.u_id;-- 查询指定用户的收货地址列表SELECT * FROM vw_Addresses WHERE u_id = 4; 

                                        视图5:获取用户的订单详情

                                        -- 视图5:获取用户的订单详情CREATE VIEW vw_UserOrders ASSELECT o.o_id, o.o_count, o.o_time, o.o_state, u.u_name, u.u_email, u.u_sex, a.a_name, a.a_phone, a.a_detailFROM orders oJOIN `user` u ON o.u_id = u.u_idJOIN address a ON o.a_id = a.a_id;-- 查询指定用户的订单详情SELECT * FROM vw_UserOrders WHERE u_name = 'user4';  -- 使用用户名来指定用户

                                        存储过程

                                        存储过程1:添加商品到购物车

                                        -- 存储过程1:添加商品到购物车DELIMITER //CREATE PROCEDURE sp_AddToCart(IN user_id INT,IN product_id INT,IN quantity INT)BEGININSERT INTO cart (u_id, p_id, c_num, c_count)VALUES (user_id, product_id, quantity, (SELECT p_price FROM product WHERE p_id = product_id) * quantity);END//DELIMITER ;-- 调用存储过程 sp_AddToCart 将商品添加到购物车CALL sp_AddToCart(4, 3, 2); -- 查询结果SELECT * FROM cart;

                                        存储过程2:创建订单

                                        -- 存储过程2:创建订单DELIMITER //CREATE PROCEDURE sp_CreateOrder(IN user_id INT,IN address_id INT)BEGINDECLARE order_id VARCHAR(64);SET order_id = UUID(); -- 使用 UUID() 函数生成唯一订单编号INSERT INTO orders (o_id, u_id, a_id, o_count, o_time, o_state)SELECT order_id, user_id, address_id, SUM(c.c_count), NOW(), 0FROM cart cWHERE c.u_id = user_id;DELETE FROM cart WHERE u_id = user_id; -- 清空购物车中该用户的商品END//DELIMITER ;-- 调用存储过程 sp_CreateOrder 创建订单CALL sp_CreateOrder(4, 4); -- 查询结果SELECT * FROM orders;

                                        存储过程3:更新订单状态

                                        -- 存储过程3:更新订单状态DELIMITER //CREATE PROCEDURE sp_UpdateOrderStatus(IN order_id VARCHAR(64),IN new_state INT)BEGINUPDATE ordersSET o_state = new_stateWHERE o_id = order_id;END//DELIMITER ;-- 调用存储过程 sp_UpdateOrderStatus 更新订单状态CALL sp_UpdateOrderStatus('order2', 4); -- 查询结果SELECT * FROM orders;

                                        触发器及事务

                                        -- 触发器,在将商品添加到订单时,将相关商品从购物车中移除。-- 同时,我们将在这个过程中使用事务来确保操作的一致性。DELIMITER //CREATE TRIGGER trg_AddToOrderAFTER INSERT ON ordersFOR EACH ROWBEGINDECLARE cart_count INT;-- 获取购物车中相应商品的数量SELECT c_num INTO cart_count FROM cart WHERE p_id = NEW.p_id AND u_id = NEW.u_id;-- 如果购物车中有相关商品,则将其移除IF cart_count > 0 THENDELETE FROM cart WHERE p_id = NEW.p_id AND u_id = NEW.u_id;END IF;END;//DELIMITER ;-- 事务,将商品添加到购物车并创建订单START TRANSACTION; -- 开始事务CALL sp_AddToCart(3, 3, 2); -- 将商品添加到购物车CALL sp_CreateOrder(3, 4); -- 创建订单COMMIT; -- 提交事务,保存更改

                                        事件

                                        -- 创建每日数据备份的事件DELIMITER //CREATE EVENT IF NOT EXISTS daily_data_backupON SCHEDULE EVERY 1 DAYSTARTS TIMESTAMP(NOW() + INTERVAL 1 DAY)ON COMPLETION PRESERVEDOBEGINSET @backup_file_name = CONCAT('backup_', DATE_FORMAT(NOW(), '%Y%m%d_%H%i%s'), '.sql');SET @backup_path = '/path/to/backup/directory/';SET @backup_command = CONCAT('mysqldump -u username -pPassword MyShop > ', @backup_path, @backup_file_name);PREPARE stmt FROM @backup_command;EXECUTE stmt;DEALLOCATE PREPARE stmt;INSERT INTO backup_logs (backup_name, backup_time) VALUES (@backup_file_name, NOW());END;//DELIMITER ;

                                        数据完整性

                                        定义各表的主键(在建表的时候定义)

                                        -- 定义用户表主键u_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,-- 定义地址表主键a_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,-- 定义商品类别表主键t_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,-- 定义商品表主键p_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,-- 定义购物车表主键c_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,-- 定义订单表主键o_id VARCHAR(64) NOT NULL PRIMARY KEY,-- 定义订单项表主键i_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY

                                        删除用户表时同时删除 地址表表中相关行的行为

                                        -- 删除 user 表的记录时同时删除 address 表中相关行的行为,可以使用 ON DELETE CASCADE 来定义外键约束。ALTER TABLE addressADD CONSTRAINT FK_u_a_fk -- 添加一个名为 FK_u_a_fk 的约束FOREIGN KEY (u_id) -- 该约束是针对 u_id 列的外键约束REFERENCES user (u_id) -- 指定引用的主键表和主键列,这里是 user 表的 u_id 列ON DELETE CASCADE -- 指定在删除关联行时自动删除相关行ON UPDATE CASCADE; -- 指定在更新关联行时自动更新相应行

                                        将类别表删除或修改时,商品表的类别要同步删除或修改

                                        ALTER TABLE productADD CONSTRAINT FK_t_p_fkFOREIGN KEY (t_id)REFERENCES type (t_id)ON DELETE CASCADEON UPDATE CASCADE;

                                        删除或修改用户时,同时删除或修改购物车中与该用户关联的数据

                                        -- 外键约束与用户表 user 的关联ALTER TABLE cartADD CONSTRAINT FK_u_c_fkFOREIGN KEY (u_id)REFERENCES `user`(u_id)ON DELETE CASCADEON UPDATE CASCADE;

                                        删除商品时,同时删除购物车中与该商品关联的数据

                                        -- 外键约束与商品表 product 的关联ALTER TABLE cartADD CONSTRAINT FK_cart_productFOREIGN KEY (p_id)REFERENCES product (p_id)ON DELETE CASCADEON UPDATE CASCADE;

                                        在删除用户时,同时删除与该用户关联的订单数据

                                        -- 添加外键约束与 user 表的关联;可以保证在删除用户时,同时删除与该用户关联的订单数据。ALTER TABLE ordersADD CONSTRAINT FK_u_o_fkFOREIGN KEY (u_id)REFERENCES `user` (u_id)ON DELETE CASCADEON UPDATE CASCADE;

                                        orders与 address 表的关联:在删除或更新关联行时不采取任何动作。

                                        ALTER TABLE ordersADD CONSTRAINT FK_a_o_fkFOREIGN KEY (a_id)REFERENCES address (a_id)ON DELETE NO ACTIONON UPDATE NO ACTION;

                                        实现级联删除或更新。在删除或更新订单时,相关的订单项也会被删除或更新

                                        ALTER TABLE itemADD CONSTRAINT FK_item_ordersFOREIGN KEY (o_id)REFERENCES orders (o_id)ON DELETE CASCADEON UPDATE CASCADE;

                                        item与 product 表的关联,在删除或更新关联行时不采取任何动作限制条件}

                                        ALTER TABLE itemADD CONSTRAINT FK_p_i_fk FOREIGN KEY (p_id)REFERENCES product (p_id)ON DELETE NO ACTIONON UPDATE NO ACTION;

                                        数据更新

                                        插入数据

                                        -- 向 user 表插入虚拟数据INSERT INTO user (u_name, u_password, u_email, u_sex, u_status, u_code, u_role)VALUES('user1', 'password1', 'user1@example.com', '男', 1, 'code1', 1),('user2', 'password2', 'user2@example.com', '女', 1, 'code2', 1),('user3', 'password3', 'user3@example.com', '男', 1, 'code3', 1),('user4', 'password4', 'user4@example.com', '女', 1, 'code4', 1),('user5', 'password5', 'user5@example.com', '男', 0, 'code5', 1),('user6', 'password6', 'user6@example.com', '女', 0, 'code6', 1),('user7', 'password7', 'user7@example.com', '男', 1, 'code7', 1),('user8', 'password8', 'user8@example.com', '女', 1, 'code8', 1),('user9', 'password9', 'user9@example.com', '男', 1, 'code9', 1),('user10', 'password10', 'user10@example.com', '女', 1, 'code10', 1);-- 向 address 表插入虚拟数据INSERT INTO address (u_id, a_name, a_phone, a_detail, a_state)VALUES(1, 'user1', '1234567890', 'City1', 1),(2, 'user2', '9876543210', 'City2', 0),(3, 'user3', '1111111111', 'City3', 1),(4, 'user4', '2222222222', 'City4', 0),(5, 'user5', '3333333333', 'City5', 1),(6, 'user6', '4444444444', 'City6', 0),(7, 'user7', '5555555555', 'City7', 1),(8, 'user8', '6666666666', 'City8', 0),(9, 'user9', '7777777777', 'City9', 1),(10, 'user10', '8888888888', 'City10', 0);-- 商品类别表插入虚拟数据INSERT INTO type (t_name, t_info)VALUES ('电子产品', '包括手机、电脑、平板等电子设备'),('服装', '包括男装、女装、童装等各种服装'),('家居用品', '包括家具、家饰、厨具等家居用品');-- 商品表插入虚拟数据INSERT INTO product (t_id, p_name, p_time, p_image, p_price, p_state, p_info)VALUES (1, 'iPhone 12', '2021-01-01', 'image1.jpg', 999.99, 10, '最新款iPhone手机'),(1, 'MacBook Pro', '2021-02-01', 'image2.jpg', 1999.99, 8, '高性能笔记本电脑'),(2, 'T-shirt', '2021-03-01', 'image3.jpg', 19.99, 5, '简约款T恤'),(2, 'Dress', '2021-04-01', 'image4.jpg', 49.99, 7, '时尚连衣裙'),(3, 'Sofa', '2021-05-01', 'image5.jpg', 599.99, 6, '舒适沙发'),(3, 'Table Lamp', '2021-06-01', 'image6.jpg', 29.99, 4, '台灯'),(1, 'AirPods', '2021-07-01', 'image7.jpg', 149.99, 9, '无线耳机'),(2, 'Jeans', '2021-08-01', 'image8.jpg', 39.99, 6, '经典牛仔裤'),(2, 'Shoes', '2021-09-01', 'image9.jpg', 79.99, 7, '时尚鞋子'),(3, 'Cookware Set', '2021-10-01', 'image10.jpg', 199.99, 8, '厨具套装');

                                        修改数据

                                        -- 更新 address 表中的数据UPDATE address SET a_name = 'newname' WHERE a_id = 1;-- 根据类别ID更新类别名称和描述UPDATE type SET t_name = '数码产品', t_info = '包括手机、电脑、相机等数码设备' WHERE t_id = 1;-- 根据类别名称更新类别描述UPDATE type SET t_info = '包括男装、女装、童装等各种时尚服饰' WHERE t_name = '服装';-- 根据商品ID更新商品名称和描述UPDATE product SET p_name = 'iPhone 13', p_info = '最新款iPhone手机' WHERE p_id = 1;-- 根据商品名称更新商品价格UPDATE product SET p_price = 1099.99 WHERE p_name = 'MacBook Pro';-- 修改购物车中特定用户和商品的数量和小计UPDATE cart SET c_num = 3, c_count = 15.99 WHERE u_id = 2 AND p_id = 1;-- 更新订单状态为已付款UPDATE orders SET o_state = 1 WHERE o_id = 'order1';-- 修改订单项的数量和小计UPDATE item SET i_num = 3, i_count = 29.99 WHERE i_id = 1;

                                        删除数据

                                        -- 删除 user 表中的数据DELETE FROM user WHERE u_id = 1;-- 删除 address 表中的数据DELETE FROM address WHERE a_id = 2;-- 根据类别名称删除类别DELETE FROM type WHERE t_name = '电子产品';-- 根据类别ID删除类别DELETE FROM type WHERE t_id = 1;-- 删除所有商品DELETE FROM product;-- 根据商品名称删除商品DELETE FROM product WHERE p_name = 'iPhone 12';-- 根据商品ID删除商品DELETE FROM product WHERE p_id = 1;-- 删除特定用户的购物车记录DELETE FROM cart WHERE u_id = 1;-- 删除特定商品的购物车记录DELETE FROM cart WHERE p_id = 2;-- 删除订单DELETE FROM orders WHERE o_id = 'order1';-- 删除用户ID为2的所有订单DELETE FROM orders WHERE u_id = 2;-- 删除指定的订单项DELETE FROM item WHERE i_id = 2;

                                        权限管理

                                        由sa给组长授予管理员权限

                                        在这里插入代码片
                                        -- 创建组长账户CREATE USER '组长'@'localhost' IDENTIFIED BY 'password';-- 赋予管理员权限给组长GRANT ALL PRIVILEGES ON *.* TO '组长'@'localhost' WITH GRANT OPTION;

                                        由组长创建项目角色,并授予项目角色相关权限

                                        -- 由组长创建项目角色,并授予项目角色相关权限CREATE ROLE 项目角色;GRANT SELECT, INSERT, UPDATE, DELETE ON MyShop.orders TO 项目角色;

                                        由组长将组员与项目角色捆绑

                                        -- 由组长将组员与项目角色捆绑CREATE USER '组员'@'localhost' IDENTIFIED BY 'password';GRANT SELECT, INSERT, UPDATE, DELETE ON MyShop.orders TO '组员'@'localhost';

                                        由组长给组员授予登录本组项目数据库的权限

                                        -- 给予组员登录本组项目数据库的权限GRANT USAGE ON *.* TO '组员'@'localhost';

                                        数据库备份与恢复

                                        数据库备份

                                        要在 MySQL 中备份数据库,可以使用 mysqldump 命令行工具。

                                        -- 备份整个数据库:mysqldump -u root -pAa2803345646 MyShop > backup.sql

                                        数据库恢复

                                        mysql -u root -p MyShop  

                                        前端界面设计

                                        项目代码下载

                                        下载:代码与实验报告(包括平时作业的)