mysql - 针对多用户 Web 应用程序的高效 MySQL 数据库设计

标签 mysql database

我正在开发一个网站,允许用户跟踪个人手工艺品的销售数字。它的工作方式是用户将能够提交/编辑每周的销售数据,然后一旦数据被存储,就能够以各种形式的表格或图形查看它,跟踪趋势等。

我担心的是,随着用户群的增长,如果它增长了,我希望数据库设计能够随着用户群的增长而扩展,并且易于管理。当涉及到像这样的适当网络应用程序时,我是自学的,虽然我拥有组装网站所需的所有 PHP 和 JS 知识,并且我之前使用过 jQuery,但我不太确定这一点。

我最好是将用户的每周报告存储在一个大表中,还是创建一个单独的数据库,其中每个用户都有自己的表,进而包含该用户的每周报告?为图表提取这些数据比更改或添加要多得多,因此我的目标主要是存储/调用数据的效率和简单性。

最让我难过的是处理不同用户将拥有不同数量的产品并且这些数量会发生变化这一事实的最佳方式。在用户的第一周,他们可能记录了 2 件商品的销售额,但到了第三周,他们将新商品添加到他们正在销售的商品列表中。数据库需要以低开销允许这种事情,因为大多数用户将拥有不止一种产品。

你会如何构建这个数据库?

最佳答案

我建议使用一个带有 innoDB 引擎的大表来进行行级锁定而不是表锁定。然后对用户名和进入时间创建索引。

我建议每个用户的表有点多,您会浪费为用户可能不需要的表分配的硬盘和数据库空间。 mySQL 支持 5+ 百万行没有问题,即使您的表变得那么大。

简单是最好的。

关于mysql - 针对多用户 Web 应用程序的高效 MySQL 数据库设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10936430/

相关文章:

mysql - 清除 MySQL 查询缓存而不重新启动服务器

mysql - 系统[1] : Failed to start MySQL Community Server while installing mysql-server

mysql - 优化 NOT IN 子查询

MySQL : How to run batch of sql scripts from a folder

java - 使用日期和时间创建日期时间

database - DB2 创建事件监视器

mysql - max_allowed_pa​​cket 的值是否有最大限制?

mysql - PhpStorm 可以将 MySQL 数据库转储到 sql 文件中吗?

java - 使用数据库查询更新 JTable

database - Laravel DB facade 如何表达 LIKE