Database 存储和检索多个化身图像大小

Database 存储和检索多个化身图像大小,database,Database,我正在建立一个论坛类型的网站,用户将有一个头像。主页将有一个小版本,而单个页面将有一个大版本的化身 因此,为了带宽,我将有不同的尺寸: example.png example_thumb.png 对于不同的尺寸,首选的存储和检索方法是什么 以下是我到目前为止的想法: User Table UserId | AvatarName | AvatarExt 1 | example | .png 这样,只要我知道有一个'u thumb

我正在建立一个论坛类型的网站,用户将有一个头像。主页将有一个小版本,而单个页面将有一个大版本的化身

因此,为了带宽,我将有不同的尺寸:

example.png
example_thumb.png
对于不同的尺寸,首选的存储和检索方法是什么

以下是我到目前为止的想法:

User Table    UserId  |  AvatarName  |  AvatarExt
              1       |  example     |  .png
这样,只要我知道有一个'u thumb'版本,我就可以用相同的查询获得base和thumb版本

或者我应该这样创建一个元表:

UserMeta      UserId  |  Avatar             |  AvatarType
              1       |  example.png        |  original
              1       |  example_thumb.png  |  thumbnail

我希望得到一些建议

任何一个都可以,不过为了便于使用,我会选择meta表,特别是在扩展预计不会更改的情况下


我看不出将文件名和扩展名存储在单独的列中有任何好处。

您的思路是正确的

用户:

id
username
...
化身

id
user_id
avatar_type(original, thumbnail)
file_name
然后你可以做:

select * from avatars where user_id = $user_id and avatar_type='thumbnail'

这可以让你,比如说,允许用户以后在不修改你的表的情况下拥有多个化身。

我会避免称它为UserMeta——这并不能真正捕捉到这种关系。从用户到化身,这种关系实际上是一对多的关系。因此,您应该有一个用户表和一个化身表,每个用户的化身表中都有0条或更多记录。根据您当前的需求,每个用户通常有2条记录,但假设您稍后决定允许用户拥有多个化身-您实际上不需要更改此结构来适应这一点。我使用了“UserMeta”作为示例。我完全明白你的意思,把它命名得更好。你帮了大忙,谢谢你。sql语句让一切看起来都很简单!太棒了,谢谢你的帮助!