MySQL数据库设计作业 ——《网上书店系统》数据库设计实验报告

数据库设计作业——《网上书店系统》数据库设计

一、功能需求

  • 普通用户:可以进行最基础的登陆操作,可浏览图书、按类别查询图书、查看 图书的详细信息,还可以注册成为会员。
  • 会员:需要填写详细信息(真实姓名、性别、手机号、地址、邮箱等),可浏览图书、按类别查询图书、查看图书的详细信息,在此基础上,还可以订购图书、生成订单、查看订单。
  • 管理员:可以浏览图书、按类别查询图书、查看图书的详细信息,需要查看订单、处理订单进行发货处理,同时可以查看、修改个人信息,更新图书信息,如增加、删除图书、更新库存量、修改商品名称、增加图书的属性列等。
  • 图书:需要管理员进行编排,按图书编号、书名、图书类型、作者、出版社、出版日期、定价、折扣、库存数量等信息分类。

二、数据库概念结构设计

1. 概念结构设计(E-R图)

概念结构设计(E-R图)

2. 逻辑结构设计(数据库表、关系模式)
  • 普通用户(账号 ,密码)
  • 会员(账号,密码,会员名,注册时间,手机号,邮箱,地址,性别,真实姓名)
  • 注册(账号) 外键:账号
  • 管理员(管理员编号,管理员密码,管理员名称,邮箱,手机号)
  • 订单(订单编号,会员账号,下单日期,订购数量,送货方式,支付方式,卖出 总价,收货地址,收货人联系方式,收货人姓名,发货日期,负责该订单的 管理员(编号))
  • 订购(账号,订单编号) 外键:账号,订单编号
  • 处理(管理员编号订单编号) 外键:管理员编号,订单编号
  • 图书(图书编号,书名,图书类型,作者,出版社,出版日期,定价,折扣,库 存数量,会员账号) 外键:会员账号
  • 订单详情(订单编号图书编号,订购数量,订购价格) 外键:订单编号,图书编号
规范化分析:
  • 普通用户关系中账号为主键,其中函数依赖有:账号—>密码
    因为在普通用户关系中不存在非主属性对码的部分函数依赖和传递函数依赖,所以普通用户关系是属于3NF
  • 会员关系中账号为主键,其中函数依赖有:账号—>密码,账号—>会员名,账号—>注册时间,账号—>手机号,账号—>邮箱,账号—>地址,账号—>性别,账号—>真实姓名
    因为在会员关系中不存在非主属性对码的部分函数依赖和传递函数依赖,所以会员关系是属于3NF
  • 管理员关系中管理员编号为主键,其中函数依赖有:管理员编号—>管理员密码,管理员编号—>管理员名称,管理员编号—>邮箱,管理员编号—>手机号
    因为在管理员关系中不存在非主属性对码的部分函数依赖和传递函数依赖,所以管理员关系是属于3NF
  • 订单关系中订单编号为主键,其中函数依赖有:订单编号—>会员账号,订单编号—>下单时间,订单编号—>订购总数,订单编号—>送货方式,订单编号—>支付方式,订单编号—>卖出总价,订单编号—>收货地址,订单编号—>收货人联系方式,订单编号—>收货人姓名,订单编号—>发货日期,订单编号—>负责该订单的管理员(编号)
    因为在订单关系中不存在非主属性对码的部分函数依赖和传递函数依赖,所以订单关系是属于3NF
  • 图书关系中图书编号为主键,其中函数依赖有:图书编号—>书名,图书编号—>图书类型,图书编号—>作者,图书编号—>出版社,图书编号—>出版日期,图书编号—>定价,图书编号—>折扣,图书编号—>库存数量
    因为在图书关系中不存在非主属性对码的部分函数依赖和传递函数依赖,所以图书关系是属于3NF
3. 建立和管理基本表
表1 会员表
属性字段名数据类型是否为空/约束条件
账号ACCOUNT_NUMBERCHAR(20)主键
密码PASSWORDVARCHAR(50)非空
地址ADDRESSVARCHAR(50)可以空
会员名MEMBER_IDVARCHAR(50)可以空
注册时间REGTIMEVARCHAR(50)可以空
手机号PHONE_NUMBERVARCHAR(50)可以空
邮箱POSTBOXVARCHAR(50)可以空
性别SEXVARCHAR(8)可以空
真实姓名NAMEVARCHAR(50)可以空
表2 管理员表
属性字段名数据类型是否为空/约束条件
管理员编号ADMINISTRATOR_IDCHAR(20)主键
管理员密码AD_CODECHAR(30)非空
管理员名称AD_NAMEVARCHAR(20)非空
邮箱E_MAILVARCHAR(50)可以空
手机号TELEPHONEVARCHAR(20)可以空
表3 订单表
属性字段名数据类型是否为空/约束条件
订单编号ORDER_IDCHAR(20)主键
会员账号NUMBERCHAR(30)非空
下单日期DATEVARCHAR(20)可以空
订购总数SUMINT非空
送货方式WAYVARCHAR(20)非空
支付方式PAYMENT_WAYVARCHAR(20)非空
卖出总价TOTAL_PRICEFLOAT可以空
收货地址SHIPPING_ADDVARCHAR(50)非空
收货人联系方式CONTACTVARCHAR(20)非空
收货人姓名CONSIGNEEVARCHAR(50)非空
发货日期ISSUANCE_DATEVARCHAR(20)可以空
负责该订单的管理员ADMINISTRATOR_IDVARCHAR(20)非空
表4 图书表
属性字段名数据类型是否为空/约束条件
图书编号BOOK_IDCHAR(20)主键
书名BOOK_NAMECHAR(30)非空
图书类型TYPEVARCHAR(20)可以空
作者AUTHORVARCHAR(20)非空
出版社PRESSVARCHAR(50)非空
出版日期PRESS_DATEVARCHAR(20)非空
定价PRICEFLOAT非空
折扣DISCOUNTFLOAT非空
库存数量STOCK_NUMINT可以空
会员账号MEM_NUMCHAR(20)非空
4. 使用SQL语句建立基本表
CREATE TABLE MEMBER
(ACCOUNT_NUMBER CHAR(20) NOT NULL,PASSWORD VARCHAR(50) NOT NULL,ADDRESS	VARCHAR(50),MEMBER_ID VARCHAR(50),REGTIME	VARCHAR(50),PHONE_NUMBER VARCHAR(50),POSTBOX	VARCHAR(50),SEX	VARCHAR(8),NAME VARCHAR(50)
)CREATE TABLE ADMINISTRATOR
(ADMINISTRATOR_ID CHAR(20) NOT NULL,AD_CODE	CHAR(30) NOT NULL,AD_NAME	VARCHAR(20) NOT NULL,E_MAIL VARCHAR(50),TELEPHONE VARCHAR(20)
)CREATE TABLE ORDER_SHOW
(ORDER_ID CHAR(20) NOT NULL,NUMBER CHAR(30) NOT NULL,DATE VARCHAR(20),SUM	INT NOT NULL,WAY	VARCHAR(20) NOT NULL,PAYMENT_WAY	VARCHAR(20) NOT NULL,TOTAL_PRICE	VARCHAR(20),SHIPPING_ADD VARCHAR(50) NOT NULL,CONTACT	VARCHAR(20) NOT NULL,CONSIGNEE VARCHAR(50) NOT NULL,ISSUANCE_DATE VARCHAR(20),ADMINISTRATOR_ID VARCHAR(20) NOT NULL
)CREATE TABLE BOOK
(BOOK_ID	CHAR(20) NOT NULL,BOOK_NAME CHAR(30) NOT NULL,TYPE VARCHAR(20),AUTHOR VARCHAR(20) NOT NULL,PRESS VARCHAR(50) NOT NULL,PRESS_DATE VARCHAR(20) NOT NULL,PRICE FLOAT NOT NULL,DISCOUNT FLOAT NOT NULL,STOCK_NUM INT,MEM_NUM CHAR(20) NOT NULL
)
5. 管理基本表
--(1) 向图书表增加“页数”列,其数据类型是整数型
ALTER TABLE BOOK ADD B_PAGE INT--(2) 将“图书表”中的“页数”数据类型改成短整型
ALTER TABLE BOOK ALTER COLUMN B_PAGE SMALLINT--(3) 增加“图书表”中“页数”取值必须大于0的约束条件
ALTER TABLE BOOK ADD CONSTRAINT CK_PAGE CHECK(B_PAGE > 0)--(4) 删除“图书表”中的页数列
ALTER TABLE BOOK DROP CONSTRAINT CK_PAGE--(5) 删除“图书表”
DROP TABLE BOOK
6. 建立和管理视图
--建立一个“图书类别”为“计算机”的视图
GO
CREATE VIEW COMPUTER AS SELECT * FROM BOOK WHERE TYPE = '计算机'
GO
7. 建立和管理索引
--在会员表上为姓名建立索引
CREATE UNIQUE INDEX MEMBER_NAME ON MEMBER(NAME)
8. 数据查询
--(1)查询“张玲”的会员信息
SELECT * FROM MEMBER WHERE NAME = '张玲'--(2)查询图书“中国通史”的价格
SELECT PRICE FROM BOOK WHERE BOOK_NAME = '中国通史'--(3)查询网上书店系统中每种数的库存数量,并按照库存数量由多到少排列
SELECT STOCK_NUM FROM BOOK ORDER BY STOCK_NUM DESC--(4)查询“陈东光”订购图书的订单情况
SELECT * FROM ORDER_SHOW WHERE CONSIGNEE = '陈东光'--(5)列出账号为“jtxia”的会员所订购的所有图书信息
SELECT * FROM BOOK WHERE MEM_NUM = 'jtxia' --(6)列出“英语初级听力(学生用书)”图书的订购情况,按照订购数量由大到小降序排列
SELECT * FROM ORDER_SHOW,BOOK WHERE ORDER_SHOW.NUMBER = MEM_NUM AND BOOK_NAME = '英语初级听力(学生用书)' ORDER BY SUM DESC--(7)查询订单数位列前三的会员信息
SELECT * FROM MEMBER WHERE NAME IN (SELECT TOP 3 NAME FROM ORDER_SHOW,MEMBER WHERE ACCOUNT_NUMBER = NUMBER GROUP BY NAME ORDER BY SUM(ORDER_ID))--(8)查询订购过“英语初级听力”,或者“高等数学”的会员账号和姓名
SELECT ACCOUNT_NUMBER,NAME FROM MEMBER,ORDER_SHOW,BOOK WHERE MEMBER.ACCOUNT_NUMBER = ORDER_SHOW.NUMBER AND ORDER_SHOW.NUMBER = BOOK.MEM_NUM AND BOOK_NAME = '英语初级听力(学生用书)' OR BOOK_NAME = '高等数学'--(9)统计会员所有订单的订购总价
SELECT SUM(TOTAL_PRICE) FROM ORDER_SHOW--(10)查询订购总价大于200的会员的账号
SELECT NUMBER FROM ORDER_SHOW,MEMBER WHERE ACCOUNT_NUMBER = NUMBER GROUP BY NUMBER HAVING SUM(TOTAL_PRICE) > 200
9. 数据更新
INSERT INTO MEMBER VALUES ('jtxia','123456','河北省廊坊市','@~@','2020-2-1','12345678912','123@qq.com','女','张玲')--(1)书店新进一种图书,即向图书表中增加一种新的图书,ISBN号为9787302164784,书名为软件工程导论(第5版),作者为张海潘,出版社为清华大学出版社,定价为35,折扣为8,图书类别为计算机,图书概况为“本书可作为高等院校软件工程课程的教材或教学参考书”,库存量为50
INSERT INTO BOOK VALUES ('9787302164784','软件工程导论(第5版)','计算机','张海潘','清华大学出版社','2014-3-8',35.0,0.80,50,'jskdb')--(2)书店价格调整,将“软件工程导论(第5版)”图书的“折扣”更新为7.5折
UPDATE BOOK SET DISCOUNT = 0.75 WHERE BOOK_NAME = '软件工程导论(第5版)'--(3)会员地址变更,将会员账号为“jtxia”的地址更新为“天津大学”
UPDATE MEMBER SET ADDRESS = '天津大学' WHERE ACCOUNT_NUMBER = 'jtxia'--(4)书店进货,将所有图书的库存量增加10
UPDATE BOOK SET STOCK_NUM = STOCK_NUM + 10--(5)活动促销,将“计算机”类图书的折扣全部减1(多打一折)
UPDATE BOOK SET DISCOUNT = DISCOUNT - 0.1 WHERE TYPE = '计算机'--(6)由于图书下架,删除图书“软件工程导论(第5版)”
DELETE FROM BOOK WHERE BOOK_NAME = '软件工程导论(第5版)'
10. 数据库维护
数据库备份

SQL Server 2008提供了4种不同的备份方式,分别是:①完整备份,备份整个数据库的所有内容,包括事务日志。②差异备份,它是完整备份的补充,差异备份只备份上次完整备份后更改的数据。③事务日志备份,事务日志备份只备份事务日志里的内容。④数据库文件和文件组备份,如果在创建数据库时,为数据库创建了多个数据库文件或文件组,可以使用该备份方法。
常见的数据库备份you两种方法:一种是利用Management Studio进行数据库备份;另一种时利用SQL语句进行备份。

  • 利用Management Studio进行数据库备份 在备份数据库之前,首先需要新建设备以用于存储备份的数据库。
    新建备份设备的步骤为:打开“对象资源管理器”,点击“服务器对象”,右击“备份设备”,选择“新建备份设备”,在打开的“备份设备”窗口中,输入备份设备的名称“网上书店系统_bak”,在“文件”路径处输入所属路径,单击确定,即可在左侧的对象资源管理器中看到新建的备份文件“网上书店系统_bal”。
    备份数据库:打开“服务器对象”,右击“网上书店系统_bak”这个新建立的备份设备,单击“备份数据库”,在打开的备份数据库窗口中,选择“网上书店系统”数据库、备份类型为“完整”、备份集名称默认为“网上书店系统-完整
    数据库 备份”,单击“确定”按钮即可看到备份数据库成功的提示对话框。
  • 使用SQL语句备份数据库
    1)在新建查询窗口中,输入下面的语句创建备份设备。 SP_ADDUMPDEVICE
    ‘disk’,’网上书店系统_bak’,’文件路径’
    2)在新建查询窗口中,输入下面的语句备份数据库。 BACKUP DATABASS
    网上书店系统 TO DISK = ‘网上书店系统_bak’
    3)单击工具栏上的“!执行(X)”按钮,可以看到消息窗口提示备份成功的消息。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/38837.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

什么是yum源?如何对其进行配置?

哈喽,大家好呀!这里是码农后端。今天来聊一聊Linux下的yum源及其配置相关的内容。简单来说,yum源就相当于一个管理软件的工具,可以想象成一个很大的仓库,里面存放着各种我们所需要的软件包及其依赖。 一、Linux下软件包…

VRPTW(MATLAB):北极海鹦优化(APO)算法求解带时间窗的车辆路径问题VRPTW(提供MATLAB代码)

详细介绍 VRPTW(MATLAB):北极海鹦优化(Arctic puffin optimization,APO)算法求解带时间窗的车辆路径问题VRPTW(提供MATLAB代码)-CSDN博客 ********************************求解结果…

电源管理芯片PMIC的安全策略

1.概述 PMIC作为系统的电源管理模块,其输入电压一般会比较高,为保证芯片自身的安全,PMIC芯片会有独立的安全域,和功能域完全隔离,拥有独立的电压和电流输入,独立的晶振模块,内部运行监控状态机…

【代码随想录_Day23】122. 买卖股票的最佳时机 II 55. 跳跃游戏 45.跳跃游戏II 1005.K次取反后最大化的数组和

Day23 OK,今日份的打卡!第二十三天 以下是今日份的总结买卖股票的最佳时机 II跳跃游戏跳跃游戏IIK次取反后最大化的数组和 以下是今日份的总结 122 买卖股票的最佳时机 II 55 跳跃游戏 45 跳跃游戏II 1005 K次取反后最大化的数组和 今天的题目难度不低…

MySQL实战-4 | 深入浅出索引(上)(下)

什么是数据库索引,索引又是如何工作的呢? 一句话简单来说,索引的出现其实就是为了提高数据查询的效率,就像书的目录一样。一本 500 页的书,如果你想快速找到其中的某一个知识点,在不借助目录的情况下&…

【AI工具】-GPU算力租赁平台介绍

目录 1. AWS(亚马逊云服务) 2. Google Cloud Platform (GCP) 3. Microsoft Azure 4. 阿里云 5. 腾讯云 6. 派欧算力云(PPIO) 7. Lambda Labs 8. 猿界算力 9. AutoDL算力云(视拓云) 10. 极链AI云 …

试用笔记之-免费的汇通餐饮管理软件

首先下载免费的汇通餐饮管理软件: http://www.htsoft.com.cn/download/htcanyin.exe 安装后的图标 登录软件,默认没有密码 汇通餐饮管理软件主界面 汇通餐饮软件前台系统 点菜

使用 Java Swing 和 XChart 创建多种图表

在现代应用程序开发中,数据可视化是一个关键部分。本文将介绍如何使用 Java Swing 和 XChart 库创建各种类型的图表。XChart 是一个轻量级的图表库,支持多种类型的图表,非常适合在 Java 应用中进行快速的图表绘制。 1、环境配置 在开始之前&…

关于正负样本不均衡对树模型feature importance的影响

正负样本不平衡确实可能会影响决策树模型(包括随机森林和梯度提升树等树模型)中的特征重要性评估。这是因为特征重要性的计算通常基于模型内部节点分裂所带来的信息增益或基尼不纯度减少。 在不平衡的数据集中,模型可能会偏向于频繁选择那些…

PSINS中,avp的解读

PSINS中的AVP PSINS工具箱里面的trj.avp、trj.avp0等中的avp指的是姿态(attitude)、速度(velocity)和位置(position),最后加一个时间戳t: avp[att; vn; pos; t]。 姿态 姿态的构成…

imx6ull/linux应用编程学习(7)在LCD上显示文字

在linux中,确实可以像裸机一样自己取模、自己写函数打点显示,但是效率很低,不能满足多文字显示,在Linux 系统中, 字体文件通常会放在/usr/share/fonts 目录下,有了字体文件之后,我们就不需要再对…

X86 +PC104+支持WinCE5.0,WinCE6.0,DOS,WinXP, QNX等操作系统,工业控制数据采集核心模块板卡定制

CPU 模块 是一款基于RDC 3306的SOM Express模块。RDC 3306这款X86架构的CPU是一款性能高、稳定性强的处理器。 它是一款灵活精巧的主板(尺寸为91.8mm68.6mm),可以灵活的运用于用户的底板,节约开发成本。模块的接插件使用插针形式…

人工智能在音乐创作中的双刃剑:创新与挑战

AI在创造还是毁掉音乐? 简介 最近一个月,轮番上线的音乐大模型,一举将素人生产音乐的门槛降到了最低,并掀起了音乐圈会不会被AI彻底颠覆的讨论。短暂的兴奋后,AI产品的版权归属于谁,创意产业要如何在AI的阴…

pom文件-微服务项目结构

一、微服务项目结构 my-microservices-project/ ├── pom.xml <!-- 父模块的pom.xml --> ├── ry-system/ │ ├── pom.xml <!-- 子模块ry-system的pom.xml --> │ └── src/main/java/com/example/rysystem/ │ └── RySystemApplication.…

数据类型

数据类型 注意&#xff1a;每个字段都必须设置数据类型 整数类型 tinyint - 1字节 - 应用场景&#xff1a;存储状态码 int - 4字节 - 应用场景&#xff1a;没有特殊要求&#xff0c;一般使用int bigint - 8字节 - 应用场景&#xff1a;存储极大的整数 CREATE TABLE user (use…

Elasticsearch8.x Spring Data and Spring Boot 3 尝鲜

在本教程中,我们将通过实际操作和实用的方式,探索使用 Spring Boot 进行 Elasticsearch 的基础知识。我们将学习如何使用 Spring Data Elasticsearch 模块创建索引、进行 CRUD 操作、搜索和查询 Elasticsearch 文档。我们还将看看如何在我们的 Spring 应用程序中记录 Elastic…

全网最全的TTS模型汇总,电商人、自媒体人狂喜

近日TTS语音模型在AI圈内热度不小&#xff0c;今天小编就来给大家做了个TTS模型汇总&#xff01; GPT-SoVITS&#xff08;AI 卖货主播大模型Streamer-Sales销冠用的TTS模型&#xff09; 模型简介&#xff1a;支持英语、日语和中文&#xff0c;零样本文本到语音&#xff08;TT…

【INTEL(ALTERA)】Nios II软件开发人员手册中设计位置的错误示例

目录 说明 解决方法 说明 Nios II软件开发人员手册正确无误 请参阅 Nios 中包含的Nios II硬件设计示例 II 嵌入式设计套件 &#xff08;EDS&#xff09;。提供设计示例 设计上 Altera网站的示例页面。 Nios II软件开发人员手册正确无误 请参阅 创建本应用程序和创建本 bsp …

Python UUID模块:深入理解与使用技巧

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…