如何为服务器端应用程序初始化 SQL 数据库和表?

How to initialize SQL database and tables for a server side application?

我正在将 SQL 数据库 (PostgreSQL) 集成到我的第一个 Java 后端系统中。

我现在的困境是应用程序应该自己创建数据库和表,还是应该假定使用表初始化的所需数据库可用?

如果应用程序不应自行管理数据库,那么在开发人员的机器上重现数据库的最佳方法是什么(我希望能够 运行 在本地与真实数据库进行集成测试)?

我最终按照@Max 在他的评论中的建议使用了 FlyWay。

设置非常简单直观。我暂时使用默认设置。

在开发机器上设置集成测试轻而易举。

唯一我不太喜欢的是使用 FlyWay 在测试之间清理数据库非常慢,因为它不仅清理表,而且擦除整个方案。

不过,这对我来说现在不是什么大问题(目前有大约 100 个测试),而且如果需要的话,将来可能不会很难优化。