Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.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数据库算法_Sql_Database_Algorithm_Data Modeling - Fatal编程技术网

SQL数据库算法

SQL数据库算法,sql,database,algorithm,data-modeling,Sql,Database,Algorithm,Data Modeling,我有一个小的大项目,应该为政府管理一个项目 我已经这么做了,但当他们想把所有项目类型都放在这个数据库中,并最终得到数据库中所有项目的详细报告时,事情就变得复杂了。 他们几乎没有项目类型,大约有20种类型,不同类型的字段不同,每个项目类型表都有很多细节表,所以如果我想为每种类型创建一个表,我也应该创建很多细节表,这样我的数据库就会有太多的表,使用它会非常困难。 我想知道这样做的最佳算法是什么? 我应该把所有的都放在一张主桌上吗?但如果我这样做了,项目id将发生冲突,因为每个项目类型都以id(1)开

我有一个小的大项目,应该为政府管理一个项目 我已经这么做了,但当他们想把所有项目类型都放在这个数据库中,并最终得到数据库中所有项目的详细报告时,事情就变得复杂了。
他们几乎没有项目类型,大约有20种类型,不同类型的字段不同,每个项目类型表都有很多细节表,所以如果我想为每种类型创建一个表,我也应该创建很多细节表,这样我的数据库就会有太多的表,使用它会非常困难。 我想知道这样做的最佳算法是什么?
我应该把所有的都放在一张主桌上吗?但如果我这样做了,项目id将发生冲突,因为每个项目类型都以id(1)开头,所以我对此会有问题。最后,如果我这样做,我将能够从数据库(如报告、视图和查询)中获得我想要的内容,就像将其拆分为不同的表一样?
示例:
项目类型(主表): 建筑工程、电气工程、油漆工程、维修工程、直接工程等
有些表包含字段
公司
有些表不包含
有些表包含字段
合同
有些表不包含字段 等等。
每个表的详细信息表:
工期、成本、工人、评级等
若我像上面那个样拆分主表,那个么我也应该拆分详细信息,这样会产生太多的表,使使用数据库变得非常困难。
也许这并不像我想的那么难,但这是我第一次从事这样的大项目,所以我不知道如何去做,如果发生了什么事情并失去了它,会有非常重要的信息,这对我的生活将是非常糟糕的。

尽管这个问题太广泛了,实际上什么都不问,我会注意几分钟

1) 备份当前状态并在沙箱上工作

2) 如果您只需要很少的报告,我想您可以生成它们,独立地查询不同的数据库,并可能对结果进行后期处理。
e、 g.合计项目数据总成本作为总成本。
注意:有些数据将更难得出

3) 考虑针对预期数据的测试用例…
然后查看您的测试用例是否达到手动计算的条目

4) 如果必须将它们合并到一个数据库中,那么在匹配数据时就会遇到很多麻烦。
4.1)是的,您应该创建一个新表
Projects:project\u id,title,…

4.2)您应该为合并数据库中的几乎每个表创建列
project\u id
4.3)您应该使用尽可能多的数据验证来编写迁移代码!并使您的输出日志有价值

4.4)当最终在生产环境中运行时,请将原始DBs、输出日志和迁移脚本保留多年


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

请定义更多详细信息或一些示例。目前很难理解您想要什么。@VadimLevkovsky感谢您的回复,我添加了更多的细节和信息。您在这里问的基本上是“我如何做数据仓库”。这是一个太宽泛的话题,没有人在这里回答。我强烈建议您阅读数据仓库和ETL的基础知识,特别是关注如何处理来自多个源的相关数据的集成。当你对你所面临的具体问题有具体的问题时,你可以随时回来询问这些问题。