1

就可扩展性而言,更有效的模式设计方法是什么?

如果一个数据库有多个用户,并且每个用户都有对象(由长文本、日期和唯一 ID 中的数据组成),那么(1)创建一个对象的海量表是否更有效,每个对象都有一个用户列,或者 (2) 为每个用户创建单独的对象表?

我在研究时看到了相互矛盾的答案,数据库规范化说要为每个用户创建单独的列,而一些帖子提到使用海量表可以提高性能。

编辑:为清楚起见,将“元素”更改为“对象”。

4

2 回答 2

2

通常,您希望为实体创建单个表,而不是将它们分成单独的表供用户使用。

这使得系统更易于维护。系统上的查询在所有应用程序中都是一致的。它还以数据库优化访问数据的方式构建数据。

在一些特殊情况下,您会将用户数据拆分到单独的表甚至单独的数据库中。这可能是用户要求(“我们的数据不能与其他任何人混合”)。它可能需要支持各种备份和安全策略。但是,一般的方法是围绕实体而不是围绕用户设计表格。

于 2013-02-08T18:45:12.283 回答
1

拥有一个带有一列来标识用户的表是正确的关系设计。添加用户时必须添加表听起来很可疑,并且一旦拥有大量用户可能会导致问题。

当单个表变得太大时,大多数数据库产品都支持所谓的分区,它允许根据某些标准将单个逻辑表拆分为磁盘上的多个物理表(例如,保留您的示例,您可以拥有三个物理表分区 1 中的用户 ID 1 - 99999、分区 2 中的 100000 - 199999 和分区 3 中的 200000 - 299999 的数据)。

这是Oracle的概述。

于 2013-02-08T19:47:06.900 回答