假设我有照片管理数据库,目前有100个用户注册,每个用户有10000张照片绑定到他们的user_id。每个用户只能访问自己的照片。
每个用户拥有100张表(其中user_id作为表名)是否更有效率,每张用户拥有10,000张照片或包含所有1,000,000张照片的单张表 OR 与数据库性能有关的方式没有任何差异吗?
在这两种情况下,数字将继续增加(即更多用户或更多照片)
编辑:我目前正在使用MySQL来构建数据库,并且最初考虑将链接存储到最有可能存储在单个文件夹中的图像。我想我已经对如何处理这个问题有了更好的了解!感谢您的回复!
答案 0 :(得分:2)
对于多对一关系,您可能只需要两个表。包含用户ID的表(广告可能是其他用户信息),包含照片和用户ID的表(外键键入用户表)。
这样的事情: 用户表
UserID Name DateJoined etc.
1 Dan 2015-01-01 ...
2 Jim 2015-02-01 ...
照片表(您可以将实际照片存储在表格中,如果您打算在SQL Server上使用FILESTREAM;我认为我不会在MySQL上推荐它)
PhotoID UserID PhotoPath PhotoTitle
1 1 '/img/asdf.jpg' 'My favorite'
2 2 '/img/asdf2.jpg' 'First!'
3 1 '/img/asdf3.gif' 'Animated favorite'
您的ImagePath必须是唯一生成的(使用GUID / UUID作为文件名,将所有用户的照片存储在特定目录中,或者沿着这些行存储)。
如果您真的只想存储照片并将其与用户关联,您可能需要考虑NoSQL / Document数据库。