0

是否有一种范例,我可以在一个地方且仅在一个地方更改数据键名称,并由应用程序和数据库正确处理?

我最近求助于使用类常量来映射到数据库字段名称,但我仍然必须使它们与原始数据库键保持一致。

我的意思是,以 PHP 为例,现在我可能会使用

$infoToUpdateUser[ User::FIELD_FIRST_NAME ]

这意味着当我在常量处更改​​它时,我不必搜索代码来更改对该字段的所有引用。

这种情况出现的另一个领域是参考字段。由于一些早期糟糕的设计决策,我有,例如,这些类型的表:

(表名:primary_key)

  • 猫:cat_id
  • 狗:dog_id
  • parrots : bird_id (记住,糟糕的设计,因此 parrots / bird_id 不匹配)
  • 蜥蜴:lizard_id
  • ETC

然后假设我有一系列更新记录的表单类。

  • 动物形态
  • DogForm 扩展了 AnimalForm
  • CatForm 扩展了 AnimalForm
  • ParrotForm 扩展了 AnimalForm
  • ETC

现在我想使用父类 AnimalForm 中的更新函数更新 SQL 数据库中的一条记录,因此我不必在 20 个子类中复制代码。

但是我不知道一种概括更新查询的方法,所以目前每个子类都有一个 idFieldName 成员变量,父类将它插入到查询中,比如

"UPDATE " . $this->table . " SET <data> WHERE " . $this->idFieldName

这样做似乎很草率,但目前我想不出更好的解决方案。

是否有一个设计模型或范例可以链接在一起或抽象数据键名称以供数据库和应用程序共享作为参考?

4

1 回答 1

1

您正在寻找的是所谓的对象关系映射层。

ORM 通过将关系数据库映射到对象模型来将数据访问的关注点与业务逻辑分开。由于 ORM 完成了所有的转换,如果您更改数据库表或列的名称,您只需告诉 ORM 一次,它就会将该更改正确地应用于您的所有代码。

由于您表示您使用的是 PHP,因此这里有一个针对 PHP 中的ORM 库的问题。可以在 Wikipedia中找到有关 ORM 技术的其他信息。

于 2009-11-30T20:45:34.237 回答