【问题标题】:Hardcoded database select. IDs vs names vs something else?硬编码的数据库选择。 ID vs 名称 vs 其他东西?
【发布时间】:2013-01-05 11:20:44
【问题描述】:

我目前正在重构一个项目,到目前为止,很多数据都作为常量和数组保存在代码中。还有很多裁员。现在我想将所有这些数据移动到数据库中,但我不确定我将如何进行映射。很少根据用户输入动态选择数据,而是在代码中专门选择数据。它在应用程序的非常核心级别使用,但它实际上不是核心。另外一个数据库已经在使用中,所以不会有额外的工作。

我的想法是使用一个 Mapping 类,其中有指向相应行 ID 的常量。这是个好主意吗?

另一个想法是索引名称行并直接查询名称。

数据库可能包含以下列:id、name、polynom 和 params。 所以,基本上我们在谈论数学数据。例如:1、“价格近似”、20x^3 - 5x^2 + 11x”、“非累积”。

我认为这个问题与语言无关,但由于可能存在特定于语言(甚至特定于框架)的最佳实践,我使用的是:PHP5 with the Yii Framework。

【问题讨论】:

  • 您能否举一个您正在谈论的此类数据的示例?您需要在速度、可维护性和简单访问之间找到平衡
  • 也许考虑配置文件作为另一种选择...stackoverflow.com/search?q=config+files+vs+database
  • 我并没有真正考虑过这样的配置。数据不会在运行时更新。至少不在代码之外。最好的解决方案可能是减少配置冗余。谢谢!

标签: mysql database language-agnostic web


【解决方案1】:

我对 PHP 和 Yii 没有太多经验,但这是我的 2 美分...

如果这些是从技术上定义您的应用程序的常量和常量集合(应用程序架构常量),但最终用户不应控制,我会将它们放在配置文件而不是您的数据库中,除非您'我们构建了一个模块来轻松访问和修改它们。是否实现映射类(或配置类)来检索它们并不重要,但在检索它们的方式上保持一致。如果您在配置文件中有太多需要管理的内容,则将它们存储在数据库中是合适的,但请确保您提供了一种简单的方法来修改它们。为了使您的源代码可读,我会使用人类可以理解的描述符并将这些描述符映射到您提到的相应行。

如果这些是用户定义的常量,那么您绝对应该提供一个接口。但保持与应用程序架构常量相同的架构。

在一个完美的程序/应用程序(甚至更好的应用程序框架)中,没有任何东西是硬编码的,一切都由常量(开关)控制。如果您能够在无需维护源代码的情况下成功实现这一目标,您将获得诺贝尔和平奖。

【讨论】:

  • 谢谢,Yii 有 ORM,所以访问和修改它不是问题。我认为现在配置文件的数据太多了。此外,它并不是真正的应用程序核心,而是它在核心级别上使用的数据(我希望你能明白我的意思:p)。
  • +1 - 这是数据库滥用。配置文件是要走的路。
猜你喜欢
  • 2011-12-25
  • 2011-03-23
  • 2011-02-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多