2012-11-24 22 views
1

我正在爲在線零售商店設計ERD圖。我有一個客戶表,其中存儲了所有相關的詳細信息。我也有一個客戶登錄細節表,只是包含;電子郵件和密碼字段。我可以看到唯一的關係是一對一,電子郵件是鏈接之間的2.ERD保持或不保持一對一的關係

我的問題是我最好吸收這張表到客戶之一?或者保持它的獨立性有什麼好處?

因爲數據庫是不是我的強項

回答

3

是的,一對一就像我希望在一張桌子上有所有細節。

有些例外可能是:

  • 性能。如果有成千上萬的用戶,你希望主表儘可能「瘦」,有時這意味着將單數細節移動到1對1表。

  • 數據庫中的安全性。將密碼與其他用戶詳細信息分開放在一個字段中,可以讓您在保護該表的同時保護該表,而不會減慢或阻止訪問用戶詳細信息表。用戶的詳細信息將有個人信息,但幾乎沒有什麼比給予冒名頂替者實際上做的東西(包括輕易發現更多的個人信息只是假登錄)的密碼更重要。

  • ERD的安全性。由於您的問題在標題中包含ERD,因此如果ERD能夠使用密碼實際忽略表名和列名,那麼如果它們位於單獨的表中,並且在共享ERD時執行演示時可能會需要此功能,等等。

  • 多次登錄的要求。像Stack Exchange這樣的站點可讓您將多個帳戶關聯到一個主登錄。在這些使用用戶名密碼分開的情況下,這實際上是一對多的關係。因此,如果您確信一對一關係永遠不會改變,並且/或者您正在開發的敏捷流程在實際製作之前無法預測功能,那麼您就不需要單獨進行。

+1

感謝您的幫助:) – Matt

+0

當然。增加了一個關於ERD的內容。 –

0

如果所有的列都直接關係到客戶和他們不會造成冗餘(重複行),然後讓他們在同一個表中我希望得到任何幫助球員。例如,以下字段:姓名,家庭,電子郵件和密碼都應位於您的用戶所在的同一個表(實體)上,因爲它們與用戶實體緊密相關。

如果您說讓地址信息存儲在您的用戶(包括街道,城市,州等)中,那麼將地址實體與用戶之間建立一對多關係是合乎邏輯的。

最後一件事,規範化的想法是偉大的,當你有關於你的用戶存儲不同的數據,所以它只有在這種情況下才有意義。在規範化越多,選擇查詢運行速度越慢時,過度規範化也會給查詢的性能帶來額外的開銷。