2017-09-25 77 views
0

下面顯示了兩個表,其中一個具有員工詳細信息並具有其地址。如果兩個表都具有「一對一」關係(即一個員工只有一個地址,反之亦然),那麼爲什麼不將這兩個表合併成一個表,如下所示。具有1對1關係的多個表的用途

  • 兩個表1對1的關係

enter image description here

  • 兩個表組合成一個。

enter image description here

回答

0

有兩種類型的數據庫分析方法。 第一種形式是在使用表格,僱員和地址應該合併的情況下簡化模式。 另一種方法稱爲第三種形式,它使表儘可能獨立。在表格員工和地址的情況下,應該將其分開。沒有正確或錯誤的方法,這是一個選擇。 但是,如果數據庫包含許多表格,則簡化並獲得第一個表格更明智,但沒有義務。

+0

你可以自己決定。如果數據屬於一個人,並且一個人總是隻有一個地址,並且地址始終只屬於一個人,則可以將數據加入一個表中,但是失去了靈活性。 如果一個地址屬於兩個empoyees呢?如果... 我使用兩個名詞(人物和地址)的事實已經表明最好讓他們分開。 – Calaris

+0

如果一個地址屬於兩名員工,那麼在起始規則的設計和定義中就會出現問題,因爲這種關係不是「一對一」而是「多對一」。現在我們也可以在表格中添加一個列地址。沒有任何東西可以阻止它在兩個不同人員出現兩次地址的情況下存在冗餘數據的風險。 因爲這個原因,我說我們必須把它留給懷孕的人來決定什麼對每個病例​​最好。 – F0XS

+0

@FoxCy但是,如果兩個員工擁有相同的地址,除非他們共用同一個房間,或者住在同一個房間內,這是非常不可能的。所以這種關係可以是「一對一」的關係是很自然的。所以在你說的這種情況下,只有個人選擇有兩張或一張桌子。但擁有多張桌子可以讓事情更整潔,更有意義。是對的嗎? –

0

如果你總是有1-1的關係,那麼你有一個相互依賴的功能,所以你沒有規範化的好處。

但是有可能是原因,要做到這一點:

  1. 更容易權限的差異管理。
  2. 便於管理空的表內的值
  3. 更快聚集
  4. 避免不必要的頻繁更新運行重型觸發器

在另一方面聚集穿過連接變得更加昂貴。

0

規範化是一個質量決策,而反規範化是一個性能決策。


如果你將加入兩個表,並將它們存儲爲一體,你的閱讀也因爲你不必去通過查詢來連接這兩個表的結合後的數據進行工作的寫入速度會更快。但是,如果您將表格分開,那麼查看各個表格的數據可能對您更有意義,並且還可以自由修改一個表格的數據而不觸及其他表格的數據。但是,要以1對1關係處理兩個表中的連接數據,將會迫使您每次都寫入(可能不必要的)連接查詢。


這個決定是你最終做出的。國際海事組織,除非分隔表的表現低於接受程度,否則以更清晰的方式存儲數據可能是一個更好的主意。