我目前正在试验一个允许用户发布音乐和照片的网站。我最初的想法是拥有一个存储标准帐户信息的全球用户数据库,然后每个用户将生成她自己的数据库,用于存储上传媒体的信息,即标题/艺术家/文件位置。所有媒体文件都将存储在一个单独的系统中,并在需要时调用。
我不确定为每个用户生成一个数据库......这是正确的做法吗?还有什么是使媒体存储安全的最佳方法?
不要为每个用户生成一个新数据库。在某些特定条件下,这可能是正确的做法,但通常应该避免。
相反,在您的每个媒体实体中使用对用户标识符的引用。例如,假设我们正在使用具有两个表的 SQL 数据库:users
和media
:
用户表如下所示:
id name email
-----------------------------------------
1 John Doe john.doe@example.com
2 Jane Doe jane.doe@example.com
同样,您有一个媒体表,例如:
id title user_id
-------------------------
1 Nice picture 1
2 This too! 2
现在,只需确保user_id
在media
表中是指向表中id
字段的外键users
。
在安全性方面,您现在需要确保当您的用户访问数据时,她只能修改(或查看)她拥有的数据。例如,为了返回我们用户拥有的媒体Jane Doe
,您可以查询:
SELECT * FROM media WHERE user_id=2;