当前位置: 首页 > 面试题库 >

为我的站点上的每个用户分配一个MySQL数据库是否合理?

司徒元明
2023-03-14
问题内容

我正在创建一个基于用户的网站。对于每个用户,我将需要一些MySQL表来存储不同类型的信息(即userInfo,quotesSubmitted和ratesSubmitted)。是一个更好的主意:

a)为站点创建一个数据库(即“ mySite”),然后在其中创建数百或数千个表(即“ userInfo_bob”,“
quotessubmitted_bob”,“ userInfo_shelly”和“ quotesSubmitted_shelly”)

要么

b)创建数百或数千个数据库(即“ Bob”,“ Shelly”等),每个数据库仅创建几个表(即“
Bob”内部:userInfo,quotesSubmitted,ratesSubmitted等)

我应该使用一个数据库,在该数据库中使用多个表,还是每个数据库使用多个数据库和几个表?

编辑:

问题是我需要跟踪谁对什么进行了评分。这意味着,如果用户对300条报价进行了评分,则我需要能够准确知道用户对哪些报价进行了评分。

也许我应该这样做?

一表报价。一个表列出用户。一张表记录了已进行的所有评分(即三列:用户,报价,评分)。这似乎是合理的。有什么问题吗?


问题答案:

使用一个数据库。

使用一张表容纳用户,用一张表容纳引号。

在这两个表之间,您有一个表,其中包含使用户与引号匹配的信息,该表将保存用户给出的引号的等级。

这种简单的设计将允许您存储几乎无限数量的报价,无限的用户,并且您可以将每个报价与零个或多个用户匹配,反之亦然。

中间的表将包含用户表和报价表的 外键

您可能会发现复习一些数据库设计基础知识会有所帮助,有关stackoverflow的问题很多。

从这些开始…

什么是归一化?

设计数据库时要记住的重要事项

“太多”有多少个字段?

更多表格还是更多列?



 类似资料:
  • 问题内容: 我希望将一列附加到我的表中,该列将是从顺序列表=到行数的随机数。 因此,如果我的表有 999行 ,则 数字1到999将被随机且唯一地分配 。 现在,我想到可以添加一个虚拟的TempRandomColumn = Rand(),然后对其进行排序,然后使用PHP依次添加数字。但这意味着999条MySQL语句。 有没有办法使用单个MySQL语句来做到这一点? 感谢您的指导。 问题答案:

  • 我们正在开发一个多租户应用程序。在体系结构方面,我们为业务逻辑设计了共享中间层,为数据持久性设计了每个租户一个数据库。也就是说,业务层将与每个租户的数据库服务器建立一组连接(连接池)。这意味着应用程序为每个租户维护单独的连接池。如果我们预计约有5000个租户,那么这个解决方案需要高资源利用率(每个租户的应用服务器和数据库服务器之间的连接),这会导致性能问题。 我们已经通过保持公共连接池解决了这个问

  • 问题内容: 我们正在构建一个eLearningMultipleChoice工具,成千上万的用户将完成我们的测试。我们已经有成千上万的其他研讨会的订阅者,因此很可能成千上万的人也将完成MC测试。 现在,我们需要跟踪每个用户回答的每个问题,花了他多长时间,是否正确(经过多次尝试之后),如果不是,他给出了哪个错误答案等等。确实有很多数据。 现在,我们将有成千上万的问题和成千上万的用户。由于每个问题至少要

  • 如何连接MySQL数据库中的某个表? 我曾经尝试过: 但这给了我一个错误:- 但是我已经创建了一个名为的表。是否有任何PHP代码连接到我的表在同一个数据库中,有多个数据库? 创建多个数据库是否足够明智 完整代码:

  • 问题内容: 我有一个字符串列表。我想为每个字符串分配一个唯一的数字(确切的数字并不重要),并依次使用这些数字创建一个长度相同的列表。以下是我的最佳尝试,但由于以下两个原因,我不满意: 假定相同的值彼此相邻 我必须以开头列表,否则输出将不正确 我的代码: 我想使代码更通用,因此可以使用未知列表。有任何想法吗? 问题答案: 无需使用外部库(检查 EDIT 以获取解决方案),您可以按照以下步骤进行操作:

  • 有没有一种好方法可以自动创建新用户并将其作为数据库所有者添加到Azure托管SQL Server上创建的每个新数据库中? 因此,基本上创建用户更改角色db_owner每次在服务器上创建新数据库时添加成员(或sp_addrolemember)。 TL;DR on'why':我需要让服务器上的每个数据库都可以访问(并且可以编辑、更改模式对象、更改数据等),并且有一个用户连接到与此问题相关的特定登录名。