J2EE项目-仿天猫整站day06

表结构设计

对整个项目进行深入理解,在需求分析结束之后,首先进行表结构设计。只有先把表结构设计正确,对表结构的理解到位,在接下来的开发中,才能一清二白,才能支撑软件后续的开发功能。设计过程分为四步:

  1. 数据库创建
  2. 表与表关系
  3. 建表SQL语句
  4. 表与页面

1. 数据库创建

DROP DATABASE IF EXISTS tmall;
CREAT DATABASE tmall DEFAULT CHARACTER SET utf8;

如果存在数据库tmall,就删除;

创建数据库tmall,将数据库得到编码设置为utf8,便于存放中文;

2. 表与表关系

模仿天猫整站一共需要9张表,表与表之间关系如下:

表关系图

表的详细介绍:

表名中文含义介绍
Category分类表存放分类信息,如女装,平板电视,沙发等
Property属性表存放属性信息,如颜色,重量,品牌,厂商,型号等
Product产品表存放产品信息,如LED40EC平板电视机,海尔EC6005热水器
PropertyValue属性值表存放属性值信息,如重量是900g,颜色是粉红色
ProductImage产品图片表存放产品图片信息,如产品页显示的5个图片
Review评论表存放评论信息,如买回来的蜡烛很好用,么么哒
User用户表存放用户信息,如斩手狗,千手小粉红
Order订单表存放订单信息,包括邮寄地址,电话号码等信息
OrderItem订单项表存放订单项信息,包括购买产品种类,数量等

3. 建表SQL语句 & 4. 表与页面

建表顺序:

建表过程中,会设置外键约束,所以表与表之间有依赖关系。因此会先建立被外键指向的表,比如User,Category,然后再是其他表。

外键:外键指的是本表的某一个字段,指向另一张表的主键(或者是有唯一约束的字段)。

关于数据库主键和外键(终于弄懂啦)

用户表:

idnamepassword
1王加油YouAreMoreThanWhatYouHaveBecome
..................

 

登录页面采集用户的账号和密码

用户表

 

分类表:

idname
1沙花
............

 

首页的竖状导航栏显示所有17种分类信息

分类表

 

属性表:

本表的外键cid,指向分类表的id字段

idcidname
11......
..................

 

在产品页的商品详情标签下,显示本产品对应分类所设置的所有属性。

属性表

 

产品表:

本表的外键cid,指向分类表的id字段

idnamesubTitleoriginalPricepromotePricestockfidcreateDate
1..........................................
................................................

产品页的产品信息里显示本产品的名称,小标题,原始价格,促销价,销量,库存等信息

产品表

属性值表:

本表有两个外键
外键ptid,指向属性表的id字段
外键ptid,指向产品表的id字段

idpidptidvalue
    
........................

 

在产品页的商品详情标签下,显示本产品的所有属性值

 

属性值表

产品图片表:

type表示类型,产品图片分单个图片和详情图片两种
本表的外键pid,指向产品表的id字段

idpidtype
   
..................

 

在产品页显示5个单个图片

产品图片表

 

评价表:

外键pid,指向产品表的id字段
外键uid,指向用户表的id字段

idcontentuidpidcreateDate
     
..............................

 

产品页显示评价信息

评价表

订单表:

外键uid,指向用户表id字段

idorderCodeaddresspostreceivermobileuserMessagecreateDatepayDatedeliveryDateconfirmDateuidstatus
             
..............................................................................

在后台的订单管理页面看到的订单信息

订单表

订单项表:

这个表是外键最多的一个表
外键pid,指向产品表id字段
外键oid,指向订单表id字段
外键uid,指向用户表id字段

idpidoiduidnumber
     
..............................

在购物车中看到的订单项信息

订单项表

实体类

所谓实体类,就是对于数据库的表的相互映射的类。

ORM = Object Relationship Datebase Mapping 对象和关系数据库的映射,简单来说,一个对象那个,对应数据库里的一条记录。

基于前面数据库表结构的分析和设计,根据创建表的SQL语句,和表与页面一一对应关系,按照表与表之间的依赖顺序,逐个设计总计九个实体类。

DAO类设计

DAO:Date Access Object,专门用于进行数据库访问的操作。

工具类

DBUtil

DateUtil

业务类

作为 J2EE web应用,一般会按照如图设计流程进行,Servlet -> Service(业务类) -> DAO -> database

当浏览器提交请求到 tomcat web 服务器的时候,对应的 servlet 的 doGet/doPost 方法会被调用,接着在 servlet 中调用Service类,然后在 Service 类中调用 DAO 类,最后在 DAO 中访问数据库获取相应的数据。

 

通常的设计流程

本版本不使用 Service 这一层。原因是 DAO 进行了比较详细的设计,已经提供了很好的支持业务的方法。

后台-分类管理

开发整站的顺序,通常还是按照依赖性来进行,前端需要的数据,都要先通过后台的功能维护在数据库中,才可以拿到。

所以,先进行后台功能的开发,然后再是前台功能的开发。

Filter配合Servlet

原理流程图:

原理流程图

换句话说:

  • 如果访问的路径是admin_category_add,就会调用categoryServlet.add()方法
  • 如果访问的路径是admin_category_delete,就会调用categoryServlet.delete()方法
  • 如果访问的路径是admin_category_edit,就会调用categoryServlet.edit()方法
  • 如果访问的路径是admin_category_update,就会调用categoryServlet.update()方法

这样,就可以实现一个categoryServlet类,就完成了本来需要5个Servlet类才能完成的功能。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值