2013-02-08 41 views
1

在可伸縮性方面更有效的模式設計方法是什麼?SQL架構設計:單個表或質量表可擴展性

如果一個數據庫有多個用戶,並且每個用戶都有對象(由長文本,日期和唯一ID中的數據組成),那麼創建一個對象的質量表有一個用戶列,或者(2)爲每個用戶創建單獨的對象表?

我見過的研究,當衝突的答案,數據庫規範化說,使各列的每一個用戶,而一些帖子提到,性能提高使用質量表。

編輯:爲清晰起見,將「元素」更改爲「對象」。

+1

「元素」是什麼意思?你的意思是像物理/化學概念嗎?或者你有其他的數據元素嗎?你需要存儲什麼類型的用戶信息和其他數據?可能你會在你的某些表中想要一個'userId'列,但是我們需要更多的信息。 – 2013-02-08 18:06:42

+0

元素只是一個持有longtext,日期和唯一id的對象。我編輯我的帖子,使其更清晰。 – 2013-02-08 21:23:24

回答

2

一般而言,您希望爲實體創建單個表格,而不是將它們拆分爲用戶的單獨表格。

這使得系統更易於維護。系統上的查詢在所有應用程序中都是一致的。它還以對數據庫進行優化以訪問數據的方式構建數據。

有幾種特殊的情況下,您可以將用戶數據拆分爲單獨的表格或甚至單獨的數據庫。這可能是用戶的需求(「我們的數據不能與任何其他人混用」)。可能需要支持各種備份和安全策略。但是,一般的方法是圍繞實體而不是圍繞用戶設計表格。

1

擁有一個帶有列標識用戶的表是正確的關係設計。添加用戶時添加表格聽起來非常可怕,並且一旦擁有大量用戶,可能會導致問題。

當單個表格變得太大時,大多數數據庫產品都支持所謂的分區功能,它允許根據一些標準將單個邏輯表分區到磁盤上的多個物理表中(例如,保持您的示例,您可以擁有三個物理表,其中分區1中用戶ID爲1-99999,分區2中爲100000-199999,分區3中爲200000-2999999。

這裏是Oracle的概述。