在数据库中包含太多表的不利影响是什么?

时间:2012-08-16 15:31:44

标签: database

在我解释我的问题之前,我想说我之前已经问过这样的问题,但我的问题是完全不同的,并且情况似乎与我的情况有根本的不同。阅读其他人的问题。

背景:

我正在为拥有 2505表的数据库的客户做一些工作。这2505个表由几百个WordPress实例表组成,因此这些表不需要相互通信或任何其他表。它可以很容易地成为250个数据库,每个数据库有10个表,而不是一个2505表的数据库。

更重要的是:这个特定的应用程序目前仅在一个美国州使用,目标是在所有50个州使用它。因此,这可能意味着最终将有2500 * 50 = 125,000个总表。令我觉得这是一个次优设计的标志,轻描淡写。

问题是客户端的开发人员对数据库了解甚少(例如,他不了解规范化,外键或唯一约束),解释为什么数据库中的2505个表不是好数据库是一个真正的挑战设计。

您如何向对数据库知之甚少的人解释单个数据库中的2505个表是个坏主意?(我正在寻找具体的,基于事实的,无可辩驳的原因。)

(顺便说一句,我认为问题的根源是平台选择 - WordPress可能不适合这项工作 - 但我想先解决数据库问题。)

5 个答案:

答案 0 :(得分:2)

如果此人不了解数据库,使用特定的技术参数可能没有多大帮助。最好是使用普通人可以(假装)理解的东西,最好是在他们的老板在场的情况下(或者给他们发送一封带有抄送的电子邮件给他们的老板)。

老板可能会回应说在不安全的中将多个表保存在一个数据库中,或者只是不是行业标准。生成的数据库将,可能崩溃,这可能会让客户真的生气。

这种沟通是操纵性的,但直接的技术性谈话可能会让你无处可去。如果开发人员什么都不懂,并且仍然坚持不同意你,那么谈论好的或坏的设计是没有用的(甚至可能比无用更糟糕 - 有时候使用糟糕的设计会让新手感到自豪,因为能够使用糟糕的设计表明他们的假设leet skillz)。你要说服老板;所以你必须说老板理解的语言。老板希望避免项目失败的风险,他们可能会同意使用非标准技术会增加风险。确切的技术证明可能没有必要,表达了你所说的更好的确定性(这通常很难过,但在这种特殊情况下它适用于你)。

答案 1 :(得分:1)

为什么不直接测试并报告测试结果?只需将现有生产数据克隆50次到新表中,然后针对它运行一些流量。

这是无可辩驳的,不需要简化隐喻,也不具有欺骗性(就像其他答案所暗示的那样)。

答案 2 :(得分:0)

为什么不尝试告诉他数据库就像一个柜子,每个桌子都是抽屉。

现在让他想象一下2505或125,000个抽屉柜子......为了使它更具挑战性,他将没有梯子或其他方式到达顶部抽屉。

答案 3 :(得分:0)

如果你试图向非技术人员解释为什么这样的数据库很糟糕,你就不能像我们许多人那样详细说明。

现在,虽然它可能(或不是)是真的,但你可以使用一些简单的答案:

a)“如果你有更多的表,获取日期的命令(查询)将变得太复杂/大 - 这意味着你的系统不会那么敏感/快速/等”

b)“如果发生任何不良事件或者您需要修改数据库,您将需要支付更多费用,因为它没有经过优化,而且无论您付出什么代价都会有更难的时间”

无论如何,这就是我的解释方式。

祝你好运!

答案 4 :(得分:0)

货币。

开发人员需要花钱。维护需要花钱。

与黑板会面或发送电子邮件,其中包含以下内容:

Developer Costs £500 per day

Creating the tables behind the application
-----------------------------------

Time to create 1 table = 20 minutes
Time to create 125,000 tables = 125,000 x 20 = 2,500,000 minutes
Cost to create 125,000 tables = 2,500,000 / 60 / 8 * 500 = £2,604,166


Updating the application
-----------------------------------

Time to update 1 table = 5 minutes
Time to update 125,000 tables = 125,000 * 5 = 625,000 minutes
Cost to update 125,000 tables = 625,000 / 60 / 8 * 500 = £651,041

Cost in 1st month
-----------------------------------
£654,041 + £2,604,166 = £3.258m

转换为当地货币,并指出“老板”每次想要改变某些东西时都会节省这么多现金。只是为了确保你不会因此而无法在正常程序之上指出这是额外的