实战SSM_O2O商铺_02数据模型设计及实体类的创建

模块介绍

主要分为3个大模块

  • 前端展示模块

这里写图片描述


  • 店家模块

这里写图片描述


  • 后台管理模块

这里写图片描述


建立o2o数据库(MySql)

这里写图片描述


数据模型及对象设计

总览

根据上述划分的功能模块,设计出主要的实体类(10个)以及实体类对应的表(10个)

这里写图片描述

下面来拆分逐个解析,创建实体类和库表


区域

分析

这里写图片描述

主要属性:

  • areaId
  • areaName
  • priority (权重,数值越大页面展示越靠前)
  • createTime
  • lastEditTime

实体类

/src/main/java新建包com.artisan.o2o.entity,新建Area.java



----------


###数据库表

– Table structure for table tb_area

CREATE TABLE tb_area (
area_id INT (5) NOT NULL AUTO_INCREMENT,
area_name VARCHAR (200) NOT NULL,
area_desc VARCHAR (1000) DEFAULT NULL,
priority INT (2) NOT NULL DEFAULT ‘0’,
create_time datetime DEFAULT NULL,
last_edit_time datetime DEFAULT NULL,
PRIMARY KEY (area_id),
UNIQUE KEY UK_AREA (area_name)
) ENGINE = INNODB AUTO_INCREMENT = 1 DEFAULT CHARSET = utf8;


----------
##用户信息 



###分析

![这里写图片描述](https://img-blog.csdn.net/20180514071607924?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3lhbmdzaGFuZ3dlaQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)

----------

###实体类

package com.artisan.o2o.entity;

import java.util.Date;

/**
*
*
* @ClassName: PersonInfo
*
* @Description: tb_person_info对应的实体类.属性采用引用类型(Integer\Long等),
* 不建议使用基本类型(基本类型有默认值) ,以免mybatis动态sql出现莫名其妙的问题
*
* @author: Mr.Yang
*
* @date: 2018年5月13日 下午7:20:44
*/
public class PersonInfo {

/**
 * 用户Id
 */
private Long userId;

/**
 * 用户姓名
 */
private String name;

/**
 * 头像图片地址
 */
private String profileImg;

/**
 * 性别
 */
private String gender;

/**
 * 邮箱
 */
private String email;

/**
 * 用户状态
 */
private Integer enableStatus;

/**
 * 用户类型 1顾客 2店家 3管理员
 */
private Integer userType;

/**
 * 创建时间
 */
private Date createTime;

/**
 * 修改时间
 */
private Date lastEditTime;

public Long getUserId() {
    return userId;
}

public void setUserId(Long userId) {
    this.userId = userId;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public String getProfileImg() {
    return profileImg;
}

public void setProfileImg(String profileImg) {
    this.profileImg = profileImg;
}

public String getGender() {
    return gender;
}

public void setGender(String gender) {
    this.gender = gender;
}

public String getEmail() {
    return email;
}

public void setEmail(String email) {
    this.email = email;
}

public Integer getEnableStatus() {
    return enableStatus;
}

public void setEnableStatus(Integer enableStatus) {
    this.enableStatus = enableStatus;
}

public Integer getUserType() {
    return userType;
}

public void setUserType(Integer userType) {
    this.userType = userType;
}


public Date getCreateTime() {
    return createTime;
}

public void setCreateTime(Date createTime) {
    this.createTime = createTime;
}

public Date getLastEditTime() {
    return lastEditTime;
}

public void setLastEditTime(Date lastEditTime) {
    this.lastEditTime = lastEditTime;
}

@Override
public String toString() {
    return "PersonInfo [userId=" + userId + ", name=" + name + ", profileImg=" + profileImg + ", gender=" + gender + ", email=" + email + ", enableStatus=" + enableStatus + ", userType="
            + userType + ", createTime=" + createTime + ", lastEditTime=" + lastEditTime + "]";
}

}


----------

###数据库表

– Table structure for table tb_person_info

CREATE TABLE tb_person_info (
user_id INT (10) NOT NULL AUTO_INCREMENT,
name VARCHAR (32) DEFAULT NULL,
profile_img VARCHAR (1024) DEFAULT NULL,
email VARCHAR (128) DEFAULT NULL,
gender VARCHAR (2) DEFAULT NULL,
enable_status INT (2) NOT NULL DEFAULT ‘0’ COMMENT ‘0:禁止使用, 1:允许使用’,
user_type INT (2) NOT NULL DEFAULT ‘1’ COMMENT ‘1:顾客,2:店家,3:管理员’,
create_time datetime DEFAULT NULL,
last_edit_time datetime DEFAULT NULL,
PRIMARY KEY (user_id)
) ENGINE = INNODB AUTO_INCREMENT = 1 DEFAULT CHARSET = utf8;



----------
##微信账号与本地账号

###分析

<font color=red size=4>这两个表与实体类的设计,**要通过外键用户ID与对应的用户建立联系** ,这样才能确定是哪个用户。

![这里写图片描述](https://img-blog.csdn.net/20180514103008348?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3lhbmdzaGFuZ3dlaQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)


----------

###微信账号-实体类

package com.artisan.o2o.entity;

import java.util.Date;

/**
*
*
* @ClassName: WechatAuth
*
* @Description: tb_wechat_auth对应的实体类
*
* @author: Mr.Yang
*
* @date: 2018年5月13日 下午10:38:08
*/
public class WechatAuth {

/**
 * 主键
 */
private Long wechatAuthId;

/**
 * Wechat唯一标示
 */
private String openId;

/**
 * 创建时间
 */
private Date createTime;

/**
 * 关联的用户信息(通过用户id)
 */
private PersonInfo personInfo;

public Long getWechatAuthId() {
    return wechatAuthId;
}

public void setWechatAuthId(Long wechatAuthId) {
    this.wechatAuthId = wechatAuthId;
}

public String getOpenId() {
    return openId;
}

public void setOpenId(String openId) {
    this.openId = openId;
}

public Date getCreateTime() {
    return createTime;
}

public void setCreateTime(Date createTime) {
    this.createTime = createTime;
}

public PersonInfo getPersonInfo() {
    return personInfo;
}

public void setPersonInfo(PersonInfo personInfo) {
    this.personInfo = personInfo;
}

@Override
public String toString() {
    return "WechatAuth [wechatAuthId=" + wechatAuthId + ", openId=" + openId + ", createTime=" + createTime + ", personInfo=" + personInfo + "]";
}

}


----------

###微信账号-数据库表

– Table structure for table tb_wechat_auth

CREATE TABLE tb_wechat_auth (
wechat_auth_id int(10) NOT NULL AUTO_INCREMENT,
user_id int(10) NOT NULL,
open_id varchar(512) NOT NULL,
create_time datetime DEFAULT NULL,
PRIMARY KEY (wechat_auth_id),
CONSTRAINT fk_wechatauth_profile FOREIGN KEY (user_id) REFERENCES tb_person_info (user_id)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

– add index for COLUMN open_id
alter table tb_wechat_auth add unique index(open_id);


----------


###本地账号-实体类

package com.artisan.o2o.entity;

import java.util.Date;

/**
*
*
* @ClassName: LocalAuth
*
* @Description: tb_local_auth对应的实体类
*
* @author: Mr.Yang
*
* @date: 2018年5月13日 下午10:41:21
*/
public class LocalAuth {
/**
* 主键
*/
private Integer localAuthId;

/**
 * 用户名
 */
private String userName;

/**
 * 密码
 */
private String password;

/**
 * 创建时间
 */
private Date createTime;

/**
 * 修改时间
 */
private Date lastEditTime;

/**
 * 关联的用户信息(通过用户id)
 */
private PersonInfo personInfo;

public Integer getLocalAuthId() {
    return localAuthId;
}

public void setLocalAuthId(Integer localAuthId) {
    this.localAuthId = localAuthId;
}

public String getUserName() {
    return userName;
}

public void setUserName(String userName) {
    this.userName = userName;
}

public String getPassword() {
    return password;
}

public void setPassword(String password) {
    this.password = password;
}

public Date getCreateTime() {
    return createTime;
}

public void setCreateTime(Date createTime) {
    this.createTime = createTime;
}

public Date getLastEditTime() {
    return lastEditTime;
}

public void setLastEditTime(Date lastEditTime) {
    this.lastEditTime = lastEditTime;
}

public PersonInfo getPersonInfo() {
    return personInfo;
}

public void setPersonInfo(PersonInfo personInfo) {
    this.personInfo = personInfo;
}

@Override
public String toString() {
    return "LocalAuth [localAuthId=" + localAuthId + ", userName=" + userName + ", password=" + password + ", createTime=" + createTime + ", lastEditTime=" + lastEditTime + ", personInfo="
            + personInfo + "]";
}

}


----------

###本地账号-数据库表

– Table structure for table tb_local_auth

CREATE TABLE tb_local_auth (
local_auth_id int(10) NOT NULL AUTO_INCREMENT,
user_id int(10) DEFAULT NULL,
user_name varchar(128) COLLATE utf8_unicode_ci NOT NULL,
password varchar(128) COLLATE utf8_unicode_ci NOT NULL,
create_time datetime DEFAULT NULL,
last_edit_time datetime DEFAULT NULL,
PRIMARY KEY (local_auth_id),
UNIQUE KEY uk_local_profile (user_name),
CONSTRAINT fk_local_profile FOREIGN KEY (user_id) REFERENCES tb_person_info (user_id)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;



----------

##头条
###分析
![这里写图片描述](https://img-blog.csdn.net/2018051411180131?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3lhbmdzaGFuZ3dlaQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)


----------

###实体类

package com.artisan.o2o.entity;

import java.util.Date;

/**
*
*
* @ClassName: HeadLine
*
* @Description: tb_head_line对应的实体类
*
* @author: Mr.Yang
*
* @date: 2018年5月13日 下午11:01:57
*/
public class HeadLine {
/**
*
*/
private Long lineId;

/**
 * 头条名
 */
private String lineName;

/**
 * 头条链接
 */
private String lineLink;

/**
 * 图片地址
 */
private String lineImg;

/**
 * 权重,数值越大,优先展示
 */
private Integer priority;

/**
 * 状态 0 不可用 1 可用
 */
private Integer enableStatus;

/**
 * 创建时间
 */
private Date createTime;

/**
 * 修改时间
 */
private Date lastEditTime;

public Long getLineId() {
    return lineId;
}

public void setLineId(Long lineId) {
    this.lineId = lineId;
}

public String getLineName() {
    return lineName;
}

public void setLineName(String lineName) {
    this.lineName = lineName;
}

public String getLineLink() {
    return lineLink;
}

public void setLineLink(String lineLink) {
    this.lineLink = lineLink;
}

public String getLineImg() {
    return lineImg;
}

public void setLineImg(String lineImg) {
    this.lineImg = lineImg;
}

public Integer getPriority() {
    return priority;
}

public void setPriority(Integer priority) {
    this.priority = priority;
}

public Integer getEnableStatus() {
    return enableStatus;
}

public void setEnableStatus(Integer enableStatus) {
    this.enableStatus = enableStatus;
}

public Date getCreateTime() {
    return createTime;
}

public void setCreateTime(Date createTime) {
    this.createTime = createTime;
}

public Date getLastEditTime() {
    return lastEditTime;
}

public void setLastEditTime(Date lastEditTime) {
    this.lastEditTime = lastEditTime;
}

@Override
public String toString() {
    return "HeadLine [lineId=" + lineId + ", lineName=" + lineName + ", lineLink=" + lineLink + ", lineImg=" + lineImg + ", priority=" + priority + ", enableStatus=" + enableStatus
            + ", createTime=" + createTime + ", lastEditTime=" + lastEditTime + "]";
}

}


----------

###数据库表

– Table structure for table tb_head_line

CREATE TABLE tb_head_line (
line_id int(100) NOT NULL AUTO_INCREMENT,
line_name varchar(1000) DEFAULT NULL,
line_link varchar(2000) NOT NULL,
line_img varchar(2000) NOT NULL,
priority int(2) DEFAULT NULL,
enable_status int(2) NOT NULL DEFAULT ‘0’ comment ‘0:不可用,1:可用’,
create_time datetime DEFAULT NULL,
last_edit_time datetime DEFAULT NULL,
PRIMARY KEY (line_id)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;


----------


##店铺类别

###分析

![这里写图片描述](https://img-blog.csdn.net/20180514112514493?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3lhbmdzaGFuZ3dlaQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)


----------

###实体类

package com.artisan.o2o.entity;

import java.util.Date;

/**
*
*
* @ClassName: ShopCategory
*
* @Description: tb_shop_category对应的实体类
*
* @author: Mr.Yang
*
* @date: 2018年5月13日 下午11:26:19
*/
public class ShopCategory {
/**
* 主键
*/
private Long shopCategoryId;

/**
 * 店铺目录名称
 */
private String shopCategoryName;

/**
 * 店铺目录描述
 */
private String shopCategoryDesc;

/**
 * 店铺目录对应的图片地址
 */
private String shopCategoryImg;

/**
 * 权重,值越大,越优先展示
 */
private Integer priority;

/**
 * 创建时间
 */
private Date createTime;

/**
 * 修改时间
 */
private Date lastEditTime;

/**
 * 上级Id,用于店铺目录的分层展示
 */
private Long parentId;

public Long getShopCategoryId() {
    return shopCategoryId;
}

public void setShopCategoryId(Long shopCategoryId) {
    this.shopCategoryId = shopCategoryId;
}

public String getShopCategoryName() {
    return shopCategoryName;
}

public void setShopCategoryName(String shopCategoryName) {
    this.shopCategoryName = shopCategoryName;
}

public String getShopCategoryDesc() {
    return shopCategoryDesc;
}

public void setShopCategoryDesc(String shopCategoryDesc) {
    this.shopCategoryDesc = shopCategoryDesc;
}

public String getShopCategoryImg() {
    return shopCategoryImg;
}

public void setShopCategoryImg(String shopCategoryImg) {
    this.shopCategoryImg = shopCategoryImg;
}

public Integer getPriority() {
    return priority;
}

public void setPriority(Integer priority) {
    this.priority = priority;
}

public Date getCreateTime() {
    return createTime;
}

public void setCreateTime(Date createTime) {
    this.createTime = createTime;
}

public Date getLastEditTime() {
    return lastEditTime;
}

public void setLastEditTime(Date lastEditTime) {
    this.lastEditTime = lastEditTime;
}

public Long getParentId() {
    return parentId;
}

public void setParentId(Long parentId) {
    this.parentId = parentId;
}

@Override
public String toString() {
    return "ShopCategory [shopCategoryId=" + shopCategoryId + ", shopCategoryName=" + shopCategoryName + ", shopCategoryDesc=" + shopCategoryDesc + ", shopCategoryImg=" + shopCategoryImg
            + ", priority=" + priority + ", createTime=" + createTime + ", lastEditTime=" + lastEditTime + ", parentId=" + parentId + "]";
}

}


----------

###数据库表

– Table structure for table tb_shop_category

CREATE TABLE tb_shop_category (
shop_category_id int(11) NOT NULL AUTO_INCREMENT,
shop_category_name varchar(100) NOT NULL DEFAULT ”,
shop_category_desc varchar(1000) DEFAULT ”,
shop_category_img varchar(2000) DEFAULT NULL,
priority int(2) NOT NULL DEFAULT ‘0’,
create_time datetime DEFAULT NULL,
last_edit_time datetime DEFAULT NULL,
parent_id int(11) DEFAULT NULL,
PRIMARY KEY (shop_category_id),
CONSTRAINT fk_shop_category_self FOREIGN KEY (parent_id) REFERENCES tb_shop_category (shop_category_id)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;


----------
##店铺

###分析

![这里写图片描述](https://img-blog.csdn.net/20180514120852470?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3lhbmdzaGFuZ3dlaQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)



----------

###实体类

package com.artisan.o2o.entity;

import java.util.Date;

/**
*
*
* @ClassName: Shop
*
* @Description: tb_shop对应的实体类
*
* @author: Mr.Yang
*
* @date: 2018年5月14日 上午12:04:32
*/
public class Shop {

private Long shopId;
private String shopName;
private String shopDesc;
private String shopAddr;
private String phone;
private String shopImg;
/**
 * 权重
 */
private Integer priority;
private Date createTime;
private Date lastEditTime;
/**
 * -1不可用 0审核中 1可用
 */
private Integer enableStatus;
/**
 * 管理员给店家的提醒
 */
private String advice;
/**
 * 店铺所属店主
 */
private PersonInfo owner;
/**
 * 店铺所在区月
 */
private Area area;
/**
 * 店铺类别
 */
private ShopCategory shopCategory;

public Long getShopId() {
    return shopId;
}

public void setShopId(Long shopId) {
    this.shopId = shopId;
}

public String getShopName() {
    return shopName;
}

public void setShopName(String shopName) {
    this.shopName = shopName;
}

public String getShopDesc() {
    return shopDesc;
}

public void setShopDesc(String shopDesc) {
    this.shopDesc = shopDesc;
}

public String getShopAddr() {
    return shopAddr;
}

public void setShopAddr(String shopAddr) {
    this.shopAddr = shopAddr;
}

public String getPhone() {
    return phone;
}

public void setPhone(String phone) {
    this.phone = phone;
}

public String getShopImg() {
    return shopImg;
}

public void setShopImg(String shopImg) {
    this.shopImg = shopImg;
}

public Integer getPriority() {
    return priority;
}

public void setPriority(Integer priority) {
    this.priority = priority;
}

public Date getCreateTime() {
    return createTime;
}

public void setCreateTime(Date createTime) {
    this.createTime = createTime;
}

public Date getLastEditTime() {
    return lastEditTime;
}

public void setLastEditTime(Date lastEditTime) {
    this.lastEditTime = lastEditTime;
}

public Integer getEnableStatus() {
    return enableStatus;
}

public void setEnableStatus(Integer enableStatus) {
    this.enableStatus = enableStatus;
}

public String getAdvice() {
    return advice;
}

public void setAdvice(String advice) {
    this.advice = advice;
}

public PersonInfo getOwner() {
    return owner;
}

public void setOwner(PersonInfo owner) {
    this.owner = owner;
}

public Area getArea() {
    return area;
}

public void setArea(Area area) {
    this.area = area;
}

public ShopCategory getShopCategory() {
    return shopCategory;
}

public void setShopCategory(ShopCategory shopCategory) {
    this.shopCategory = shopCategory;
}

}


----------

###数据库表

– Table structure for table tb_shop

CREATE TABLE tb_shop (
shop_id int(10) NOT NULL AUTO_INCREMENT,
owner_id int(10) NOT NULL COMMENT ‘店铺创建人’,
area_id int(5) DEFAULT NULL,
shop_category_id int(11) DEFAULT NULL,
parent_category_id int(11) DEFAULT NULL,
shop_name varchar(256) COLLATE utf8_unicode_ci NOT NULL,
shop_desc varchar(1024) COLLATE utf8_unicode_ci DEFAULT NULL,
shop_addr varchar(200) COLLATE utf8_unicode_ci DEFAULT NULL,
phone varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL,
shop_img varchar(1024) COLLATE utf8_unicode_ci DEFAULT NULL,
longitude double(16,12) DEFAULT NULL,
latitude double(16,12) DEFAULT NULL,
priority int(3) DEFAULT ‘0’,
create_time datetime DEFAULT NULL,
last_edit_time datetime DEFAULT NULL,
enable_status int(2) NOT NULL DEFAULT ‘0’,
advice varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
PRIMARY KEY (shop_id),
CONSTRAINT fk_shop_area FOREIGN KEY (area_id) REFERENCES tb_area (area_id),
CONSTRAINT fk_shop_profile FOREIGN KEY (owner_id) REFERENCES tb_person_info (user_id),
CONSTRAINT fk_shop_shopcate FOREIGN KEY (shop_category_id) REFERENCES tb_shop_category (shop_category_id)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 ;


----------

##商品类别

----------

###实体类

package com.artisan.o2o.entity;

import java.util.Date;

/**
*
*
* @ClassName: ProductCategory
*
* @Description: tb_product_category对应的实体类
*
* @author: Mr.Yang
*
* @date: 2018年5月14日 上午12:26:43
*/
public class ProductCategory {

private Long productCategoryId;
/**
 * 店铺id,表名该产品目录是哪个店铺下的
 */
private Long shopId;
private String productCategoryName;
private String productCategoryDesc;
private Integer priority;
private Date createTime;
private Date lastEditTime;

public Long getProductCategoryId() {
    return productCategoryId;
}

public void setProductCategoryId(Long productCategoryId) {
    this.productCategoryId = productCategoryId;
}

public Long getShopId() {
    return shopId;
}

public void setShopId(Long shopId) {
    this.shopId = shopId;
}

public String getProductCategoryName() {
    return productCategoryName;
}

public void setProductCategoryName(String productCategoryName) {
    this.productCategoryName = productCategoryName;
}

public String getProductCategoryDesc() {
    return productCategoryDesc;
}

public void setProductCategoryDesc(String productCategoryDesc) {
    this.productCategoryDesc = productCategoryDesc;
}

public Integer getPriority() {
    return priority;
}

public void setPriority(Integer priority) {
    this.priority = priority;
}

public Date getCreateTime() {
    return createTime;
}

public void setCreateTime(Date createTime) {
    this.createTime = createTime;
}

public Date getLastEditTime() {
    return lastEditTime;
}

public void setLastEditTime(Date lastEditTime) {
    this.lastEditTime = lastEditTime;
}

}


----------

###数据库表

– Table structure for table tb_product_category

CREATE TABLE tb_product_category (
product_category_id int(11) NOT NULL AUTO_INCREMENT,
product_category_name varchar(100) NOT NULL,
product_category_desc varchar(500) DEFAULT NULL,
priority int(2) DEFAULT ‘0’,
create_time datetime DEFAULT NULL,
last_edit_time datetime DEFAULT NULL,
shop_id int(20) NOT NULL DEFAULT ‘0’,
PRIMARY KEY (product_category_id),
CONSTRAINT fk_procate_shop FOREIGN KEY (shop_id) REFERENCES tb_shop (shop_id)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

----------

##商品详情图片

###实体类

package com.artisan.o2o.entity;

import java.util.Date;

public class ProductImg {
private Long productImgId;
private String imgAddr;
private String imgDesc;
private Integer priority;
private Date createTime;
private Long productId;

public Long getProductImgId() {
    return productImgId;
}

public void setProductImgId(Long productImgId) {
    this.productImgId = productImgId;
}

public String getImgAddr() {
    return imgAddr;
}

public void setImgAddr(String imgAddr) {
    this.imgAddr = imgAddr;
}

public String getImgDesc() {
    return imgDesc;
}

public void setImgDesc(String imgDesc) {
    this.imgDesc = imgDesc;
}

public Integer getPriority() {
    return priority;
}

public void setPriority(Integer priority) {
    this.priority = priority;
}

public Date getCreateTime() {
    return createTime;
}

public void setCreateTime(Date createTime) {
    this.createTime = createTime;
}

public Long getProductId() {
    return productId;
}

public void setProductId(Long productId) {
    this.productId = productId;
}

}


----------

###数据库表

– Table structure for table tb_product_img

CREATE TABLE tb_product_img (
product_img_id int(20) NOT NULL AUTO_INCREMENT,
img_addr varchar(2000) NOT NULL,
img_desc varchar(2000) DEFAULT NULL,
priority int(2) DEFAULT ‘0’,
create_time datetime DEFAULT NULL,
product_id int(20) DEFAULT NULL,
PRIMARY KEY (product_img_id),
CONSTRAINT fk_proimg_product FOREIGN KEY (product_id) REFERENCES tb_product (product_id) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;


----------


##商品

###分析

![这里写图片描述](https://img-blog.csdn.net/2018051412415497?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3lhbmdzaGFuZ3dlaQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)


----------

###实体类

package com.artisan.o2o.entity;

import java.util.Date;
import java.util.List;

public class Product {

private Long productId;
private String productName;
private String productDesc;

/**
 * 简略图
 */
private String imgAddr;

/**
 * 原价
 */
private String normalPrice;

/**
 * 折后价
 */
private String promotionPrice;
private Integer priority;
private Date createTime;
private Date lastEditTime;

/**
 * -1 不可用 0 下架 1 展示
 */
private Integer enableStatus;

/**
 * 产品对应的详情列表,一对多
 */
private List<ProductImg> productImgList;

/**
 * 产品所属产品目录
 */
private ProductCategory productCategory;

/**
 * 产品所属店铺
 */
private Shop shop;

public Long getProductId() {
    return productId;
}

public void setProductId(Long productId) {
    this.productId = productId;
}

public String getProductName() {
    return productName;
}

public void setProductName(String productName) {
    this.productName = productName;
}

public String getProductDesc() {
    return productDesc;
}

public void setProductDesc(String productDesc) {
    this.productDesc = productDesc;
}

public String getImgAddr() {
    return imgAddr;
}

public void setImgAddr(String imgAddr) {
    this.imgAddr = imgAddr;
}

public String getNormalPrice() {
    return normalPrice;
}

public void setNormalPrice(String normalPrice) {
    this.normalPrice = normalPrice;
}

public String getPromotionPrice() {
    return promotionPrice;
}

public void setPromotionPrice(String promotionPrice) {
    this.promotionPrice = promotionPrice;
}

public Integer getPriority() {
    return priority;
}

public void setPriority(Integer priority) {
    this.priority = priority;
}

public Date getCreateTime() {
    return createTime;
}

public void setCreateTime(Date createTime) {
    this.createTime = createTime;
}

public Date getLastEditTime() {
    return lastEditTime;
}

public void setLastEditTime(Date lastEditTime) {
    this.lastEditTime = lastEditTime;
}

public Integer getEnableStatus() {
    return enableStatus;
}

public void setEnableStatus(Integer enableStatus) {
    this.enableStatus = enableStatus;
}

public List<ProductImg> getProductImgList() {
    return productImgList;
}

public void setProductImgList(List<ProductImg> productImgList) {
    this.productImgList = productImgList;
}

public ProductCategory getProductCategory() {
    return productCategory;
}

public void setProductCategory(ProductCategory productCategory) {
    this.productCategory = productCategory;
}

public Shop getShop() {
    return shop;
}

public void setShop(Shop shop) {
    this.shop = shop;
}

}


----------

###数据库表

– Table structure for table tb_product

CREATE TABLE tb_product (
product_id int(100) NOT NULL AUTO_INCREMENT,
product_name varchar(100) NOT NULL,
product_desc varchar(2000) DEFAULT NULL,
img_addr varchar(2000) DEFAULT ”,
normal_price varchar(100) DEFAULT NULL,
promotion_price varchar(100) DEFAULT NULL,
priority int(2) NOT NULL DEFAULT ‘0’,
create_time datetime DEFAULT NULL,
last_edit_time datetime DEFAULT NULL,
enable_status int(2) NOT NULL DEFAULT ‘0’,
product_category_id int(11) DEFAULT NULL,
shop_id int(20) NOT NULL DEFAULT ‘0’,
PRIMARY KEY (product_id),
CONSTRAINT fk_product_procate FOREIGN KEY (product_category_id) REFERENCES tb_product_category (product_category_id),
CONSTRAINT fk_product_shop FOREIGN KEY (shop_id) REFERENCES tb_shop (shop_id)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

“`


总结回顾

总结回顾下数据模型


用户信息关联

通过用户Id关联

这里写图片描述


店铺信息关联

这里写图片描述


商品信息关联

这里写图片描述

猜你喜欢

转载自blog.csdn.net/yangshangwei/article/details/80304803