SQL 数据库算法

SQL Database Algorithm

我有一些大项目应该为政府管理一个项目 我已经这样做了,但是当他们想将所有项目类型都放在这个数据库中并最终获得数据库中所有内容的详细报告时,事情就变得复杂了。
他们几乎没有大约 20 种类型的项目类型,字段与其他类型不同,每个项目类型 table 都有很多细节 table,所以如果我想为每种类型制作一个 table还应该制作很多细节 tables,所以我的数据库将有太多 tables 并且很难使用它。 我想知道最好的算法是什么?
我应该把所有东西都放在一个 master table 中吗?但是如果我这样做了,项目 ID 将会发生冲突,因为每个项目类型都以 ID (1) 开头,所以我会遇到这个问题,最后如果我这样做的话,我将能够从数据库中获得我想要的东西,比如报告、视图和查询(来自我的应用程序)当它分成不同的 tables?
示例:
项目类型(主表): 建筑项目、电气项目、油漆项目、维修项目、直接项目等
一些 table 包含字段 Company 一些其他 table 不包含
一些 tables 包含字段 Contract 一些其他 tables 不 等等。
每个 table:
的详细信息表 工期、成本、工人、评级等
如果我像上面那样拆分 Master tables,我也应该拆分细节,这会产生很多 tables 并使使用数据库变得非常困难。 也许这并不像我想的那么难,但这是我第一次参与这样的大项目,所以我不知道该怎么做,如果发生了什么事而丢失了,那将是非常重要的信息,这对我的生活将非常不利.

虽然这个问题太宽泛了,实际上什么也没问,但我会花几分钟时间关注它。

1) 您备份当前状态并在沙盒上工作!

2) 如果您只需要很少的报告,我想您可以生成它们独立查询不同的数据库,也许 post 处理结果。
例如总计 ProjectsData.Totalcost 为总成本。
注意:一些数据将更难推导。

3) 根据您的预期数据考虑测试用例...
然后看看你的Testcase是否达到手动计算的entry

4)如果一定要Join成One DB,匹配数据会很麻烦。
4.1) 是的,你应该创建一个新的 table Projects : project_id, title, ...
4.2) 您应该为合并的数据库
中的几乎每个table创建列project_id 4.3) 你应该尽可能多地使用数据验证编写你的迁移代码!并使您的输出日志有价值。

4.4) 当最终 运行 投入生产时,请在未来几年保留您的原始数据库、输出日志和迁移脚本!

不过,我认为这个问题应该解决将多个数据库迁移到一个数据库中的更具体的问题。