2011-03-21 82 views
0

我想爲我的關聯創建一個成員數據庫。我們是一個由小型地方實體組成的國家組織。成員列表的最佳數據庫建設實踐

我想知道它的做法是更好地組織我的數據庫在速度和開銷的意思是:

  1. 所有與過濾「本地協會」字段中的成員創建一個大表。
  2. 創建許多表格,每個組合一個表格。

(順便說一句我工作的Joomla,如果這可以改變的東西)

編輯:我會更清楚該協會的結構。其中一名成員可以成爲當地唯一一家當地小型協會的成員。所有成員都是國家協會的成員。對於每個成員(以及每個關聯),數據字段都是相同的。評論我是否仍然不清楚:)

回答

1

假設你跟蹤所有成員的相同字段,不管本地關聯,我會傾向所有成員的一張表。這將顯着降低您在添加/刪除本地關聯時的維護開銷。

如果不同的本地協會跟蹤顯着不同的成員信息,那麼您可能需要重新考慮這一建議。

0

我會建議一張大桌子。即使將其分開理論上更快,但在簡單性方面會失去很多優勢。例如,就速度而言,考慮簡化針對一個表的調整和優化查詢,而不是針對10個表。

另外我擔心,如果你有多個表,你會有很多的冗餘。因此,無論如何,如果您進行拆分,儘量減少冗餘並使用關係來避免維護大量幾乎相同的表。

+1

如果你打算有一張大桌子,那麼只需使用電子表格即可。多個表格實際上會減少冗餘並消除空值的機會。 – swisscheese 2011-03-21 21:54:46

1

我會考慮第三種選擇:成員表,關聯表和關聯表。通過這種方式,同一個人可以成爲多個關聯的一部分,而不必複製他們的信息。

+0

謝謝,但事實並非如此,成員可以在某一時間成爲當地的一個協會的一部分,抱歉不要指出:) – Bakaburg 2011-03-21 21:49:38

+0

@Bakaburg - 由於我假設這些規則對單個關聯的規則是如何執行的協會是獨立的法律實體? – Thomas 2011-03-21 22:36:41

2

由於您發佈的有限要求是我如何看待它。這是第三種選擇,因爲你發佈的2個選項確實不適合DB。

enter image description here

您描述了3個不同的實體(成員,集團(副教授),地址(位置))和每規範化的規則,你需要適當分開的。如果你只將所有內容保存在1或2個表中,那麼你的整個數據庫都會有重複。就我個人而言,我同意托馬斯在這裏,並將考慮納入我發佈的第二個選項。

我剛剛給出了一個基本的表結構,再次不理解您的全部要求,所以請根據您的要求調整關係基數。我試圖強調的答案中最重要的部分是正常化。與其他人對簡單性的看法相反,如果要正確設置數據庫並將其正確化,就不能再簡單一些。

+1

1+爲答案的複雜性肯定!正如我之前指出的那樣,成員可以在當時只成爲一個當地協會的一部分。我會編輯我的問題,使其更清楚。謝謝! – Bakaburg 2011-03-21 21:53:32

+0

@Bakaburg在這種情況下,我必須問一個會員是否可以在一個團體之外存在?如果是這樣,第二個模型將工作只是改變Member :: MemberGroup關係的基數。第一種模式要求當成員添加到系統中時,必須將成員添加爲組的一部分(禁止你做正確的事情並且不允許NULLS)。儘管如此,我不會在這種情況下推薦這種約束。 – swisscheese 2011-03-21 22:01:03

+0

不,成員必須是本地組的一部分。例如:公民是他的城市的公民,但也是國家的公民,但不是該國其他城市的公民。沒有必要放置「地址」,本地組的名稱就夠了。 – Bakaburg 2011-03-28 10:08:57