2011-01-11 61 views
1

我最近讀了很多關於數據庫,冗餘等數據庫:拆分表

現在我建立一個用戶表將舉行所有信息 關於我的系統中註冊的用戶。

用戶表應該包含:id(PK),用戶名,密碼,電子郵件和地址(街道, 城市,郵編,國家)。

我應該拆分地址並創建另一個表,只保存用戶地址 ,如:id(PK),street,city,zipcode,country,user_id(FK))? 我甚至可以在這裏將郵政編碼和國家分割到新表格中。

這是否有意義,尤其是將郵政編碼和國家分割爲新表格?

乾杯!

回答

0

我個人並沒有看到將這些細節拆分成分開的表格的任何附加價值。

即使你可能不會經常使用的地址/郵編,就可以使用SELECT username,email..代替SELECT *..

0

總是隻選擇必要的字段你應該這樣做基於一種需要,而不是因爲你可以。因此,無論您是否有功能需求(例如,您希望爲每個用戶存儲多個地址),還是您想解決的技術問題(性能,安全性等)。對我來說,後者在這樣簡單的桌子設計上聽起來不太可能,所以根據您提供的信息,我會建議堅持使用一張桌子。

1

那麼我在這裏想到了一些冗餘方面。 最好是儲存該國在一個表 ,而不是一遍又一遍地寫在我的用戶表中? - >冗餘

+0

這和你在問題中提出的問題不一樣。根據你的問題,你正在創造冗餘。你可以有一個國家和國家的名單,並在你的用戶表中鏈接到他們,這是絕對好的。 – 2011-01-11 09:50:27

+0

這就是我的意思......分裂把這個國家拿到所有國家的一張桌子上,然後用我的用戶表將它們與一個外鍵連接到相應的國家。 – Rune 2011-01-11 09:54:46

1

對於大多數情況下答案是否定的。爲什麼需要額外的連接來查找地址?爲什麼兩個表有一對一的關係?

正如其他人所說,除非您確信性能有所提高,否則不要使生活複雜化。