2016-08-18 97 views
-8

我有一个应该管理政府项目的大项目 我已经这样做了,但是如果他们想将所有项目类型放在这个数据库中并最终得到一个详细的报告数据库。
他们有几个项目类型约20种类型,字段是从不同类型到其他和每个项目类型表有很多细节表,所以如果我想制作一个表到每个类型我也应该使这是很多细节表,所以我的数据库将有太多的表格,它将很难使用它。 我不知道什么是最好的算法来做到这一点?
我应该把所有在一个主表?但是,如果我的项目ID会冲突,因为每个项目类型都以ID(1)开头,所以我会遇到问题,最后如果我这样做,我会从数据库中获得我想要的东西,比如报告,视图和查询(从我的应用程序),当它分裂成不同的表?
例子:
Projets类型(主表): 建设项目,项目Elctric,涂装工程,维修工程,直接项目等
一些表包含字段Company一些其他表不
一些表包含字段Contract其他一些表格不是 等等。
详细信息表的每个表:
工期,成本,工人,评级等
如果我分裂主表如上我太分裂细节,会给这么多表,使它真的很难与数据库工作。 也许这并不像我想的那样艰难,但这是我第一次与这样的大项目合作,所以我不知道该怎么做,并且如果发生了什么事情并且丢失了它,将会有非常重要的信息,这对我来说会很糟糕生活。SQL数据库算法

+0

请定义更多细节或示例。目前很难理解你想要什么。 –

+0

@VadimLevkovsky感谢您的回复我添加了更多的细节和信息 –

+0

你在这里问的基本上是“我该如何做数据仓库”。这是一个太宽泛的话题,有人可以在这里回答。我强烈建议您阅读关于数据仓库和ETL的基础知识,特别关注如何处理来自多个来源的相关数据集成。当你对你遇到的具体问题有特定的问题时,你可以随时回来问这些问题。 –

回答

-1

尽管这个问题太宽泛了,实际上也没有问任何问题,我会给它几分钟的注意力。

1)您备份当前状态并在沙盒上工作! 2)如果你只需要很少的报告,我想你可以生成它们独立查询不同的数据库,并可能后处理结果。
例如Sum ProjectsData.Totalcost作为TotalCost。
注意:某些数据将难以派生。

3)认为测试用例的对你的预期数据...
然后看看你的测试用例达到人工计算的入门

4)如果你必须将它们加入到一个DB,那么你投入了大量的麻烦匹配数据。
4.1)是的,你应该创建一个新表Projects : project_id, title, ...
4.2)您应在合并DB
4.3),你应该尽可能多的数据验证编写迁移代码,你可以创建列project_id几乎每一桌!并使你的输出日志值得。 4.4)当终于在生产环境中运行时,请保留您的原始数据库,您的输出日志&迁移脚本将来几年!

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