Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.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
Sql server 使用共享数据库的两个类似软件——如何做到最好?_Sql Server_Database_Delphi_Versioning - Fatal编程技术网

Sql server 使用共享数据库的两个类似软件——如何做到最好?

Sql server 使用共享数据库的两个类似软件——如何做到最好?,sql-server,database,delphi,versioning,Sql Server,Database,Delphi,Versioning,我们制作软件,用于管理给予非营利组织的赠款的参与者。(例如,如果您的家庭需要食品券,那么该办公室必须以某种方式跟踪您的家庭并向州政府报告) 到目前为止,我们一直专注于一项特别复杂的赠款。我们现在希望扩大到其他赠款。我们的第一个目标是一个相当简单的拨款。它的代码刚刚堆积到旧应用程序上。现在我们决定最好的做法是将这两个项目分开(因为不是所有的客户都有这两项补助金)。理论上这听起来很容易 通过补丁和SVN合并功能,我们可以非常轻松地管理由此带来的代码复杂性。更难的是,他们的数据库是相同的。这两项赠款共

我们制作软件,用于管理给予非营利组织的赠款的参与者。(例如,如果您的家庭需要食品券,那么该办公室必须以某种方式跟踪您的家庭并向州政府报告)

到目前为止,我们一直专注于一项特别复杂的赠款。我们现在希望扩大到其他赠款。我们的第一个目标是一个相当简单的拨款。它的代码刚刚堆积到旧应用程序上。现在我们决定最好的做法是将这两个项目分开(因为不是所有的客户都有这两项补助金)。理论上这听起来很容易

通过补丁和SVN合并功能,我们可以非常轻松地管理由此带来的代码复杂性。更难的是,他们的数据库是相同的。这两项赠款共用几个表格和几个程序。但这是一个相当大的遗留数据库(超过40个表,100个存储过程)

保持这两个数据库分开,但仍共享其公共元素的最佳方法是什么?我们不关心两个应用程序写入同一个数据库时的冲突(我们有锁),而是关心开发和更新客户机服务器以及管理复杂性时的模式冲突

我们已经考虑了几个选项:

  • 使用模式(共享、grant1、grant2)
  • 使用前缀名称
  • 这本书解决了这类问题。共享公共数据很好,只需将扩展数据移动到单独的表中,就像在OOP中扩展类一样

    Persons Table
    --------------------------
    PersonID      LastName       FirstName
    
    FoodStamps Table (From Application 1)
    --------------------------
    PersonID      FoodStampAllotment
    
    HousingGrant Table (From Application 2)
    --------------------------
    PersonID      GrantAmount
    
    如果需要,可以向扩展表添加前缀

    此查询将仅获取FoodStaps计划中的人员:

    SELECT * FROM Persons
      JOIN FoodStamps
      ON FoodStamps.PersonID = Persons.PersonID