广州大学《软件工程》实验报告二——数据库设计

广州大学学生实验报告(二)

开课学院及实验室:

学院

年级/专业/班

姓名

学号

实验课程名称

软件工程导论实验

成绩

实验项目名称

数据库设计

指导老师

一、实验目的

掌握数据库建模技术,加深学生对数据库原理的理解;

二、实验器材

  • 计算机一台;
  • 支持数据库建模的多款软件,可自由选择,不做限定。

三、实验内容

本实验需要完成包括:

  1. 实现概念结构设计,重点绘制ER图;
    1. 收集资料

网络书城系统的主要业务功能有:在线浏览图书、查询图书、登录账号、注册账号、修改个人信息、查询浏览记录、购买图书、生成订单、支付订单、查询订单、处理订单、修改订单、发布图书信息、修改图书信息、更新库存信息、退换货处理等。

    1. 分析整理

将收集到的资料进行分类,例如图书信息(图书号、图书类型、图书数量、图书价格)、用户信息(用户账号、密码、微信号、QQ号、收获地址、电话号、用户昵称、个人简介)、商家信息(商家号、商家地址)等。

    1. E-R模型数据项

根据需求分析,可以得出以下数据项:

  • 用户: 用户id、QQ号、微信号、电话号、收货地址、用户姓名、个人简介。 

  • 账号:账号id、账号昵称、账号密码、账号状态、注册时间、最后登录时间。

  • 游客:游客昵称。

  • 商家:商家号、商家账号密码、商家昵称、商家地址。

  • 客服:客服账号、客服账号密码、客服昵称。

  • 物流公司:物流公司号、物流公司地址。

  • 图书:图书号、图书型号、商品名称、图书价格、出版社、作者。

  • 图书浏览记录:浏览时间、浏览内容。

  • 订单:订单号、下单时间、收货地址、总计、支付类型。

  • 订单项:订单项号、购买价格。

  • 送货单:送货单号、发货时间、发货地址、收货地址、送货状态。

    1. 建立E-R模型

  1. 实现逻辑结构设计,重点设计数据库表以及绘制数据库表间的关系图。
  1. 数据库表内实体间的关系
  • 一个游客可以查询多本图书,每本图书可以被多个游客所查询,所以游客实体与图书实体的关系是m:n。
  • 一个游客只能注册一个账号,一个账号仅能由一个游客注册,所以游客实体与账号实体之间的关系是1:1。
  • 一个用户可以查询多本图书,每本图书可以被多个用户所查询,所以用户实体与图书实体的关系是m:n。
  • 一个用户可以有多个图书浏览记录,每个浏览记录仅属于某个用户,所以用户实体与图书浏览记录实体的关系是1:n。
  • 用户只能拥有一个账号,一个账号只属于一个用户,所以用户实体与账号实体之间的关系是1:1。
  • 用户可以下多个订单,每个订单仅由一个用户所下单,所以用户实体和订单实体之间的关系为1:n。
  • 订单可以拆分为多个订单项,每个订单项只对应一个订单,所以订单实体和订单项实体之间的关系为1:n。
  • 订单拆分后为分为多个送货单,每个送货单项只对应一个订单,所以订单实体和送货单实体之间的关系为1:n。
  • 每个送货单中至少包含一本图书,每本图书只对应一个送货单,所以送货单实体和图书实体之间的关系为1:n。
  • 一个送货单中包含多个订单项,每个订单项只对应于一个送货单,所以送货单实体与订单项实体之间的关系为1:n。
  • 一个物流公司至少承接一个送货单,每个送货单只能被一个物流公司承接,所以物流公司实体与送货单实体之间的关系为1:n。
  • 一个客服可以查询多个订单,每个订单可以被多个客服查询,故订单实体与客服实体之间的关系为m:n。
  • 一个商家可以发布多本图书,每本图书仅可以由一个商家发布,故商家实体与图书实体之间的关系为1:n。

  1. 数据库表

用户表记录用户信息,其中主键为用户id,生成采用自动增长;用户昵称可以自定义创建。

账号表记录账号信息,其中主键为账号id,生成采用自动增长;账号昵称可以自定义创建,但要求唯一;用户名和密码是用户身份验证的两个必要条件,所以要求非空约束;Acount_status表示账号状态:0:表示冻结、1:表示可用。

游客表记录游客信息,主键为游客号,生成采用自动增长。

商家表记录商家信息,其中主键为商家号,生成采用自动增长;商家昵称可以自定义创建,但要求唯一;商家号和商家账号密码是商家身份验证的两个必要条件,所以要求非空约束。

客服表记录客服信息,其中主键为客服账号,生成采用自动增长;客服昵称可以自定义创建,但要求唯一;客服账号和客服账号密码是客服身份验证的两个必要条件,所以要求非空约束。

物流公司表记录物流公司信息,其中主键为物流公司号,生成采用自动增长。

图书表记录图书信息,其中主键为图书号,生成采用自动增长;图书型号也采用自动增长;图书名称和图书型号均要求非空约束。

图书浏览记录表记录图书浏览信息,其中主键为图书浏览记录号,生成采用自动增长;浏览时间和浏览内容均要求非空约束。

订单表记录订单信息,其中主键为订单号,生成采用自动增长;下单时间和支付类型要求非空约束;支付类型:1表示银行卡支付,2表示微信支付,3表示支付宝支付。

订单项表记录订单中的一件商品的信息;其中主键为订单项号,生成采用自动增长,购买价格要求非空。

送货单表记录送货单的信息;其中主键为送货单号,生成采用自动增长;送货状态用Transport_status表示:0:表示未送达,1:表示已送达;发货时间要求非空。

  1. 数据库表间的关系图

概念模型

物理模型

四、实验感想

1、概念模型转物理模型时,遇到如下错误:

错误一:existence of identifiers ,即主体没有关键字错误。也就是,图书浏览记录和游客表没有主键。

解决办法:双击报错提示,将关键字(主键)补上。

错误二:entity attribute name uniqueness,即主体中的属性名重复。

解决办法:将不同表中的属性名区别开。

错误三:existence of entity attribute,实体的关键字属性有问题。

解决办法,将订单项的关键字(主键)属性勾选上。

上述出现错误根本的原因在于,我们对数据库表的设计还没有熟悉掌握,在设计过程中某些数据表的主键、关键字命名设计不当,最终导致错误。

2、在设计过程中我们提出了疑问,是不是一个变量在多表中出现时,它就不能作为主键?随着实验的进行,我们逐渐领悟到了,答案为:对的。所以我们需要删除别的表中的图书号,别的表是图书号无需自己添加,概念模型转换为物理模型后,会为这些表自动添加图书号作为外键。

  • 23
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值