硬编码数据库选择。 ID vs名称vs其他?

时间:2013-01-05 11:20:45

标签: mysql database language-agnostic web

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

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

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

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

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

1 个答案:

答案 0 :(得分:3)

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

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

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

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