【发布时间】:2011-01-29 12:35:34
【问题描述】:
我在 MVC 2 中开发了一个时间表应用程序,供我们公司内部使用。现在其他小公司也对该应用表现出了兴趣。我没有考虑过该应用程序的这种用途,但它让我对它可能暗示的内容产生了兴趣。
我相信我可以通过修改数据库(由实体框架模型访问的 Sql Server)使其适用于多个客户端。但我读过一些人提倡使用多个数据库(每个客户一个)。
直观地说,这感觉是个好主意,因为我不会冒险将不同客户的数据混合在同一个数据库中(这当然不应该发生,但如果发生了……)。但是具体如何实现多数据库解决方案呢?
即使用单个数据库,我可以只注册一个客户,所有需要的数据都将由应用程序添加,就像现在只有一个客户(我自己的公司)时一样。
但是对于多数据库解决方案,我如何在用户注册时以编程方式创建新数据库?请注意,我使用 Linq to Sql 完成了所有数据库的工作,我对常规 SQL 编程不是很熟悉...
我非常感谢您能清楚详细地解释如何做到这一点(以及是否是一个好主意或单个数据库是否会更好的输入)。
编辑:
我也看到过关于单一数据库替代方案的讨论,建议您随后将 ClientId 添加到每个表中......但这不会很难在代码中维护吗?我必须在我假设的许多 linq 查询中添加“where”条件......而且我假设每个表上都有一个 ClientId 意味着每个表都需要与 Client 表具有多对一的关系?那不是很复杂的数据库结构吗?
现在(没有 Client 表)我有以下表(1 -> * 表示一对多关系):
客户 1 -> * 项目 1 -> * 任务 1 -> * TimeSegment 1 -> * 员工
此外,Customer 与 TimeSegment 直接建立一对多关系,以便于简化一些查询。
到目前为止,这工作得很好。难道不能简单地拥有一个与 Customer 表具有一对多关系的 Client 表(或 UserCompany 或任何人可能称之为的)吗?由于其余的由关系处理,因此其他表的数据完整性是否足够?
【问题讨论】:
标签: asp.net sql-server asp.net-mvc-2