在我解释我的问题之前,我想说我之前已经问过这样的问题,但我的问题是完全不同的,并且情况似乎与我的情况有根本的不同。阅读其他人的问题。
背景:
我正在为拥有 2505表的数据库的客户做一些工作。这2505个表由几百个WordPress实例表组成,因此这些表不需要相互通信或任何其他表。它可以很容易地成为250个数据库,每个数据库有10个表,而不是一个2505表的数据库。
更重要的是:这个特定的应用程序目前仅在一个美国州使用,目标是在所有50个州使用它。因此,这可能意味着最终将有2500 * 50 = 125,000个总表。令我觉得这是一个次优设计的标志,轻描淡写。
问题是客户端的开发人员对数据库了解甚少(例如,他不了解规范化,外键或唯一约束),解释为什么数据库中的2505个表不是好数据库是一个真正的挑战设计。
您如何向对数据库知之甚少的人解释单个数据库中的2505个表是个坏主意?(我正在寻找具体的,基于事实的,无可辩驳的原因。)
(顺便说一句,我认为问题的根源是平台选择 - WordPress可能不适合这项工作 - 但我想先解决数据库问题。)
答案 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
转换为当地货币,并指出“老板”每次想要改变某些东西时都会节省这么多现金。只是为了确保你不会因此而无法在正常程序之上指出这是额外的。