我正在使用c#和实体框架代码第一种方法处理库存应用程序。多个公司的数据库模式
其中一个设计要求是用户应该能够创建多个公司,并且每个公司应该拥有一整套库存主表。
例如,每个公司都应该有自己的库存日记和项目清单。还有一种方法可以将这些公司组合起来,形成一个“集团”公司,从本质上合并数据。
使用基于文件的RDBMS像sqlite的之一,它的很简单,我只需要为每家公司单独SQLite数据库,然后主数据库将其结合在一起。但是,我应该如何去做一个单一的数据库文件!不是多个文件数据库。 我不想在每张桌子上都有“公司”栏!
我给了我有限的DB知识的想法是使用不同的模式分离。每个公司都有一个架构,每个公司在每个架构中都有相同的一组表,并且有一个单独的架构来管理常见的表和表,以便将其他架构捆绑在一起。这是一个好方法吗?因为我很难找到一种方法来'动态'使用ef和代码先创建模式。
编辑#1
要获得公司数量的概念,一个企业拥有约4-5的公司,并在每个财政年度的老企业封闭和一套新的企业的创建。在同一个文件中保存多年的数据本质上是好的,但只要我可以提供一个单独的模块来加载数年的数据,就可以从几个数据库文件中进行逐年分析,这并不是必需的。
至于个别公司数据的大小,它可以击中每家公司GB大关。
架构的变化很频繁,至少在桌子上水平,这将是完全由用户自定义。
我想推动我的问题的一个方面是实施这种设计。如果它是一个具有离散桌面接口和实现的应用程序,并且我拥有像SQL Server一样的RDBMS服务器,那么数据库的数量并不重要。但是,对于托管在第三方并使用其数据库服务器的基于Web的UI,可用数据库的数量将受到限制。唯一的解决方案是使用像SQLite这样的无服务器数据库。 但是,就一般建议而言,SQLite不建议用于大型企业级数据库。
关于这个http://msdn.microsoft.com/en-us/library/aa479086.aspx的一个很好的阅读然而,我仍然需要一些使用c#和EF代码的方法的帮助。我想用多模式方法。 – codetantrik