2015-11-08 81 views
0

我對(關係)數據庫設計比較陌生。我很困惑的建議,何時/應該兩個1:1關係中的實體成爲單個實體?

許多,如果不是大多數1:1間的關係是一個糟糕的設計ERM的跡象,而且

兩個實體在1:1間的關係應合併成一個單一的一個除非有

是一個強有力的理由否則。但我還沒有找到明確的建議,何時

要這樣做。任何解釋,引用讚賞。

編輯:我認爲我的情況是不同的,因爲我有一個不同的起點:我給出了一個業務情況,我必須識別實體, 他們的關係等。我給了兩個實體1:1關係,我想知道何時/是否應該將它們合併成一個實體。在其他任何問題上我都沒有看到這一點。如果有人把我和一個問題聯繫起來解決這個問題,我可能只是刪除我的帖子,但我想讓它站在別的地方。

編輯2:更具體地說,我有一個情況,每個員工管理 一個部門,每個部門由一個員工管理。編輯3:我想它歸結爲區分屬性和實體。我的想法是,作爲一個經驗法則,給出對 情況的描述,動詞表示一種關係。我認爲 的另一個約束是違反了「原子性」或1NF,其中一個屬性值很大,例如,如果我們有「包」,並且提及包內容,如果 有很多描述的內容,那麼「內容」被製成一個實體,以避免多個條目。也許這比我第一次想到的更簡單。

謝謝。

+0

可能有[使用一對一表關係的優點是什麼? (MySQL)](http://stackoverflow.com/questions/2521760/what-are-advantages-of-using-a-one-to-one-table-relationship-mysql) –

回答

2

「何時/應該1:1關係中的兩個實體成爲單個實體?」

幾乎總是

事實上,問題應該是「何時應該將一個實體分成兩個具有1:1關係的表?」我可以想到一個可能的原因。

實體的一行所需的列數或空間超過所允許的數量。

必須有更多的理由,但這是想到馬上想到的。

編輯

添加更多的理由在這裏:http://solutioncenter.apexsql.com/how-to-split-a-table-in-sql/#sthash.VbXZVkxv.dpuf

通過劃分表,並移動要保護你可以 分配不同的訪問權限,以包含敏感 數據表中的列:

有一張表格,大多數外部應用程序更頻繁地訪問一組數據(例如: )。人名,SSN等),而其他數據 (例如,人的照片)所需時間較少,則可以通過拆分表並將較少訪問的列 移動到另一個表中來提高 的性能。

+0

嗯,不,那不是我的問題,因爲我試圖在給定商業條件時設計ERD,並且碰巧存在1:1關係的實體,並且我想知道是否應該合併它們。所以知道什麼時候我需要拆分實體並不能幫助我。 – gary

+0

我認爲規則@Adish建議的是:合併它們,除非一旦合併,你會想要分裂它們。如果有很大的列不經常訪問,那麼可以通過拆分表來獲得性能。然而,我不會想到在初步階段就做這樣的優化,當我做這些時,我將它們限制在物理模型(而不是邏輯模型)上。請注意,在許多1:1關係中,一方是可選的。這真的是0..1:1。那些可能應該保持獨立的表格。 –