通常会有个图片服务器和图片表。
图片表(image)结构:
id 编号
type 所属版块
tid 所属版块的id
url 图片路径
thumb 缩略图路径
新闻表(news)
id 编号
title 新闻标题
content 新闻内容
img_id 缩略图在image表里的id
比较新闻版块里添加一篇有图片的文章,有添加时处理如下:
1.保存图片,并返回图片的文件名 a.jpg。
2.插入文件名,缩略图,所属版面这些信息到图片表里。sql为 insert into image(type,url,thumb) values(‘news’,upload/news/a.jpb’,upload/news/thumb.a.jpb’),成功后返回id为7
3.保存新闻信息,并且将返回的图片id插入到新闻表里。insert into news(title,content,img_id) valeus(‘吃饭了’,’吃饭的具体内容’,7)
这是最简单的操作,在显示图片文章列表时会有个问题,每一次显示文章缩略图都会根据这篇文章的img_id字段去image表里找相应的缩略图,select thumb from image where img_id=7,这样就造成每次显示缩略图列表时都会有这个sql查询。流量大时必然影响效率,那如何避免呢?
要避免这个问题只要在插入图片后,把thumb字段的值返回,在news表里新加一个thumb字段,表示这篇文章的默认缩略图,然后把返回的thumb插入到news表thumb里就行了。操作流程如下:
1.保存图片,返回a.jpg。
2.插入图片信息到image表里。返回thumb值 thumb.a.jpg和id
3.插入新闻信息到news表,insert news(title,content,thumb,img_id) values(”,”,’thumb.a.jpg’,7)
这个貌似没啥问题,可是细一看,会发现如果需要找出这篇文章的所有图片是找不到的。img_id这个只表示条记录,如果有多张图片,那怎么办。这就用到前面的image表里的tid字段,这个tid就是文章的id。那添加一个图片文章的流程就得改一下了。
1.保存图片,返回a.jpg。
2.插入图片信息到image表里。返回thumb值 thumb.a.jpg和id
3.插入新闻信息到news表,insert news(title,content,thumb,img_id) values(”,”,’thumb.a.jpg’,7),返回文章id 10
4.更新image表,update image set tid=10 where id=7