我强烈推回要求,让他们知道这是一个非常糟糕的主意。是的,你可以为这些表添加一个EAV表,但是你有问题,查询它既不简单也不表现。或者,您可以像@Jerry Coffin所建议的那样,使用六张备用栏目的表格,但他会导致报告困难,并且在他们全部使用它们时会发生什么情况。所有这些都导致开发人员进行大量额外的工作,以支持一年内可能不会导致3次数据库更改的要求。您冒着数据完整性,数据库性能和报告准确性的风险(我敢打赌,这些新字段不会有PK/FK关系或默认值,或者甚至是正确的数据类型,因此日期是变化的,因此数据将被添加到数据库中的会费日期是ASAP,不适用于报告),以及所有不知道他们在做什么的人都可以假装进行数据库更改,这些数据库更改效率低下,思路不清。
我已经与许多COTS产品合作过,当人们实际添加列时(实际上很少有人足够勇敢地这样做)。他们没有按照他们需要的形式出现,他们也不会自动添加到报告中,他们通常无法搜索,并且在每种情况下,他们最终花费更多的钱去解决他们制作的数据混乱问题让专业人员进行设计更改会有成本。
大多数时候,当我看到这样的要求时,高级管理人员认为灵活性很酷,而不是任何高级用户实际需要甚至想要这样做。他们需要意识到他们所要求的成本。
花费更多的时间和额外的几天与高级用户谈论他们需要的东西并获得设计开始的权利,而不是走下这条路。
这是真正需要长时间严肃讨论的要求之一,它不仅需要开发时间花费多少,而且数据完整性和性能以及可维护性几乎没有增益。我会做一个正式的成本效益分析,以向他们展示这个想法到底有多糟糕。然后,一旦他们完全沉浸于他们所要求的完全愚蠢的行为,如果他们仍然需要它,继续建设并开始寻找新的工作,因为你不想成为一个必须维护的人这个。
你使用`sql server`锁定了吗?也许像`mongodb`这样的无模式数据库更适合您的问题。 – Chris 2011-01-27 22:46:04
*最好的办法*做到这一点? **不!** – 2011-01-28 05:48:32