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

问题描述:

我目前正在重构一个项目,其中有很多数据保存为代码中的常量和数组。还有很多冗余。现在我想将所有数据移入数据库,但我不知道如何执行映射。数据很少根据用户输入动态选择,而是在代码中特别选择。它在应用程序的核心层使用,但实际上并不是核心。另外一个数据库已经被使用,所以不会有额外的努力。硬编码数据库选择。 ID与名称vs其他东西?

我的想法是使用一个映射类中,我有指向各行的ID常量。这是一个好主意吗?

另一个想法是建立索引的名字排而直接查询名称。

该数据库将可能有以下几列:ID,姓名,多项式,而params。因此,基本上我们正在谈论数学数据。例如:1,“价格近似”,20x^3 - 5x^2 + 11x“,”非累积“。

我认为这个问题是语言不可知的,但由于可能存在语言特定即使框架专用)的最佳实践,这里是我使用方法:使用PHP5 Yii框架

+1

你可以举一个你正在谈论的数据的例子吗?你需要找到速度,可维护性和简单的访问之间的平衡 –

+1

可能考虑配置文件作为另一种选择...... http://*.com/search?q=config+files+vs+database –

+0

我没有真正考虑配置这种方式。数据不会在运行时更新。至少不在代码之外。 最好的解决方案可能只是使配置更少冗余。谢谢! –

我没有用PHP也不Yii的许多经验,但这里是我的2美分...

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

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

在一个完善的程序/应用(甚至更好 - 一个应用框架),什么是硬编码的,一切由常数(开关)控制。如果您能够在不需要维护源代码的情况下取得成功,您将获得诺贝尔和平奖。

+0

谢谢,Yii有ORM,因此访问和修改它不会是一个问题。现在我认为配置文件的数据太多了。此外,它不是真正的应用程序核心,而是它在核心层面的数据处理(我希望你能抓住我的偏见:p)。 –

+0

+1 - 这是数据库滥用。配置文件是要走的路。 –