【问题标题】:Using Sqlite in a web application在 Web 应用程序中使用 Sqlite
【发布时间】:2014-03-03 05:33:51
【问题描述】:

我目前正在开发一个允许医生动态生成发票的应用程序。事实上,每个医生需要 6 个不同的数据库表,可能有大约 50 个医生同时连接并同时使用数据库(写入和读取)。

我想知道我的应用程序的构造是否合适。对于每个医生,我创建了一个只有他可以连接的个人 Sqlite3 数据库(所有数据库都是安全的)。我会有 200 个 Sqlite 数据库,但是有什么问题吗?我认为这可能比为每个人都使用大型 MySQL 数据库更好。

这个解决方案可行吗?我会有问题需要处理吗?我从来没有做过这么多用户的应用程序,但我认为这可能是最好的解决方案

【问题讨论】:

  • 为什么它必须是单独的数据库,真的吗?如果不可避免,为什么不在 MySQL 服务器上分离数据库?
  • 每个医生都有不同的数据,还有很多数据,但是如果我在 MySQL 上有 1000 个不同的表可以吗?每个表中可能有 1000 行数据
  • 你为什么会有不同的桌子?只需有一列标识负责该行数据的医生。
  • 但这意味着遍历所有表以查找每个医生的数据?如果我只有一张表,这意味着每张表中至少有一万条数据。如果其中一位医生犯了错误,则所有表都已损坏
  • 如果你在表上有正确的索引,你就永远不会“迭代一万个数据”......而且医生不能犯这样的错误(希望,因为他没有直接访问数据库的权限),只有您的代码可以。如果您真的想分离数据,至少只需创建单独的数据库,其中包含具有各自访问权限的不同 SQL 用户;如果您真的热衷于安全性,那仍然有意义。

标签: php mysql database sqlite web-applications


【解决方案1】:

首先,回答您的问题:不,如果一个 sqlite 数据库一次仅由一个人(用户)使用,您可能不会遇到任何重大问题。如果您高度重视某些边缘情况,例如将一些用户/数据库移动到另一台服务器的能力,这可能是一个非常好的解决方案。

但这并不是一个非常好的设计。通常的方法是将所有数据放在同一个数据库中,并且表中有一个字段来标识哪些行属于哪些用户。应用程序代码负责维护安全性(即不让用户看到不属于他们的数据),并且数据库中的索引(您应该在所有情况下使用,即使在您自己的设计中)负责制作它快。

有大量的教程可以帮助你做出更好的数据库设计;一个随机的谷歌结果是http://www.profsr.com/sql/sqless02.htm

【讨论】:

  • 我的想法是用密码哈希的加密版本命名每个数据库,因此他们应该是唯一可以访问它的人
  • @solarBanana 不,坏主意。首先有权访问数据库的任何人都可以列出所有存在的数据库。这并没有提高安全性,只会让您感到困惑。
  • 只是补充说你可以有'影子表'。从查询创建一个视图,用用户名命名这个视图,并且只有这个用户才能访问这个表。这将增加一点数据安全性,没有用户会意外删除另一个数据。此外,在医疗行业,如果有“授权过程”,他们应该能够改变他们的“授权”(或从较低的授权级别开始,并增加它)。我从我输入数据时就知道,有时在获得所有可用结果之前,您不希望获得结果的完全授权。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-20
  • 2012-08-25
  • 2011-12-03
  • 2011-09-22
  • 2013-05-19
相关资源
最近更新 更多