Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 在哪里存储数据库表名称?_Database_Database Design - Fatal编程技术网

Database 在哪里存储数据库表名称?

Database 在哪里存储数据库表名称?,database,database-design,Database,Database Design,将数据库表名称存储在配置文件中是否应被视为“最佳实践” 我知道将表名存储在配置文件中会使以后的更新更容易:如果重命名表,则只需要更新一个文件 但是,假设检索表名是使用以下函数完成的:getTableName\u Customers()(假设表名为Customers) 如果表Customers被重命名为Clients,那么我们还应该将函数名更新为getTableName_Clients(),这意味着getTableName_Customers()的所有实例也必须在源代码中被重命名 对我来说,这与重

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

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

但是,假设检索表名是使用以下函数完成的:getTableName\u Customers()(假设表名为Customers)

如果表Customers被重命名为Clients,那么我们还应该将函数名更新为getTableName_Clients(),这意味着getTableName_Customers()的所有实例也必须在源代码中被重命名

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

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

多谢各位

如果表
Customers
被重命名为
Clients
,我们还应该将函数名更新为
getTableName\u Clients()

这取决于提示重命名的内容。如果是“技术”重命名(在多租户数据库中将
customers
重命名为
acme\u customers
),那么您当然不会重命名您的函数。这就是抽象的全部目的。类似于
客户
=>
客户
。它似乎只是同一事物的不同名称


但是,如果名称是由“更大”的更改引起的,那么最好也重命名函数,以反映更改(例如,现在
客户
用户
,具有引用的
客户\u配置文件
)。

答案取决于您试图优化的内容以及应用程序如何连接到数据库

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

String query="select * from "+getTableName_Customers();
使用缓存机制可以很容易地修复性能,但是需要付出更多的努力。 鉴于大多数IDE的重构工具集,重命名函数应该是一项简单的任务

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


然而,作为一种最佳实践,最好使用一个持久性框架,如Hibernate()。这将抽象大部分维护工作并提供其他优势。

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

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

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

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

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

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

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


谢谢。我总是更喜欢使用名称“字面上”描述它所指向的实体/对象/事物的函数。也许我应该考虑一下。你用的是哪种编程语言?重命名基本上是个坏习惯。增加一层额外的标识可能会有所帮助。