在哪里存储数据库表名?

时间:2017-06-19 09:17:38

标签: database database-design

是否应被视为"最佳做法"将数据库表名存储在配置文件中?

我知道将表名存储在配置文件中会使未来的更新更容易:如果重命名表,则只需要更新一个文件。

但是,假设检索表名是使用如下函数完成的:getTableName_Customers()(假设表名是Customers)

如果将表Customer重命名为Clients,我们还应该将函数名更新为getTableName_Clients(),这意味着所有出现的getTableName_Customers()也将"具有"在源代码中重命名。

对我而言,最终重命名所有源文件中所有出现的硬编码表名。

表格名称应该存储在配置文件中还是应该保留为"硬编码"在源代码中? 在这件事上有没有最好的做法?

谢谢

3 个答案:

答案 0 :(得分:0)

  

如果表Customers重命名为Clients,我们还应将函数名称更新为getTableName_Clients()

这取决于提示重命名的内容。如果它是"技术"重命名(在多租户数据库中将customers重命名为acme_customers),当然,您不需要重命名您的功能。这就是抽象的全部目的。类似于customers => clients。对于同样的事情,它似乎只是一个不同的名称。

但是,如果名称是由"更大的"更改,然后更好地重命名该功能,以反映更改(例如,现在customersusers,引用为customer_profile)。

答案 1 :(得分:0)

答案取决于您要优化的内容以及应用程序连接到数据库的方式。

如果您正在尝试创建一个易于维护的程序来直接访问数据库,您可以使用这种方法,假设数据库表名称经常更改的操作环境。但是,这种方法会牺牲每次查询创建时需要函数调用的性能。例如。

String query="select * from "+getTableName_Customers();

使用缓存机制可以轻松修复性能,但需要更多工作。 考虑到大多数IDE的重构工具集,重命名函数应该是一项简单的任务。

当程序直接管理数据库时,使用单个类编写所有查询和表是常见的做法。

作为最佳实践,最好使用持久性框架,例如Hibernate(http://hibernate.org/)。这将抽象大部分维护工作并提供其他优势。

答案 2 :(得分:0)

在大多数开发环境中,数据库与您的代码库分开,例如Java& Postgres,是的,您必须手动更新代码库,以便与数据库中的名称更改保持同步。

与数据库集成的开发环境中不存在问题,例如4DFilemaker,其中名称更改会自动在整个代码库中渗透。

数据库迁移工具

您可能想了解数据库迁移工具,例如FlywayLiquibase或其他人。

这些工具提供了一种有条理的方式来定义数据库,添加/删除/修改表,添加/删除/修改列,添加/删除/修改索引等。该工具查看现有数据库并自动应用任何尚未应用的修改。

该工具跟踪文件中的数据库迁移脚本(SQL或其他如XML或Java代码等)。如果在您的情况下有意义,您可以选择将这些文件与应用程序的源代码一起保存。

因此,当您决定将Customer表重命名为Client时,可以使用某些搜索和替换操作更新Java代码。同时,编写数据库修改脚本。请放心,当遇到需要更新的数据库时,您的数据库迁移工具将自动应用最新的脚本。

是的,使用迁移工具,您仍然需要在两个位置更改名称(应用代码和迁移脚本),但您可以方便地同时执行这两项操作,而不用担心部署。

相关问题