代码之家  ›  专栏  ›  技术社区  ›  Sprague

在数据库中使用通用列-为什么?

sql
  •  3
  • Sprague  · 技术社区  · 15 年前

    我在一家公司工作,我们的设计团队选择使用“field1”…“field10”作为通用的、未来使用的列。我询问了他们的原因,并被告知他们在那里,以防我们将来需要他们。

    有人听说过这种做法吗?当我看到这样的东西时,我的下巴掉到地上是不是不对?

    3 回复  |  直到 15 年前
        1
  •  6
  •   Oded    15 年前

    你一点也不错。不知道写一个 ADD COLUMN 更改脚本。

    如果这些列没有被应用程序引用(并且根本不能被应用程序使用),那么这是 YAGNI 滥用。

    但是,如果这是 产品 这将由不在贵公司的人员维护部署,将这些位置所有者(假设应用程序“知道”如何访问和使用它们)放置在将来不可预见的扩展中是有意义的。

        2
  •  2
  •   Harper Shelby damiankolasa    15 年前

    在实践中?好吧,有一组叫做“Oracle电子商务”的应用程序,它们有大量的列,这些列的名称像attributen,其中n的运行范围是1-20或更多。上面的应用程序配置为它们提供了业务意义,但下面的表就是这样。

    另一方面,一些应用程序会动态地创建定制的数据库表——这要求某些代码更加复杂,而其他代码则更少(而且,imho,配置更加简单)。很高兴你没有那种疯狂的习惯,所有自定义字段都存储在一个键类型值表中-我也看到过,只是 错误的 .

        3
  •  0
  •   Pontus Gagge    15 年前

    是的,即使在所谓的商业产品中也遇到过。通常,当人们不真正了解关系数据库,也不关心未来的维护成本时,就会发生这种情况。

    当然,关系数据库在处理未来的校对方面并不是很好。您通常需要发展模式并为升级提供数据迁移路径。这在前面看起来更复杂和昂贵,但是与没有任何数据完整性检查的匿名列相比…呻吟!