一个商品对应多张图片,数据库这样设计是否合理??有没有更好的办法?
商品表:goods
id 商品ID
describe 商品描述
pic1Count 商品白天拍照效果的图片总数
pic2Count 商品晚上拍照效果的图片总数
图片表:pictable
id 本张图片的ID
tableName 图片所属的表的表名(如:goods)
tableFieldName 图片所属的表中的字段名(如,pic1count 或者 pic2count),该字段用于区分同一个表中不同性质的图片
picAddr 图片地址
数据库查询时候的处理办法:
要想获取goods表中的pic1count的所有图片,则SQL语句这么写
select * from pictable where tableName='goods' and tableFieldName='pic1count';
-------------------------
以上就是我的设计方案。
现在有些问题:
1 查询效率问题
这么做,如果图片表小的时候,效率上没什么区别,但是,如果图片表数据在9千万条的时候,我每次这么一查,就得从9千万条中去搜索可能每个商品就那么三四张图片。这个效率上是有问题的了。
2 硬编码问题
图片表中,保存的是表名和字段名,这就存在很明显的硬编码问题了,万一以后表名和字段名需要改动,岂不是很麻烦了??
所以,大家说下你们一般都是怎么设计这个的吧,提下你的宝贵意见,谢谢!
注意:举例的时候,请考虑到 商品表 中会存在 不同性质图片的情况,而不只是一种性质的图片。因为如果只是一种的话就简单了,直接 图片表 里存 商品表名就足够了。不需要 字段名 来区分了。