2013-07-25 13 views
2

我的問題比其他任何東西都更具概念性。我設計的,我是如何使用的SQLAlchemy(一個Python工具包,SQL數據庫,http://www.sqlalchemy.org/)創建一個數據庫的架構,我已經遇到在那裏,兩個數據庫表之間,存在一個單的情況一對一的關係。爲了做到這一點,我有一個名爲「Identification」的表,它包含兩列:1)一個內部id(用作主鍵)和2)一個對象ID。這個表與我們可以稱爲「分析」的另一個表格有一對一的關係,這個表格代表我對這些對象(通過我的研究)親自生成的數據的唯一查找表。設計SQL數據庫時,一對一關係是否意味着不必要的表?

我的問題是,沒有一個一對一關係的存在意味着我要「認同」和「分析」合併成一個單一的表?我已經查看過的每個架構都顯示了一對多或多對多的場景。在數據庫的表之間建立一對一的關係時,是否存在概念上的錯誤或錯誤?我甚至追求這一點的原因是因爲我所做的分析可能是我想要對每個對象進行的多種分析類型之一,並且將識別表從數據中分離出來會很好我從每次分析中回來。

任何意見或建議被讚賞!

回答

4

這很容易走兩種方式。

在你所描述的情況下,它似乎是一對一的,第一個表只包含標識符,我會說最好是對錶進行標準化(將它們合併),因爲這樣可以刪除參與有效地進行每個查詢所需的內容。

一般情況下,我會叫這個真隨時有一個有效的1對1的關係。也就是說,還有另外一種變化,即0..1到1.在這種情況下,例如,可能有可能在表a中有一行,它在表b中有一行,或者沒有。在這種情況下,將它們分開是有利的,否則您的列可能不適用於每一行,而只是空着。

一般來說,在設計數據庫時,問自己這個問題:「我是什麼通過保持這些獨立的增益,VS那我失去了,如果我不把它們合併」。在第一種情況下,您獲得的收入很少,並且會失去業績

+0

這有助於很多,謝謝。我想我會保持他們分開,因爲我所指的這些多重分析可能不會系統地運行在所有可能的對象上。他們只能在他們的一個子羣體上運行,造成你描述的情況爲1比1或0。 – astromax

相關問題