天猫整站SSM项目(二)数据库设计

天猫整站SSM项目(二)数据库设计

    • 一、数据库设计分析
    • 二、创建数据库
      • 1. 建立数据库
      • 2. 表与表之间的关系
        • 2.1 表![在这里插入图片描述](https://img-blog.csdnimg.cn/20200406160626905.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3p5NDUwMjcxOTIz,size_16,color_FFFFFF,t_70)
        • 2.2 正确的分析表与表之间的关系的方法
        • 2.3 表关系
      • 3. 建表
        • 3.1 用户表
        • 3.2 分类表
        • 3.3 属性表
        • 3.4 产品表
        • 3.5 属性值表
        • 3.6 产品图片表
        • 3.7 评价表
        • 3.8 订单表
        • 3.9 订单项表
      • 4. 表与页面的关系

一、数据库设计分析

在需求分析结束之后,接下来要做的不是马上开发功能,而是进行表结构的设计。只有把表结构设计正确了,才能支撑软件后续的功能开发,这一步是非常重要的。
为了便于大家理解表结构设计的过程,把设计过程分解成了

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

二、创建数据库

1. 建立数据库

创建数据库:tmall_ssm
并且将数据库的编码设置为utf8,便于存放中文

2. 表与表之间的关系

在这张表关系图上,列出了模仿天猫整站一共需要用到的9张表,以及表之间的关系。接下来,对每张表做介绍,并讲解表与表之间的关系:

天猫整站SSM项目(二)数据库设计_第1张图片
图片来源:https://how2j.cn/k/tmall_ssm/tmall_ssm-1430/1430.html

2.1 表天猫整站SSM项目(二)数据库设计_第2张图片

2.2 正确的分析表与表之间的关系的方法

表与表之间的关系,基本上是3种

  • 一对一
  • 一对多
  • 多对一

正确的分析表与表之间的关系的方法是这样:
一个分类对应 多个 产品
一个产品对应 一个 分类

所以分类和产品之间的关系是一对多

2.3 表关系

有关系的表之间都是一对多的关系:天猫整站SSM项目(二)数据库设计_第3张图片

3. 建表

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

3.1 用户表

用户表包括有:账号、密码信息,还包括一个自增的键值

CREATE TABLE user (
  id int(11) NOT NULL AUTO_INCREMENT,
  name varchar(255) DEFAULT NULL,
  password varchar(255) DEFAULT NULL,
  PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

3.2 分类表

分类表包含:类别名称和一个自增的键值

CREATE TABLE category (
  id int(11) NOT NULL AUTO_INCREMENT,
  name varchar(255) DEFAULT NULL,
  PRIMARY KEY (id)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8;

3.3 属性表

属性表包含:属性名称、外键cid,指向分类表的id字段

CREATE TABLE property (
  id int(11) NOT NULL AUTO_INCREMENT,
  cid int(11) DEFAULT NULL,
  name varchar(255) DEFAULT NULL,
  PRIMARY KEY (id),
  CONSTRAINT fk_property_category FOREIGN KEY (cid) REFERENCES category (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

3.4 产品表

产品表字段稍多

  • name: 产品名称
  • subTitle: 小标题
  • originalPrice: 原始价格
  • promotePrice: 优惠价格
  • stock: 库存
  • createDate: 创建日期
  • 本表的外键cid,指向分类表的id字段
CREATE TABLE product (
  id int(11) NOT NULL AUTO_INCREMENT,
  name varchar(255) DEFAULT NULL,
  subTitle varchar(255) DEFAULT NULL,
  originalPrice float DEFAULT NULL,
  promotePrice float DEFAULT NULL,
  stock int(11) DEFAULT NULL,
  cid int(11) DEFAULT NULL,
  createDate datetime DEFAULT NULL,
  PRIMARY KEY (id),
  CONSTRAINT fk_product_category FOREIGN KEY (cid) REFERENCES category (id)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8;

3.5 属性值表

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

CREATE TABLE propertyvalue (
  id int(11) NOT NULL AUTO_INCREMENT,
  pid int(11) DEFAULT NULL,
  ptid int(11) DEFAULT NULL,
  value varchar(255) DEFAULT NULL,
  PRIMARY KEY (id),
  CONSTRAINT fk_propertyvalue_property FOREIGN KEY (ptid) REFERENCES property (id),
  CONSTRAINT fk_propertyvalue_product FOREIGN KEY (pid) REFERENCES product (id)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8;

3.6 产品图片表

type表示类型,产品图片分单个图片和详情图片两种

本表的外键pid,指向产品表的id字段

CREATE TABLE productimage (
  id int(11) NOT NULL AUTO_INCREMENT,
  pid int(11) DEFAULT NULL,
  type varchar(255) DEFAULT NULL,
  PRIMARY KEY (id),
  CONSTRAINT fk_productimage_product FOREIGN KEY (pid) REFERENCES product (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

3.7 评价表

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

CREATE TABLE review (
  id int(11) NOT NULL AUTO_INCREMENT,
  content varchar(4000) DEFAULT NULL,
  uid int(11) DEFAULT NULL,
  pid int(11) DEFAULT NULL,
  createDate datetime DEFAULT NULL,
  PRIMARY KEY (id),
  CONSTRAINT fk_review_product FOREIGN KEY (pid) REFERENCES product (id),
    CONSTRAINT fk_review_user FOREIGN KEY (uid) REFERENCES user (id)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8;

3.8 订单表

订单表的字段也比较多:

  • orderCode: 订单号
  • address:收货地址
  • post: 邮编
  • receiver: 收货人信息
  • mobile: 手机号码
  • userMessage: 用户备注信息
  • createDate: 订单创建日期
  • payDate: 支付日期
  • deliveryDate: 发货日期
  • confirmDate:确认收货日期
  • status: 订单状态
  • 外键uid,指向用户表id字段
CREATE TABLE order_ (
  id int(11) NOT NULL AUTO_INCREMENT,
  orderCode varchar(255) DEFAULT NULL,
  address varchar(255) DEFAULT NULL,
  post varchar(255) DEFAULT NULL,
  receiver varchar(255) DEFAULT NULL,
  mobile varchar(255) DEFAULT NULL,
  userMessage varchar(255) DEFAULT NULL,
  createDate datetime DEFAULT NULL,
  payDate datetime DEFAULT NULL,
  deliveryDate datetime DEFAULT NULL,
  confirmDate datetime DEFAULT NULL,
  uid int(11) DEFAULT NULL,
  status varchar(255) DEFAULT NULL,
  PRIMARY KEY (id),
  CONSTRAINT fk_order_user FOREIGN KEY (uid) REFERENCES user (id)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8;

3.9 订单项表

这个表是外键最多的一个表:

  • 外键pid,指向产品表id字段
  • 外键oid,指向订单表id字段
  • 外键uid,指向用户表id字段
  • number字段表示购买数量
CREATE TABLE orderitem (
  id int(11) NOT NULL AUTO_INCREMENT,
  pid int(11) DEFAULT NULL,
  oid int(11) DEFAULT NULL,
  uid int(11) DEFAULT NULL,
  number int(11) DEFAULT NULL,
  PRIMARY KEY (id),
  CONSTRAINT fk_orderitem_user FOREIGN KEY (uid) REFERENCES user (id),
  CONSTRAINT fk_orderitem_product FOREIGN KEY (pid) REFERENCES product (id),
  CONSTRAINT fk_orderitem_order FOREIGN KEY (oid) REFERENCES order_ (id)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8;

4. 表与页面的关系

  1. 用户表:登录页面采集用户的账号和密码

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

  3. 属性表:在产品页的商品详情标签下,显示本产品对应分类所设置的所有属性。注意:是该产品的分类的属性,所以属性表指向了分类表

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

  5. 属性值表:在产品页的商品详情标签下,显示本产品的所有属性值。它既指向产品表又指向分类表

  6. 产品图片表:在产品页显示5个单个图片,指向产品表

  7. 评价表:产品页显示评价信息,指向用户表和产品表

  8. 订单表:在后台的订单管理页面看到的订单信息,指向用户表

  9. 订单项表:在购物车中看到的订单项信息,指向用户表、产品表和订单表

你可能感兴趣的:(SSM项目)