2015-03-25 29 views
0

假設我在我的數據庫中有3個表格,每個表格表示根據其大小區分的特定類型的土地。首先我有一條線,代表最大的土地實體。每條線包含許多較小的土地實體項目。每個項目都包含許多最小實體的地塊。如何拆分表以實現有效的數據庫設計?

我爲它們中的每一個創建了一個表來存儲它們的信息。然而,我注意到他們有一些共同的字段,例如州,城鎮和城市,而且這些字段可以包含重複的信息:許多地塊可以處於同一個州和城市,因此我們將擁有許多重複的信息行。

我有三個問題:

1-如何有效地拆分表以避免冗餘?我致力於創建僅用於地理信息的新表,但如何組織數據以避免此表中的冗餘?

2-由於一行包含很多項目本身包含很多地塊;這意味着一條線包含許多圖。那麼我應該在劇情與線條和項目之間創建FK關係嗎?

3-如果我爲地理信息創建另一個表,對於它的主鍵有什麼好的選擇? (爲了在其他表中使用它作爲FK)。

回答

0

1-如何有效地拆分表以避免冗餘?我 關於創建一個僅用於地理信息的新表,但如何組織數據以避免此表中的冗餘?

您可以創建一個address表與idstatetowncity領域和複合唯一鍵,涵蓋了各個領域,除了id。你的每塊地塊表將通過它的PK參考這個address表。只有當您有一些新的地址組合時,您才需要將數據插入到此表中。但是這會增加支持成本,我認爲你不應該這樣做。我相信這樣的重複(假設,當然你只能在你的地塊表中存儲州,城市等)。

2-由於一行包含許多項目,其本身包含許多 地塊;這意味着一條線包含許多圖。那麼我是否應該在劇情與線條和項目之間創建FK關係?

不可以。孩子通常只會提及他們的直系父母,除非您有充分理由違反此規定。

3-如果我爲地理信息創建另一個表,那麼 會是一個很好的主鍵選擇嗎? (爲了在 其他表中使用它作爲FK)。

我相信代理主鍵是確定在這裏,如果你讓你的表是這樣的:idstate_idtown_idcity_id。但是,正如我所說的,我不認爲這種正常化程度是必要的。