database-design-theory
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.2.2 用户功能数据流图
1.2.3 管理员功能数据流图
1.2.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 ) |
二、数据库系统的概念模式
三、数据库系统的逻辑模式
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.
recommend_articles
recommend_articles
Comments