我的公司有一些我们在我们构建的网站中部署的应用程序。最近,一个非常古老的应用程序需要包含在较新的应用程序旁边,并且存在冲突,两个应用程序都需要使用重复的表名。
我们现在正在更新旧应用程序,并且会有一些数据库更新。我很好奇人们认为最佳实践(或者你如何做),以帮助确保这些名称冲突不会发生。
我看过架构,但不确定这是否是我们想要的正确路径。作为documentation prescribes,我不想将特定的模式名称“连接”到应用程序中,如果我将模式添加到用户搜索路径,如果两个模式具有相同的模式,它将如何知道我所指的是哪个表表名。虽然,也许我正在读这篇文章。
非常感谢任何见解或智慧之词!
答案 0 :(得分:1)
Postgres拥有名称空间,这绝对是处理这类事情的最有效方式:)
只需为旧数据库创建一个新的命名空间即可。大多数PHP / MySQL解决方案解决它的方式(每个应用程序的特定前缀)也是一种选择,但不是我推荐的。
[edit]具体来说,除了更改the_namespace.tablename
之外,您还可以像search_path
这样调用您的表格。对于其余部分,如果您不添加命名空间,search_path
将决定您的命名空间。