4

在我解释我的问题之前,我想说我知道这种问题之前已经在 SO 上提出过,但我的问题的规模完全不同,而且情况似乎与我在其他上所读到的完全不同人们的问题。

背景:

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

更重要的是:这个特定的应用程序目前仅在美国一个州使用,目标是在所有 50 个州中使用它。所以这大概意味着最终将有 2500 * 50 = 125,000 个表格。说得轻松一点,这让我觉得这是一个次优设计的标志。

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

对于不太了解数据库的人,您如何解释单个数据库中的 2505 个表是一个坏主意?(我正在寻找具体的、基于事实的、无可辩驳的理由。)

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

4

5 回答 5

2

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

老板可能会说在一个数据库中保存许多表是不安全的,或者根本不是行业标准。生成的数据库会很,可能会崩溃,这可能会让客户非常生气。

这种交流是操纵性的,但直接的技术谈话可能会让你一事无成。如果开发人员什么都不懂,仍然坚持不同意你的观点,那么谈论好的或坏的设计是没有用的(可能比无用更糟糕——菜鸟有时会为使用糟糕的设计而自豪,因为能够与糟糕的设计一起工作证明了他们的应该是leet Skillz)。你要说服老板;所以你必须说老板懂的语言。老板想避免项目失败的风险,他们可能会同意使用非标准技术会增加风险。可能不需要确切的技术证明,对您所说的效果更好(这通常令人难过,但在这种特定情况下它对您有用)表达了强烈的确定性。

于 2012-08-16T15:54:17.597 回答
1

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

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

于 2012-08-16T16:19:52.693 回答
0

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

现在让他想象一下通过 2505 或 125.000 个抽屉的柜子……为了使其更具挑战性,他将没有梯子或其他方法可以到达最上面的抽屉。

于 2012-08-16T15:59:57.993 回答
0

如果您试图向非技术人员解释为什么这样的数据库不好,您将无法像我们许多人那样详细说明。

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

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

或者

b)“如果发生任何不好的事情或者您需要修改数据库,您将不得不支付更多费用,因为它没有经过优化,无论您付钱给谁做这件事都会更难”

反正我就是这么解释的。

祝你好运!

于 2012-08-16T16:10:47.343 回答
0

钱。

开发商花钱。维护要花钱。

与黑板开会或发送带有以下内容的电子邮件:

开发人员费用每天 500 英镑

在应用程序后面创建表
----------------------------------

创建 1 个表的时间 = 20 分钟
创建 125,000 个表的时间 = 125,000 x 20 = 2,500,000 分钟
创建 125,000 个表的成本 = 2,500,000 / 60 / 8 * 500 = £2,604,166


更新应用程序
----------------------------------

更新 1 个表的时间 = 5 分钟
更新 125,000 个表的时间 = 125,000 * 5 = 625,000 分钟
更新 125,000 个表的成本 = 625,000 / 60 / 8 * 500 = £651,041

第一个月的费用
----------------------------------
654,041 英镑 + 2,604,166 英镑 = 325.8 万英镑

换算成当地货币,并指出“老板”每次想要更改某些东西时都会在维护上节省这么多现金。只是为了确保您不会无缘无故地这样做,请指出这是正常程序之外的额外内容。

于 2012-08-16T18:35:22.700 回答