【发布时间】:2011-12-27 22:43:56
【问题描述】:
我在数据库设计方面不是很好,所以我来找你们寻求帮助。我有一张用户记录表。平板电脑看起来像这样:
+----------+----------+----------+----------+----------+----------+----------+---------
| id | username | password | firstName| lastName | birthDate| pictures| .....
+----------+----------+----------+----------+----------+----------+----------+---------
| . | . | . | . | . | . | . |
| . | . | . | . | . | . | . | .....
. . . . . . .
图片字段表示用户上传了多少张图片。
我编写了一个功能,允许用户将图片上传到我们的服务器。上传的文件被随机命名。用户只允许使用 6 张图片。
我目前正在获取文件的位置并将位置存储在如下所示的表中:
+----------+----------+----------+----------+----------+----------+----------+---------
| id | username | default | pic1 | pic2 | pic3 | pic4 | .....
+----------+----------+----------+----------+----------+----------+----------+---------
| . | . | . | . | . | . | . |
| . | . | . | . | . | . | . | .....
. . . . . . .
假设用户拥有多于 0 张图片,当访问用户个人资料时,会调用“默认”字段以获取哪个列存储默认图片的地址。例如,如果 'default' 等于 2,则将首先提取并返回 'pic2' 列中的数据,然后其他非空列将返回各自的数据。
我的第一个问题是:这种拥有多个表的方法是不是一个坏主意?实施图片有自己的列的设计是个坏主意吗?
正如你们所看到的,这种方法一点也不可扩展。什么是实现此配置文件系统的良好、 高效 的可扩展设计?我预计会有 50,000 - 60,000 个用户。
如果可能的话,请向我推荐一本好书,它会给我一个数据库设计速成课程! (速成课程请不要太长或太详细!)
【问题讨论】:
标签: mysql database database-design