Zak*_*ziz 0 mysql database database-design
我在数据库设计方面的表现并不是很好,所以我来找你们帮忙.我有一个包含用户记录的表.平板电脑看起来像这样:
+----------+----------+----------+----------+----------+----------+----------+---------
| id | username | password | firstName| lastName | birthDate| pictures| .....
+----------+----------+----------+----------+----------+----------+----------+---------
| . | . | . | . | . | . | . |
| . | . | . | . | . | . | . | .....
. . . . . . .
Run Code Online (Sandbox Code Playgroud)
图片字段表示用户上传了多少张图片.
我写了一个功能,允许用户将图片上传到我们的服务器.上传的文件被命名为随机的.用户只允许6张图片.
我目前正在获取文件的位置并将位置存储在如下所示的表中:
+----------+----------+----------+----------+----------+----------+----------+---------
| id | username | default | pic1 | pic2 | pic3 | pic4 | .....
+----------+----------+----------+----------+----------+----------+----------+---------
| . | . | . | . | . | . | . |
| . | . | . | . | . | . | . | .....
. . . . . . .
Run Code Online (Sandbox Code Playgroud)
假设用户具有多于0个图片,当访问用户简档时,调用"默认"字段以获得哪个列存储默认图片的地址.例如,如果'default'等于2,则首先拉出并返回来自列'pic2'的数据,然后其他非空列将返回它们各自的数据.
我的第一个问题是:这种方法有多个表是个坏主意吗?实现一个设计,其中图片有自己的专栏一个坏主意?
正如你们所知,这种方法在最小程度上是不可扩展的.实现此配置文件系统的优秀,高效,可扩展的设计是什么?我期待有50,000到60,000名用户.
如果可能的话,也可以给我推荐一本好书,它将为我提供数据库设计的速成课程!(速成课程请不要太长或详细!)
除非有非常具体的原因,为什么你需要这个设计(高度怀疑它)我认为你应该采取类似的方式:
users:
- id
- username
- email
- ...
pictures
- id
- user_id
- default (or order)
- picture_location
Run Code Online (Sandbox Code Playgroud)
这可以很好地扩展(假设你有一个user_id的索引),你也可以轻松地改变你对每个用户限制的最大图片的想法.当然,限制将由您的申请强制执行.
| 归档时间: |
|
| 查看次数: |
2853 次 |
| 最近记录: |