database - 在哪里存储数据库表名?

标签 database database-design

将数据库表名存储在配置文件中是否应该被视为“最佳实践”?

我确实理解将表名存储在配置文件中会使以后的更新更容易:如果表被重命名,则只有一个文件需要更新。

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

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

对我来说,重命名所有源文件中所有出现的硬编码表名是一样的。

表名应该存储在配置文件中还是应该在源代码中保留为“硬编码”? 在这方面有什么最佳做法吗?

谢谢

最佳答案

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

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

数据库迁移工具

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

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

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

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

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

关于database - 在哪里存储数据库表名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44626592/

相关文章:

database - 数据库表中的排序列

ios - 执行多个sqlite3_exec,不创建表,为什么?

database - Twitter 喜欢 JPA 中的关系

sql - 有没有办法找出数据库的最大内存?

php - 分配图像,移动它并检索它 php

mysql - 如果数据按排序顺序存储,sql 搜索是否会更快

database - table 越少越好吗?

c# - 我应该始终使用导航属性还是使用 .Where 查询?

mongodb - 存储和查询树状分层数据的有效方法

ruby-on-rails - 具有许多列的 ActiveRecord 表 : is there a better way?