1.任务实施内容
1.1 分析出“在线购物商城”案例中的实体、关系和联系,并画出相关的E-R图
1.2 根据E-R图转化出关系模式
1.3 根据关系模式设计出对应的表的结构
2.实施步骤
1.1 分析出“在线购物商城”案例中的实体、关系和联系,并画出相关的E-R图
(1)基本需求分析
Netbuy是一个B-C模式的在线购物商城,该在线购物商城系统要求能实现前台用户购物和后台管理两大部分功能。前台购物系统包括会员注册、会员登录、商品展示、商品搜索、购物车、产生订单以及会员资料管理等。后台管理系统包括管理用户、维护商品库、处理订单、维护会员信息和其他管理功能。
(2)概念结构设计
通过分析,得到该系统中的实体以及实体的属性,如图1-11所示。

图1-11(a)会员属性

图1-11(b)商品属性


图1-11(c)商品类别属性 图1-11(d)支付方式属性

图1-11(e) 订单属性

图1-11(f) 订单详情
根据实体间的联系画出局部E-R图,如图1-12所示。

图1-12(a)会员订单联系E-R图

图1-12(b)订单详情联系E-R图

图1-12(c)商品类别和商品联系E-R图

图1-12(d)会员、商品联系E-R图
各个局部E-R图进行合井,消除冗余后,形成基本E-R图,如图1-13所示。

图1-13基本E-R图
1.2 根据E-R图转化出关系模式
(1)逻辑结构设计
基本E-R图按规则转换、进行规范化处理并优化后的关系模式是:
会员(会员编号、会员名称、会员性别、出生日期、身份证号、地址、电话、密码、会员类型(如普通或VIP))
商品类别(类别编号、类别名称、类别描述)
商品(商品编号、商品名称、类别编号、价格、折扣、数量、生产日期、商品状况(热卖、促销、推荐)、商品描述)
支付方式(支付编号、支付名称、支付说明)
订单(订单编号、会员编号、订单日期、订单金额、送货方式、支付编号、订单状态)
订单详情(详情编号、订单编号、商品编号、下单金额、下单数量)
1.3 根据关系模式设计出对应的表的结构
(1)物理结构设计
① customers表(会员表)
表1-7 customers表(会员表)
| 字段名 | 类型 | 长度 | 是否空值 | 约束 | 备注 |
| c_id | 字符型 | 5 | Not null | 主键 | 会员编号 |
| c_name | 变长字符型 | 30 | Not null | 唯一键 | 会员名称 |
| c_sex | 枚举 |
| Not null |
| 会员性别 |
| c_birthday | 日期型 |
| Not null |
| 出生日期 |
| c_cardid | 变长字符型 | 18 | Not null |
| 身份证号 |
| c_address | 变长字符型 | 80 | null |
| 地址 |
| c_phone | 变长字符型 | 11 | null |
| 电话 |
| c_password | 变长字符型 | 30 | Not null |
| 密码 |
| c_type | 变长字符型 | 10 | Not null |
| 会员类型(如普通或VIP) |
② type表(商品类别表)
表1-8 type表(商品类别表)结构
| 字段名 | 类型 | 长度 | 是否空值 | 约束 | 备注 |
| t_id | 字符型 | 3 | Not null | 主键 | 类别编号 |
| t_name | 变长字符型 | 50 | Not null |
| 类别名称(通信产品、电脑产品、日用商品、运动用品、礼品玩具、文化用品等) |
| t_desc | 变长字符型 | 100 | null |
| 类别描述 |
③ goods表(商品信息表)
表1-9 goods表(商品信息表)结构
| 字段名 | 类型 | 长度 | 是否空值 | 约束 | 备注 |
| g_id | 字符型 | 6 | Not null | 主键 | 商品编号 |
| g_name | 变长字符型 | 50 | Not null |
| 商品名称 |
| t_id | 字符型 | 2 | Not null | 外键 | 商品类别编号 |
| g_price | 浮点型 |
| Not null |
| 价格 |
| g_discount | 浮点型 |
| Not null |
| 折扣 |
| g_number | 整型 |
|
|
| 数量 |
| g_prodate | 日期型 |
| null |
| 生产日期 |
| g_status | 变长字符型 | 8 | null |
| 商品状态(热卖、促销、推荐) |
| g_desc | 变长字符型 | 30 | Not null |
| 商品描述 |
④ payments表(支付方式表)
表1-10 payments表(支付方式表)结构
| 字段名 | 类型 | 长度 | 是否空值 | 约束 | 备注 |
| p_id | 字符型 | 2 | Not null | 主键 | 支付编号 |
| p_mode | 变长字符型 | 30 | Not null |
| 支付名称 |
| p_remark | 变长字符型 | 100 | null |
| 支付说明 |
⑤ orders表(订单表)
表1-11 orders表(订单表)结构
| 字段名 | 类型 | 长度 | 是否空值 | 约束 | 备注 |
| o_id | 字符型 | 13 | Not null | 主键 | 订单编号 |
| c_id | 字符型 | 5 | Not null | 外键 | 会员编号 |
| o_date | 日期型 | 2 | Not null |
| 订单日期 |
| o_sum | 浮点型 | 40 | Not null |
| 订单金额 |
| o_sendmode | 变长字符型 | 18 | Not null |
| 送货方式(送货上门、快递) |
| P_id | 字符型 | 80 | Not null | 外键 | 支付方式 |
| o_status | 枚举型 |
| Not null |
| 订单状态(审核中、发货中、已完结、取消) |
⑥ Ordersdetails表(订单详情表)
表1-12 ordersdetails表(订单详情表)结构
| 字段名 | 类型 | 长度 | 是否空值 | 约束 | 备注 |
| d_id | 整型 |
| Not null | 主键 | 详情编号 |
| o_id | 字符型 | 13 | Not null | 外键 | 订单编号 |
| g_id | 字符型 | 6 | Not null | 外键 | 商品编号 |
| od_price | 浮点型 |
| Not null |
| 下单金额 |
| od_number | 整型 |
| Not null |
| 下单数量 |