2013-04-11 146 views
0

我正在努力寻找构建适用于我的项目的结构的最佳方式。答案可能很简单,但由于大量的列或表,这取决于它的设置。为大型数据集创建MySQL数据库模式

我们有几种工具,每种工具都可以为许多客户运行。每个工具都有一系列填充答案数据库的问题。工具运行后,我们填充另一系列数据,即工具的输出。我们有大约10个工具,全部填充1500个数据点的电子表格。这是我奋斗的地方......每个工具都可以运行多次,许多工具共享相同的数据点。我的下一个项目是构建一个可以开始工具数据输入的应用程序,但允许导入与已经运行的工具共享相同数据点的数据。

一个简单的例子: 工具1 - 公司,numberofusers,numberoflocations,成本 工具2 - 公司,numberofusers,的TotalStorage,employeepayrate

因此,如果在同一家公司完成的工具1,我需要能够填充“numberofusers”(或提供填充)当它们完成工具2时,因为它已经存在。

我认为最好是创建一个具有1500个表格的结构,每个数据元素包含1个数据元素,每个数据元素周围都有附加数据,或者创建一个巨大的表格 - 比如。 ..

的customerID(FK),事件ID(FK),ToolID(FK),numberofusers,numberoflocations,成本,总的存储,员工工资,.....(1500)

如果我走这条路并有一张大桌子我不知道这将如何影响性能。同样,维持1500张桌子的难度也是如此。

另一个方面是,它可以很好地描述每个字段: numberofusers,title,description,active(bool)。我认为这是唯一可能的,如果每个元素都在自己的表中?

想法?建议?对不起,冗长的问题,新的在这里。

回答

0

建立一个包含所有常见数据的主表:公司,#用户,..其他的东西。给每一行一个唯一的ID。

使用上面的公司ID为每个唯一工具建立一个表格,以及该实施的唯一数据。为每个表格提供“工具使用”和“公司”的主要(唯一键)。

这涵盖了一个地方的常见数据,标识每个“客户”,并为每个客户提供给定工具的多种用途。每个用户和客户都是可追踪和独特的。

更多关于normalization这里。

0

我同意etherbubunny规范化,但对于较大的数据集,性能考虑很快变得重要。规范化数据库中经常需要的连接才能显示人类可读的信息,因此即使是中等规模的表也需要性能杀手,这就是为什么很多数据仓库模型使用非规范化数据集进行报告的原因。这主要是通过大量使用索引,归档和分区将联合报告数据预先构建到新表中。

在许多情况下,智能使用分区本身也可以有效地帮助减少被查询的数据集的大小。这通常需要相当多的维护,除非某些参数保持不变。

最后在你的情况下(和大多数人),我强烈建议你按照你能够维护和理解正在发生的事情来构建它,然后通过慢查询日志,解释和性能监视工具(例如percona's工具集。这会让你深入了解真正发生的事情,并为你提供一些数据返回这里或MySQL论坛。我们总是可以在这里进行推测,但最终真实的数据和您的设置将成为您最适合的原动力。