功能模块分析和数据库建表和实体类

系统功能模块


image.png
image.png

实体类解析


image.png

商品与详情图片是一对多关系
区域实体类


image.png

权重越大,区域显示越靠前。

首先创建包com.imooc.o2o.entity并且创建Area类


image.png

按住ctrl+shift+f对齐,Date导入的是util包下的。
然后右键source选择生成我们的读写器。
这里为什么要使用引用类型而不是基本类型,原因是基本类型会为我们的空值赋值一个默认的值,也就说如果你这个字段int可以为空,如果是基础类型,它会给你赋值为0,这不是我们想要,null就是null。

创建数据库

image.png

varchar是可变长的,如果长度没有达到200它会自动去缩小。
int(2)这个2是什么意思,int类型数据的字节大小在mysql5.5+中固定是四个字节;所以不管你int(2),还是int(11)都是一样四个字节,2和11是显示的位数,一个是2位一个是11位,假如你存入的是76,int(2)显示的就是76,如果你存入的是7,int(2)就会存07,假如你存入786,它就会显示768,只要数据在2-32到2的31-1就行。
varchar(200)中的20表示的是varchar数据的数据长度最大是200,超过则数据库不会存储;如果不带ZEROFILL选项,那么左侧就会以空格填充
总结: int(M) M表示的不是数据的最大长度,只是数据宽度,并不影响存储多少位长度的数据; varchar(M) M表示的是varchar类型数据在数据库中存储的最大长度,超过则不存;
https://blog.csdn.net/u014143369/article/details/60386547
https://blog.csdn.net/pangchengyong0724/article/details/52116463

  • 还有注意:写sql语句字段是``括起来而不是‘’不是单引号而是esc键下的。。。。别打错了。数字就是‘’。
  • mysql两种表示时间的类型是datetime和timestamp,为什么这里使用datetime,因为datetime的时间范围为1000年1月1号到9999年12月31号而timestamp是1970到2037年。但是timestamp有个优势是当你每次从数据库里取这个timestamp的时候,它会自适应你电脑的时区。我们这里只在一个校园,所以时区没影响。
  • 记得创建表的时候最好都得加上主键,唯一键是什么?
    UNIQUE 约束唯一标识数据库表中的每条记录。
    UNIQUE 和 PRIMARY KEY 约束均为列或列集合提供了唯一性的保证。

PRIMARY KEY 拥有自动定义的 UNIQUE 约束。

请注意,每个表可以有多个 UNIQUE 约束,但是每个表只能有一个 PRIMARY KEY 约束。
unique相关操作http://www.w3school.com.cn/sql/sql_unique.asp

  • Mysql主要有两个引擎,一个是InooDB和MYISAM,这两个有什么区别?
    MYISAM是表级锁,就是说假设你一个线程在更新表的第二行记录,是锁完整张表的,另外一个线程是想要更新第一行记录是改不了的。必须得等待线程一更新完,释放好锁了之后,另一个线程才可以去更新第一行数据。但是MYISAM也有优点,它读的性能是非常高的,因为是基于全表扫描的。而InooDB是基于行级锁的,一个线程正在更新第二行,另一个线程可以并发更新第一行的。这里由于我们数据涉及到更新,特别是我们的商品,所以我们设置InooDB.

  • auto_increment=1,说明我们的主键是按1递增。


    image.png

    用户类

  • 身份标识是用户是顾客还是店家还是超级管理员。

  • 状态表明用户是否有资格登录我们的商城。


    image.png

    image.png
  • 头像取的是微信的头像地址url,所以varchar设置长一点1024.
    -innodb在写的性能方面是略高于myisam,而myisam在读的性能是要远大于innodb,因为innodb支持事物的控制。要付出的代价更大,如果只是读的话用myisam,使用事务就用innodb。


    image.png

两个与用户信息相关联的实体类


image.png
  • 用户id是外键,openid是作为微信账号和我们的公众号绑定的唯一标识。
  • openId是字母跟数字组成的所有使用varchar
  • openId创建唯一索引,在业务上openId是唯一的,从性能上说我们会在数据表中根据openId去检索对应的wechat的信息。如果设置了唯一索引,就能提升我们的查询性能。为什么索引可以提升查询性能呢?因为索引相当于字典的偏旁部首,但是物极必反,索引也是需要维护的太多的话也会影响我们的数据库的性能。
image.png

image.png

image.png

image.png

image.png
image.png
  • 上级id,例如奶茶店的上级id是首页的美食饮品。可以通过这个上级id来实现无限分级,如果这个上级id为空,它就是根类,往下往下就是我们的子类。如果不为空说明当前的店铺类别为子类。
  • 上级id也是一个店铺类


    image.png
image.png
  • 建议是超级管理员对店铺的建议,店铺可以看到。
  • 状态为-1时,表示该店铺不能显示在前端并且店家不能发布商品,当为0是表示店铺刚创建出来等待超级管理员审核店家不能显示在前端,但是可以登录店铺系统发布商品,当为1是店铺可以显示前端并且发布商品。
  • PersonInfo owner表示店铺是谁创建的


    image.png

最后三个商品类别,商品,详情图片

image.png

三个关联图
用户信息关联


image.png

店铺信息关联


image.png

商品信息关联
image.png

你可能感兴趣的:(功能模块分析和数据库建表和实体类)