database-design-theory

database-design-theory

Charles Lv7

Tradereads系统设计报告

一、系统需求分析

1.1 需求分析

我们小组根据北航校园中经常出现的群内二手书交易缺乏平台的情况启发,决定设计一款线上的二手书交易平台,这类电子商务交易平台实现了用户可以同时作为买家和卖家,交互更加便利,本产品支持订单、购物车、评价等功能,具体设计如下

1.1.1 用户功能

  • 用户注册
    • 提供手机号,用户名,密码等
  • 用户登录
    • 提供手机号,密码;若信息不正确,则会报错
  • 用户登出
  • 展示个人信息(用户名,电话,购买地址,支付方式,用户权限身份)
  • 更改个人信息(用户名,密码,购买地址)
  • 管理自己销售的商品
    • 新增商品
    • 更改书籍的库存、价格、发货地址
    • 删除书籍
  • 查看自己的购买订单
  • 管理自己的销售订单
    • 更改订单状态(“待支付”, “待发货”, “待收货”, “已完成”)
    • 可根据关键词搜索想看的销售订单
  • 钱包功能
    • 查看自己的钱包余额
    • 进行钱包充值
    • 修改支付方式
  • 管理关注列表
    • 查看关注的用户的简要信息
    • 取消关注
    • 查看用户个人主页

1.1.2 商品中心功能

  • 展示商品信息(各个商品的卖家、价格、书名、发货地址、出版社、类型)
    • 选择想要的商品数量
    • 加入购物车
  • 搜索功能(根据关键词搜索相应商品)
  • 筛选功能(根据价格、好评率、评论数、类型等进行降序 $or$ 升序筛选)
  • 所有商品加入购物车
  • 选择显示全部商品 $or$ 已关注商品
  • 查看商品详情页、
  • 可发布商品
  • 可查看类别视图

1.1.3 商品详情页功能

  • 显示商品详细信息(各个商品的卖家、价格、书名、发货地址、出版社、类型)
  • 商品加入购物车(可选择数量)
  • 购买商品(可选择数量)
  • 可关注商品对应卖家,跳转到卖家中心
  • 显示该商品评论
  • 给商品评分,添加评论

1.1.4 购物车功能

  • 展示购物车信息(各个商品的卖家、价格、书名、发货地址、出版社、类型、加入购物车时间)
  • 展示商品总额
  • 购买购物车的商品

1.1.5 公告功能

  • 查看公告
    • 可查看管理员发布的公告
    • 买家可查看关注的卖家对于商品的修改(点击可进入相应页面查看商品)
    • 卖家可查看自己买家对于订单的修改
  • 发布公告

1.1.6 排行榜功能

  • 用户可查看今日推荐(可将推荐内容加入购物车)
  • 用户可以查看商家排行榜(点击可看主页)

1.1.7 管理员功能

  • 管理订单信息
    • 查看所有的订单信息
    • 根据关键词搜索想看的订单
    • 删除订单信息
  • 审核商品
    • 查看所有商品以及审核状态
    • 可只显示已审核的商品
    • 可根据关键词搜索对应的商品
    • 修改审核状态(已审核/未审核)
  • 用户管理
    • 查看所有用户信息(可点击该用户主页)
    • 可根据关键词搜索对应的用户

1.2 数据流图

1.2.1 顶层简略数据流图如下

1

1.2.2 用户功能数据流图

2

1.2.3 管理员功能数据流图

3

1.2.4 卖家数据流图

4

1.3 数据元素表

1.3.1 用户数据

Users: table

列名 类型 描述
id integer 用户ID
主码
phone varchar 手机号码
主码
right integer 0: user 1: admin

UserDetails: table

列名 类型 描述
user_id integer 用户ID
主码,外键(Users.id )
password varchar 密码
user_name varchar 用户名
buy_address text 购买地址
gender varchar 性别(男、女)
pay_type text 支付方式(支付宝、微信、银行卡)
avatar varchar 头像图床地址 url

Wallets: table

列名 类型 描述
user_id integer 用户 ID
主码,外键(Users.id )
money_sum decimal 总钱数

Followships: table

列名 类型 描述
user_id integer 关注者
主码,外键(Users.id )
following_user_id integer 被关注者
主码,外键(Users.id )

1.3.2 商品数据

Products: table

列名 类型 描述
id integer 产品ID
主码
user_id integer 用户ID
外键(Users.id )
price decimal 价格
sell_address text 发货地址
store integer 库存
state varchar 销售状态(售完/有货)
check_state integer 0: 未审核 1: 已审核
score_per decimal 评论平均评分

ProductDetails: table

列名 类型 描述
product_id integer 产品ID
主码,外键(Products.id )
product_name text 产品名称
product_image varchar 产品图片
product_press text 产品出版社
product_type varchar 产品类型(杂志 教科书 小说 童话 戏剧 数学 计算机 漫画 自传)

Comments: table

列名 类型 描述
comment_id integer 评价 ID
主码
user_id integer 用户 ID
外键(Users.id )
product_id integer 产品ID
外键(Products.id )
content text 评价内容
score integer 评分(从低到高有1,2,3,4,5五个等级)
created_at datetime(6) 时间戳

1.3.3 购物车数据

Carts: table

列名 类型 描述
user_id integer 用户ID
主码,外键(Users.id )
product_id integer 产品ID
主码,外键(Products.id )
number integer 数量
addTime datetime(6) 时间戳

1.3.4 订单数据

Orders: table

列名 类型 描述
id integer 订单ID
主码
user_id integer 购买用户ID
外键(Users.id )
created_at datetime(6) 订单创建时间戳

OrderItems: table

列名 类型 描述
id integer 订单项ID
主码
product_id integer 产品ID
外键(Products.id )
number integer 数量
state varchar 商品状态(待付款、待发货、待收货、已完成)
order_id integer 订单ID
外键(Orders.id )

1.3.5 公告数据

Notices: table

列名 类型 描述
id integer 公告 ID
主码
title varchar 公告标题
notice_type integer 公告类型
1: 系统公告,2: 关注商家上新,3: 支付提醒
user_id integer 公告发布者 ID
外键(Users.id )

NoticeRecords: table

列名 类型 描述
id integer 公告已读记录 ID
主码
notice_id integer 对应公告 ID
外键(Notices.id )
user_id integer 记录对应的用户 ID
外键(Users.id )

二、数据库系统的概念模式

5

三、数据库系统的逻辑模式

3.1 关系模式范式等级的判定与规范化

关系模式 规范等级 候选码 函数依赖关系 分析
Users BCNF (id), (phone) id $\rightarrow$ phone
phone $\rightarrow$ user_id
id 与 phone 均可单独作为主码,满足 BCNF 条件
UserDetails BCNF (user_id) user_id $\rightarrow$ user_name
user_id $\rightarrow$ password
user_id $\rightarrow$ buy_address
user_id $\rightarrow$ gender
user_id $\rightarrow$ pay_type
user_id $\rightarrow$ avatar
仅有 user_id 为主码,且仅有这一个决定因素,故满足 BCNF 条件
Wallets BCNF (user_id) user_id $\rightarrow$ money_sum 仅有 user_id 为主码,且仅有这一个决定因素,故满足 BCNF 条件
Products BCNF (id) id $\rightarrow$ user_id
id $\rightarrow$ price
id $\rightarrow$ sell_address
id $\rightarrow$ store
id $\rightarrow$ state
id $\rightarrow$ check_state
id $\rightarrow$ score_per
仅有 id 为主码,且仅有这一个决定因素,故满足 BCNF 条件
ProductDetails BCNF (product_id) product_id $\rightarrow$ product_name
product_id $\rightarrow$ product_image
product_id $\rightarrow$ product_press
product_id $\rightarrow$ product_type
仅有 product_id 为主码,且仅有这一个决定因素,故满足 BCNF 条件
Followships BCNF (user_id, following_user_id) (follower, followee) 属性组构成主码,不存在非主属性,故满足 BCNF 条件
Carts BCNF (user_id, product_id) (user_id, product_id) $\xrightarrow{f}$ number
(user_id, product_id) $\xrightarrow{f}$ addTime
(user_id, product_id) 属性组构成主码,且关系仅有这一个决定因素,故满足 BCNF 条件
Orders BCNF (id) id $\rightarrow$ user_id
id $\rightarrow$ created_at
仅有 order_id 为主码,且仅有这一个决定因素,故满足 BCNF 条件
OrderItems BCNF (id) id $\rightarrow$ product_id
id $\rightarrow$ number
id $\rightarrow$ state
id $\rightarrow$ order_id
仅有 id 为主码,且仅有这一个决定因素,故满足 BCNF 条件
Comments BCNF (id) id $\rightarrow$ user_id
id $\rightarrow$ product_id
id $\rightarrow$ content
id $\rightarrow$ date
id $\rightarrow$ score
仅有 id 为主码,且仅有这一个决定因素,故满足 BCNF 条件
Notices BCNF (id) id $\rightarrow$ title
id $\rightarrow$ notice_type
id $\rightarrow$ user_id
id $\rightarrow$ content
id $\rightarrow$ created_at
仅有 id 为主码,且仅有这一个决定因素,故满足 BCNF 条件
NoticeRecords BCNF (id) id $\rightarrow$ notice_id
id $\rightarrow$ user_id
id $\rightarrow$ readed
仅有 id 为主码,且仅有这一个决定因素,故满足 BCNF 条件
  • Title: database-design-theory
  • Author: Charles
  • Created at : 2023-12-20 08:46:25
  • Updated at : 2024-02-03 15:54:47
  • Link: https://charles2530.github.io/2023/12/20/database-design-theory/
  • License: This work is licensed under CC BY-NC-SA 4.0.
Comments