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

news2024/7/4 10:16:10

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

一、功能需求

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

二、数据库概念结构设计

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.coloradmin.cn/o/1886373.html

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

相关文章

移动端 UI 风格简约而不凡

移动端 UI 风格简约而不凡

vue 中使用element-ui实现锚点定位表单

效果图&#xff1a; 代码&#xff1a; html代码&#xff1a; <div class"content-left"><el-tabs :tab-position"left" tab-click"goAnchor"><el-tab-pane v-for"(item,index) in anchorNameList"v-anchor-scroll:ke…

HTTP2.0如何优化HTTP1.1

目录 HTTP1.1什么缺点 如何解决头部压缩 静态字典 动态字典 如何解决队头阻塞 Stream 排序 服务器主动推送资源 HTTP1.1什么缺点 队头阻塞问题 同一连接只能在完成一个 HTTP 事务&#xff08;请求和响应&#xff09;后&#xff0c;才能处理下一个事务&#xff1b;(…

力扣每日一题 7/2 数学、数论、数组/双指针

博客主页&#xff1a;誓则盟约系列专栏&#xff1a;IT竞赛 专栏关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ 3115.质数的最大距离【中等】 题目&#xff1a; 给你一个整数数组 nums。…

视频字幕提取在线工具有哪些?总结5个字幕提取工具

平时在沉浸式追剧的时候&#xff0c;我们常常都会被影视剧中的各种金句爆梗而逗得开怀大笑~而真正要用到时候却总是一片头脑空白。其实要记住它们最好的办法便是将其提取留档下来&#xff0c;每次有需要的时候打开就能一下子回顾到~ 今天就来带大家盘一盘视频字幕提取的软件好…

[C++]——同步异步日志系统(1)

同步异步日志系统 一、项⽬介绍二、开发环境三、核心技术四、环境搭建五、日志系统介绍5.1 为什么需要日志系统5.2 日志系统技术实现5.2.1 同步写日志5.2.2 异步写日志 日志系统&#xff1a; 日志&#xff1a;程序在运行过程中&#xff0c;用来记录程序运行状态信息。 作用&…

图片转pdf,图片转pdf在线转换,在线图片转pdf,图片转pdf格式怎么弄

在数字化时代&#xff0c;图片和PDF文件成为了我们日常生活中不可或缺的元素。有时候&#xff0c;我们需要将图片转换成PDF格式以便更好地分享、存储或打印。那么&#xff0c;图片格式怎么转换成PDF呢&#xff1f;本文将为您详细介绍简单实用的转换方法。 方法一、使用pdf转换软…

Python容器 之 字典--字典的常用操作方法

1.增加和修改 字典[键] 值 键 存在, 修改 键 不存在, 添加 # 定义非空字典, 姓名, 年龄, 身高, 性别 my_dict {"name": "小明", "age": 18, "height": 1.78, "isMen": True} print(my_dict) # {name: 小明, age: 18, h…

【知识】DGL中graph默认的稀疏矩阵格式和coo格式不对的坑

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你&#xff0c;欢迎[点赞、收藏、关注]哦~ 目录 先给结论 源码解读 代码验证 网上没找到相关的讨论&#xff0c;因此只能从源码上一步步查。 先给结论 对于自己使用dgl.graph接口创建的图&am…

【HTML入门】列表与表格

文章目录 前言一、列表与表格是什么&#xff1f;列表表格 二、使用标签列表标签表格标签 三、组合情况列表的组合表格的组合 四、示例代码总结 好的&#xff0c;以下是一个关于HTML列表与表格的文章示例&#xff1a; 前言 随着网页开发的普及&#xff0c;HTML成为了构建网页的…

LVS FILTER UNUSED OPTION

我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧? 拾陆楼知识星球入口 过滤一些版图与spice网表对不上的器件。 一般后端遇不到这个问题,因为通常是需要写到网表中的decap没有写出来造成的,如下图。

来不及啦!怎样找回删除的照片,2个解决方案【安卓通用】

一不小心手滑&#xff0c;手机里那些珍贵的照片竟然全都被删了&#xff01;现在心急如焚&#xff0c;怎样找回删除的照片呢&#xff1f;别担心&#xff0c;小编我这就为你带来2个快速有效的解决方案&#xff0c;让你在分分钟找回那些失去的照片&#xff01;快来学习一下吧&…

Java语法系列 小白入门参考资料 方法

方法的概念及使用 方法概念 方法出现的原因 在编程中&#xff0c;某段功能的代码可能频繁使用到&#xff0c;如果在每个位置都重新实现一遍&#xff0c;会&#xff1a; 1. 使程序变得繁琐 2. 开发效率低下&#xff0c;做了大量重复性的工作 3. 不利于维护&#xff0c;需要…

自动驾驶水泥搅拌车在梁场的应用(下)

自动驾驶水泥搅拌车在梁场的应用&#xff08;下&#xff09; 北京渡众机器人科技有限公司的自动驾驶水泥搅拌车在梁场&#xff08;也称为预制梁场&#xff09;的应用可以带来多方面的优势和效益&#xff1a; 1. 自动化搅拌和运输 在梁场中&#xff0c;通常需要大量的混凝土搅…

探索大型语言模型自动评估 LLM 输出长句准确性的方法

LLM现在能够自动评估较长文本中的事实真实性 源码地址&#xff1a;https://github.com/google-deepmind/long-form-factuality 论文地址&#xff1a;https://arxiv.org/pdf/2403.18802.pdf 这篇论文是关于谷歌DeepMind的&#xff0c;提出了新的数据集、评估方法和衡量标准&am…

零基础学习MySQL---MySQL入门

顾得泉&#xff1a;个人主页 个人专栏&#xff1a;《Linux操作系统》 《C从入门到精通》 《LeedCode刷题》 键盘敲烂&#xff0c;年薪百万&#xff01; 一、什么是数据库 问&#xff1a;存储数据用文件就可以了&#xff0c;为什么还要弄个数据库呢&#xff1f; 这就不得不提…

收集了很久的全网好用的磁力搜索站列表分享

之前找资源的时候&#xff0c;收集了一波国内外大部分主流的磁力链接搜索站点。每一个站可能都有对应的优缺点&#xff0c;多试试&#xff0c;就能知道自己要哪个了。 全网好用的磁力链接 大部分的时候&#xff0c;我们用国内的就可以了&#xff0c;速度块&#xff0c;而且不…

Free Pascal语言基础学习:定义变量、数据类型、循环语句、case语句、条件判断、with语句、运算符

Pascal是一种结构化编程语言&#xff0c;而Free Pascal作为其现代编译器&#xff0c;不仅支持跨多种操作系统和处理器架构&#xff0c;还提供了高效的内存使用和函数重载等先进功能。Free Pascal继承了Pascal语言的核心特性&#xff0c;同时进行了扩展和优化&#xff0c;使其成…

操作系统真象还原:编写硬盘驱动程序

第13章-编写硬盘驱动程序 这是一个网站有所有小节的代码实现&#xff0c;同时也包含了Bochs等文件 13.1 硬盘及分区表 13.1.1 创建从盘及获取安装的磁盘数 要实现文件系统&#xff0c;必须先有个磁盘介质&#xff0c;虽然咱们己经有个虚拟磁盘 hd60M.img&#xff0c;但它只…

理解MySQL存储引擎:掌握数据存储与管理

在工作或学习过程中&#xff0c;作为一名数据库管理员或开发者&#xff0c;我们常常需处理大量数据&#xff0c;同时确保数据的可靠性与高效性。MySQL作为最受欢迎的开源数据库之一&#xff0c;其强大的性能和灵活性广为人知。而在MySQL背后的存储引擎则起到了至关重要的作用。…