我目前正在尝试一个允许用户发布音乐和照片的网站。我最初的想法是拥有存储标准帐户信息的用户的全球数据库,然后每个用户将生成她自己的数据库,该数据库存储上载的媒体上的信息,即标题/艺术家/文件位置。所有媒体文件都将存储在一个单独的系统中,并在需要时进行调用。
我不确定为每个用户生成数据库......这是正确的做法吗?还有什么是使媒体存储安全的最佳方法?
答案 0 :(得分:0)
不要为每个用户生成新数据库。 可能在某些特定条件下的正确做法,但通常应该避免。
而是在每个媒体实体中使用对用户标识符的引用。例如,假设我们使用的SQL数据库有两个表:users
和media
:
users表看起来像这样:
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;