云应用,数据库设计

本文关键字:数据库 应用 | 更新日期: 2023-09-27 18:17:33

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

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

嗯,这是可能的,但它会减慢应用程序,对吗?如果客户停止使用你的服务,你也会想要删除他们的记录。是否有一种方法可以将所有内容保存在一个表中,而不会导致任何性能,存储/备份问题?

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

云应用,数据库设计

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

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

为每个客户创建一个新表在某些层面上绝对是一场噩梦。您可能希望根据类别(在不同的表中)分离数据,但绝对不能根据客户。因此,每个客户在"customer"表中都有一个条目,在"ShippingAddress"表中也有一个条目,等等。只要用合适的索引创建表(并且有足够的硬件),性能应该不是问题。

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

我的理解是,对于每个客户,您希望为每个客户(例如ProductCustomer1, ProductCustomer2)创建产品和发票表。对吗?我认为这是一场噩梦,除非你只有几个客户,并且不关心数据库的可扩展性。一般来说,最好的方法是让下面的表都有自己的主键(客户、产品、发票、invoiceProducts)。invoiceProducts表是因为发票和属于发票的产品之间存在多对多的关系。然后,您可以在外键中为on删除操作配置约束。这将是最简单的备份/恢复(如果需要)。我对你的问题理解正确吗?如果需要的话,我可以提供一个数据库图,如果这将有所帮助。