新手问题 图片数据表怎样设计?

chairy11 · 2013年07月28日 · 最后由 yggg 回复于 2013年07月31日 · 4001 次阅读

如果我有很多种图片,比如,头像图片,衣服图片,风景图片。 那我应该是:

方案一:分别在用户表(user)、衣服表(dress)、风景表(landscape)中插入几列,包括图片名称、宽度、高度;

方案二:单独建多个图片表,用户图片表(user_image)、衣服图片表(dress_image)、风景图片表(landscape_image),每个表都有、对应主体 ID(user_id、dress_id、landscape_id)、图片名称、宽度、高度;

方案三:单独建一个图片表(image),然后利用多态(不懂,类似这意思,对应不同种类的主体),这个表有对应类型(user、dress 或 landscape)、主体 ID、图片名称、宽度、高度。

各位高手,三个方案哪个更好?哪个效率最高?或是还有其它思路吗?

-------------------- 不知道我表达清楚没有? 方案一把图片信息融入各主体的表中; 方案二为每种主体单独建图片表; 方案三为把所有图片集中在一个表)

-------------------- 注:买了又拍云的,我想图片信息有名字、宽高就够了吧?

我觉得方案三好,我觉得这样最 OO,所有类型的图片可以通过继承共享方法 参考这个: http://ihower.tw/rails3/activerecord-others.html

确实第三种不错 但不是因为 OO OO 总能实现 与数据库无关。

我觉得不同的图片要的缩略图不一致,还是分开的好

#6 楼 @kingwkb 我用又拍云,貌似缩略图是又拍云负责生成的。会影响我这边吗?

#7 楼 @chairy11 又拍不同的 bucket 缩略图才可以设置成不一样的。如果尺寸不一样还是分开好一点

#8 楼 @xmonkeycn 一个 bucket 可以设置很多种缩略规格嘛,那我要哪规格我在调用时就用哪个规格不就好了?

#9 楼 @chairy11 uypun 一个 bucket 的设置缩略图种类有上限的,好像是 15 个,你看看够用不。够用的话可以凑合。我自己的应用场景就很可能不够用了。 另外从备份的角度来说,不同类型的文件至少要放到不同目录吧。在实现 uploader 的时候要考虑到。

匿名 #11 2013年07月31日

方案一不能解决 1 个主体有多个图片的需求,不然的话是和方案 3 一样的 而且更方便

需要 登录 后方可回复, 如果你还没有账号请 注册新账号