Database 为发布创建新数据库?

Database 为发布创建新数据库?,database,sqlite,database-design,architecture,Database,Sqlite,Database Design,Architecture,我们有一个数据库,可以保存我们所有软件产品的各种记录。有些记录是针对特定软件的,有些记录是由不同的软件共享的。 不同的团队将锁定、编辑和更新数据库。 当我们发布不同的软件时,我们只需要抓取一个大数据库,然后用软件发布它 问题是: 数据库可能会变得更大,并且包含一个软件的不必要信息,因为它保存所有软件产品的所有记录 人们似乎很容易搞砸:你正在编辑的数据库可能不是最新的;更改可能会破坏其他软件等 我想知道这类问题的通常解决方案是什么,以下是我能想到的解决方案: 保留母数据库并为不同软件生成子数据

我们有一个数据库,可以保存我们所有软件产品的各种记录。有些记录是针对特定软件的,有些记录是由不同的软件共享的。
不同的团队将锁定、编辑和更新数据库。
当我们发布不同的软件时,我们只需要抓取一个大数据库,然后用软件发布它

问题是:

  • 数据库可能会变得更大,并且包含一个软件的不必要信息,因为它保存所有软件产品的所有记录
  • 人们似乎很容易搞砸:你正在编辑的数据库可能不是最新的;更改可能会破坏其他软件等
我想知道这类问题的通常解决方案是什么,以下是我能想到的解决方案:

  • 保留母数据库并为不同软件生成子数据库。
    不同的团队可以使用web界面向母数据库添加记录,发布时,运行一个任务,基本上从母数据库复制必要的表,并为发布创建一个新的数据库
  • 不要使用母数据库。不同的软件使用不同的数据库。但是如何处理共享记录呢

  • 我同意你的第一种方法。这就是我在读你的答案之前想到的。拥有“母亲”数据库的优点是,您可以使所有软件产品符合相同的模式。如果您愿意,它们都共享同一个模板

    然后,当您准备好发布时,如您所说,您运行一个流程,生成数据库的压缩版本并准备发布

    选项2是个坏主意,因为模式更新。它在概念上非常类似于分叉代码库。如果您将代码库分叉10次,那么当出现bug修复时,您必须到10个地方修复并发布它

    还考虑有一个母亲数据库允许您轻松地在所有这些数据库中进行查询。“我们有多少版本?我们有多少产品?我们上一次发布的产品是什么?”


    如果拆分数据库,则此类查询更难写入。

    此数据库是为您的客户只读的,还是他们使用您的软件写入数据库?数据库是为客户只读的。