mysql数据库结构 - 数据只与每个用户相关,因此用户表?

时间:2011-07-11 15:36:04

标签: php mysql database-design multi-tenant

我想为卡车司机建立一个在线日志。目标是在卡车司机登录后,他/她立即看到他/她今年/月/日的驾驶总数的快照,以及每年/每月/每天的一些其他总计。 因此,存储在数据库中的信息仅与每个用户(卡车司机)相关。我个人不需要整个数据库中的任何统计数据(仅限每个用户)。

假设有10,000个用户。

我的问题与mySQL数据库的设计有关。

由于存储的信息仅与每个用户相关而非质量,因此将数据存储在每个用户的表中是否有意义...导致多达10,000个表?这会产生最有效/最快的数据库吗? OR 我应该将所有行转储到一个大的“日志”表中,并将其与另一个表“用户”相关联....即使只对每个用户进行分析?

以下是每个用户需要存储的一些信息(最多约30列): 日期 - 卡车制造/型号 - 卡车ID - 路线# - 从 - 到 - 总时间 - 停止 - 耗气量 - 夜间 - 船员(第二司机) - ......

3 个答案:

答案 0 :(得分:1)

此处简化示例

User
user_id
first_name
last_name

Truck
truck_id
truck_make
truck_model

Route
route_id
user_id
truck_id
route_from
route_to
gas_consumption

如果没有更多细节可以继续下去,我就是这样做的。

答案 1 :(得分:1)

我建议去单独的桌子,但也许在你的情况下,一张大桌子是一个很好的计划。

假设您编写高效的MySQL来访问数据,那么您应该对大型数据集(例如您所描述的数据集)没有问题。

我会看看MySQL / Rails Performance: One table, many rows vs. many tables, less rows?,了解更多关于为什么选择表根目录可能是一个好主意的信息。此外,Which is more efficient: Multiple MySQL tables or one large table?包含有关该主题的一些有用信息。

答案 2 :(得分:0)

您正在描述多租户数据库。 SO有一个标签;我为你添加了它。

MSDN有一篇不错的文章给你一个overview of the issues involved in multi-tenant databases。结构范围从无共享共享所有内容。请注意,在“共享所有”结构中,数据库所有者(可能)编写一个破坏用户隔离的查询并将一个用户的数据公开给其他用户是相当容易的。