两个或多个有关系的项目底层数据库怎么设计?

现在原来有个OA项目,要加个CRM项目,它们有一定联系。像账号表要同步,是分两个数据库好,还是分一个数据库好?其中有些字段是重复的,这要怎么处理,是要单独分出来吗?还是?还有oa的一些模块可能用到CR中的客户或者合同信息,这表要怎么设计?CRM与OA要放在同一个数据库里?重复字段怎么处理?要单独分出一张表吗?最好有案例证明(主要想看看其他人是怎么做的)。找案例真是难找!

不用管关系,分开独立写,避免不必要的麻烦!

分开设计,主键外键关联,多表查询,数据做好同步

维护方便就分开写,开发方便就写一起。

解决思路:
OA和CRM属于两个项目,库设计尽量还是分开来做,这样每个库只维护自身表结构和数据即可,至于数据问题,设计CRM系统时把关联关系考虑好,如果用到OA系统的数据,通过关联关系去查询,你说的重复字段,其实设计时可以冗余(这样查询时可以提高效率,不过同时要考虑更新带来的不同步问题,可以根据实际情况来处理), 如果OA要使用CRM的客户或合同信息,先获取OA系统中的关联字段,然后再根据关联关系去查询CRM库中的信息即可。望采纳

基础信息建立一个库共享,其它分开

  1. 分两个数据库更好,这样可以部署在一起,也可以分离独立部署,更加灵活。
  2. CRM项目里面可以提供客户、合同信息的接口,OA通过调用CRM提供的接口获取相关信息,不一定非要共用一个数据库表
  3. 可以考虑把公共的信息做成接口,另一个项目通过调接口的方式获取重复的字段信息
  4. 如果还有其它耦合的业务,可以通过连同一个Redis、MQ等中间件实现解耦

如还有问题,欢迎继续交流。
如有帮助,请采纳,十分感谢!