
4.1概念设计
4.1.1实体分析
在本系统中,主要包括二手书、用户以及管理员三个实体集,其中每个实体都有属于自己的的属性。此外,在系统中根据业务还可以找到购物车、订单、评论、留言和新闻五个实体集。
在实际分析中发现,购物车实体中如果以购物车号作为主键比较繁杂,且购物车记录会因为形成订单而删除,不易操作。因此采用用用户号作为主键的方法,每个用户在形成订单的时候可以清空自己选择购物车的特定内容。
4.1.2实体关系的总体分析
在以上几个实体中,购物车、订单、评论都是由书、用户两个实体之间的关系产生的,都需要建立一张单独的基本表。一个用户可以添加多条记录到当前购物车,一个用户可以形成多条订单记录,一个用户可以评论多本书,每本书可以有很多评论。
为方便操作,我们把用户号作为购物车号,这样可以解决一个用户将多样书籍添加到购物车,结算时形成一条订单查找删除购物车困难的问题。
4.1.3具体实体联系
一个用户可以购买多本书籍,一本书籍可以被多个用户购买(M:N)
一本书籍可以生成一个购物车,一个购物车可以包含多本书籍(M:1)
一条订单对应一个用户,一个用户对应多条订单(M:1)
一个用户拥有一个购物车,一个购物车对应一个用户(1:1)
一个购物车形成一条订单,一条订单包含一个购物车记录(1:1)
一个用户可以发表多个评论,一个评论只能由一个用户发表(1:M)
一本书可以有多个评论,一个评论对应一本书籍(1:M)
一个用户可以发表多条留言,一条留言只能由一个用户发布(1:M)
一个管理员可以回复多条留言,一条留言只能由一个管理员回复(1:M)
一个管理员可以处理多条订单,一个订单只能由一个管理员处理(1:M)
一个管理员可以添加多本书籍,一本书籍只能由一名管理员添加(1:M)
一名管理员可以发布多条新闻,一条新闻只能由一名管理员发布(1:M)
一个用户可以查看多条新闻,一条新闻可以被多个用户查看(M :N)
4.1.4局部ER图
A.一个用户可以购买多本书籍,一本书籍可以被多个用户购买(M:N)
B.一本书籍可以生成一个购物车,一个购物车可以包含多本书籍(1:M)
C.一条订单对应一个用户,一个用户对应多条订单(M:1)
D.一个用户拥有一个购物车,一个购物车对应一个用户(1:1)
E.一条订单包含一个购物车记录,一个购物车形成一条订单(1:1)
F.一个用户可以发表多个评论,一个评论只能由一个用户发表(1:M)
G.一本书可以有多个评论,一个评论对应一本书籍(1:M)
H.一个用户可以发表多条留言,一条留言只能由一个用户发布(1:M)
I.一个管理员可以回复多条留言,一条留言只能由一个管理员回复(1:M)
L.一个管理员可以处理多条订单,一个订单只能由一个管理员处理(1:M)
K.一个管理员可以添加多本书籍,一本书籍只能由一名管理员添加(1:M)
L.一名管理员可以发布多条新闻,一条新闻只能由一名管理员发布(1:M)
M.一个用户可以查看多条新闻,一条新闻可以被多个用户查看(M :N)
4.1.4全局ER图
4.2逻辑设计
4.2.1基本层次(管理员,用户,书籍)
管理员表(管理员号,管理员名,密码)
用户表(用户号,用户名,用户电话,密码)
书籍表(书号,书名,描述,价钱,类别,库存,图片存储路径,发行时间)
留言表(留言号,留言内容,留言标题,留言时间,用户名)
新闻表(新闻号,新闻标题,新闻内容,新闻类型,新闻范围,新闻时间)
回复表(回复号,回复人,回复时间,回复内容,回复标题,留言号)
4.2.2多对多关系,建立新表
评论表(评论号,评论内容,用户号,书号,评论时间)
订单表(订单号,用户号,订单时间,总价,订单状态)
购物车表(购物车号,书号,书名,价格,数量,订单号)
4.2.3对表进行翻译
Admin(AdID,AdName,PassWord)
Users(UserID,UserName,Tel,PassWord)
Book(BookID,BookName,Remark,Price,CategoryName,Stock,BookPhoto,CreateDate)
Message(MsgID,UserName,MsgText,MsgTime)
Tb_News(ID,Title,Content,Type,Categories,IssueDate)
Reply(ReplyID,ReplyRe,ReplyTime,ReplyText,ReplyName,MsgID)
Comment(CommentID,Text,UserID,BookID,CreateDate)
Dingdan(DingdanID,UserID,DingdanTime,Sum,Status)
Shelf(ShelfID,BookID,BookName,Price,Num,Dingdanma)
4.3物理设计
1.管理员Admin表
| 字段名称 | 字段说明 | 类型定义 | 大小 | 备注 | 关系(外键) |
| AdID | 管理员号 | char | 10 | Primary key | |
| AdName | 管理员名 | varchar | 50 | Not null | |
| Password | 密码 | char | 10 | Not null |
| 字段名称 | 字段说明 | 类型定义 | 大小 | 备注 | 关系(外键) |
| BookID | 期刊号 | char | 10 | Primary key | |
| BookName | 期刊名 | varchar | 50 | Not null | |
| Price | 单价 | money | 10 | Not null | |
| CategoryName | 类别名 | char | 10 | Not null | |
| Stock | 库存 | int | 50 | Not null | |
| Bookphoto | 期刊图片 | varchar | 50 | Not null | |
| CreateDate | 发行时间 | datetime | 8 | ||
| Remark | 简介 | text |
| 字段名称 | 字段说明 | 类型定义 | 大小 | 备注 | 关系(外键) |
| ID | 评论编号 | char | 10 | Primary key | |
| Title | 标题 | varchar | 50 | ||
| Body | 内容 | varchar | 1000 | Not null | |
| UserID | 用户号 | char | 10 | Not null | CK:UserID |
| BookID | 期刊号 | char | 10 | Not null | CK:BookID |
| CreateDate | 创建时间 | datetime | 8 | Not null |
| 字段名称 | 字段说明 | 类型定义 | 大小 | 备注 | 关系(外键) |
| ShelfID | 购物车号 | char | 10 | Primary key | |
| BookID | 期刊号 | char | 10 | CK:BookID | |
| BookName | 期刊名 | varchar | 50 | Not null | |
| DingdanMa | 订单号 | varchar | 50 | Not null | |
| Num | 数量 | int | 50 | Not null |
| 字段名称 | 字段说明 | 类型定义 | 大小 | 备注 | 关系(外键) |
| DingdanID | 订单号 | char | 10 | Primary key | |
| UserID | 用户号 | char | 10 | CK:UserID | |
| DingdanTime | 订单时间 | datetime | 8 | Not null | |
| Status | 状态 | char | 10 | Not null | |
| Num | 数量 | int | 50 | Not null |
| 字段名称 | 字段说明 | 类型定义 | 大小 | 备注 | 关系(外键) |
| ShelfID | 购物车号 | char | 10 | Primary key | |
| BookID | 期刊号 | char | 10 | Not null | CK:BookID |
| BookName | 期刊名 | varchar | 50 | Not null | |
| Price | 价格 | money | 10 | Not null | |
| Num | 数量 | int | 50 | Not null | |
| DingdanMa | 订单号 | varchar | 50 | Not null |
| 字段名称 | 字段说明 | 类型定义 | 大小 | 备注 | 关系(外键) |
| UserID | 用户号 | char | 10 | Primary key | |
| UserName | 用户名 | varchar | 50 | Not null | |
| UserTel | 电话号码 | char | 20 | Not null | |
| Password | 密码 | char | 10 | Not null |
| 字段名称 | 字段说明 | 类型定义 | 大小 | 备注 | 关系(外键) |
| MsgID | 留言号 | char | 10 | Primary key | |
| MsgRe | 用户名 | Varchar | 50 | Not null | User.UserName |
| MsgText | 留言内容 | Varchar | 80 | Not null | |
| MsgTime | 留言时间 | datetime | Not null | ||
| MsgName | 留言标题 | Varchar | 50 | Not NULL |
| 字段名称 | 字段说明 | 类型定义 | 大小 | 备注 | 关系(外键) |
| ID | 新闻号 | char | 10 | Primary key | |
| Title | 新闻标题 | Varchar | 50 | Not null | |
| Content | 新闻内容 | Varchar | 2000 | Not null | |
| Type | 新闻类别 | Varchar | 50 | Not null | |
| categories | 新闻范围 | Varchar | 50 | Not null |
| 字段名称 | 字段说明 | 类型定义 | 大小 | 备注 | 关系(外键) |
| ReplyID | 回复号 | Int | Primary key | ||
| ReplyRe | 回复人 | Varchar | 50 | Not null | |
| ReplyTime | 回复时间 | DateTime | Not null | ||
| ReplyText | 回复内容 | Varchar | 80 | Not null | |
| ReplyName | 回复标题 | Varchar | 50 | Not null | |
| MsgID | 留言号 | Int | Not Null | Message:MsgID |
| 字段名称 | 字段说明 | 类型定义 | 大小 | 备注 | 关系(外键) |
| CategoryID | 分类号 | Int | Primary key | ||
| CategoryName | 分类名称 | Varchar | 50 | Not null | |
| ParentID | 父分类的ID值 | Int | Not null | ||
| ShowOrder | 显示顺序 | Int | Not null | ||
| Remark | 简介 | Varchar | 2000 | Not null |
