云应用,数据库设计

时间:2011-12-13 02:39:23

标签: c# sql-server sql-server-2008

在云应用程序中,您将有多个客户使用您的服务。

是否可以将所有客户数据保存在1个表中,而不是必须为每个客户创建多个表?

嗯它有可能但它会减慢应用程序的速度吗?如果客户停止使用您的服务,您也希望删除他们的记录。有没有办法将所有内容保存在一个表中,而不会导致性能,存储/备份方面的任何问题?

编辑:我的意思是单独的客户表,例如PRODUCT,INVOICE等表,这些表是特定于客户的

4 个答案:

答案 0 :(得分:0)

我们需要更多关于您的要求的详细信息,但我的猜测是,只要表上有适当的索引和更新的统计信息,表格就不会有足够的大小。

将所有客户数据保存在一个表中,这是最好的设计。如有必要,可以从表中删除所有客户数据,这是一个简单的DML批处理。

答案 1 :(得分:0)

为每个客户创建一个新表将是几个级别的绝对噩梦。您可能希望根据类别分离您的数据(在不同的表中),但绝对不是客户。因此,每个客户在“Customer”表中都有一个条目,在“ShippingAddress”表中有一个条目,等等。只要您使用适当的索引创建表(并且具有足够的硬件),性能就不应该成为问题。 / p>

答案 2 :(得分:0)

这是一个数据库建模设计问题,不仅针对云应用程序。保持公共表中的公共属性始终是应用程序的最佳设计方法。有许多技术可以提高索引的性能。在非活动客户表方面,您可以设计一个存档解决方案来减小数据库的大小。

答案 3 :(得分:0)

我理解这一点的方法是为每个客户提供每个客户的产品和发票表,即ProductCustomer1,ProductCustomer2?那是对的吗?我认为这是一个噩梦,除非你只有少数客户并且不关心使数据库可扩展。通常,最好的方法是使下表各自具有自己的主键(客户,产品,发票,invoiceProducts)。 invoiceProducts表是因为发票和发票上的产品之间存在多对多的关系。然后,您可以在外键中配置约束以进行删除操作。这将是最简单的备份/恢复(如果需要)。我是否正确理解了您的问题?如果需要,我可以提供数据库图表,如果这会有所帮助。