我应该使用1个数据库进行发布,配置和身份验证还是将其拆分?

时间:2012-01-02 05:48:20

标签: php mysql database security

我正在设计一个基于PHP和MySQL的基于博客的网站系统。它基于这种结构:

  • 所有内容都有唯一的ID,称为实体ID或ENID。
    • 主表包含所有ENID,因此没有重复项。
    • 有四种类型的实体:帖子,修订版,模块和用户
    • 这一切都可以让id.php询问网站上的任何资源,并知道如何处理它。
  • 帖子被归类为模块。例如,文档,消息,事件等都属于单独的模块。
  • 帖子引用修订表中的特定行以显示给用户。

我想知道,最好将四个实体和主表分开到不同的数据库中,还是最好将它们全部保存在一个数据库中?安全是首要任务。

4 个答案:

答案 0 :(得分:5)

我没有看到如何将这些东西拆分到单独的数据库本身可以提高安全性。它只会使您的应用程序代码复杂化。

将它们存储在同一个数据库中,并将您的安全工作集中在其他方面:防火墙,sql清理等。

将身份验证信息保存在同一个数据库中是绝对可以接受的。大多数人这样做。只需确保您不以纯文本格式存储密码(您应该存储salted hash)。

答案 1 :(得分:2)

我个人认为一个数据库就足够了。

此外,我不认为使用多个数据库会以任何方式增加安全性,但我可能是错的。

答案 2 :(得分:1)

我认为您不需要将您的信息存储在不同的数据库中。所有这些都属于一个系统。使用不同的数据库时,您将完成许多任务,而您必须关心许多数据库而不是一个数据库。

在这种情况下,您最好只拥有一个数据库,并专注于安全问题。

顺便说一句,不要忘记,出于不同的原因,你需要关键列之间的关系。所以至少,当你只有一个包含不同表的数据库时,使用不同的数据库将迫使你做更多的事情。

答案 3 :(得分:1)

一个数据库应该没问题。我经常进行设置,以便每个应用程序/服务使用一个数据库,其中包含不同的表,用于存储我想要的各种信息。