既然是到详细设计阶段,那肯定是要将前端和后端合起来考虑的。
在前端展示的时候,都会有一个列表页面,列表页面会列出商品的一些简要信息,在用户端、后台管理系统,都会有。然后,每条简要的信息,可以点进去,查看某个商品的详细信息。对于这种情况,我之前看过一些开发的做法,都是用一个类来描述,在列表页面显示商品的时候,就把商品的所有信息都查了出来,只是前端在展示的时候,只选择一部分信息展示。但是一个商品的详情信息,通常是来自于几张表,也就意味着,首页只需要展示商品的几条信息,而后端却查询了很多不必要的表,后果就是用户在打开首页,或是后台管理员打开列表页面的时候,加载缓慢。这种情况下,最好是用两个类来描述商品,先用一个类,描述商品的概要信息,再用一个类,继承概要信息的类,把商品的详情信息描述完。那么,在设计数据库的时候,就要尽量把商品的概要信息,都放到一张表里面,这样,在首页的列表展示商品的时候,只需要查询一张表就可以了。当然,在实际中,用一张表可以描述完商品的概要信息,但首页显示的数据,通常只查一张表是实现不了需求的,比如,首页显示的商品要依据销量倒序排列,而销量是来自于订单模块的表,只查一张表的话,就做不到了。只能是尽量做到少查表,不是必须查的表,就不查。
在后台管理系统里,可以做成所有的图片,统一进行管理,那么就需要设计一个图片类,数据库中也需要设计一张表,用于存储图片的信息。所以,这张图片的表,就是需要建的第一张表,建表语句:
CREATE TABLE image(
id INT PRIMARY KEY AUTO_INCREMENT COMMENT '自增长主键id',
name VARCHAR(50) COMMENT '用户上传时的图片名称',
addr VARCHAR(100) NOT NULL COMMENT '图片地址',
user_id INT COMMENT '图片上传者的id',
create_time TIMESTAMP COMMENT '图片上传时间'
)COMMENT '图片管理表' ENGINE=INNODB DEFAULT charset=utf8;