雅絕對分離地址更好因爲人們可以有多個地址,所以它會增加數據冗餘。
您可以根據我以兩種方式爲這個問題設計數據庫。
A.使用一個表
表名--- ADDRESS
列名稱
- 序列號(唯一ID或主鍵)
- 客戶端/員工ID
- 地址。
B.使用兩個表
表的名字--- CLIENT_ADDRESS
列名
- 序列號(唯一的ID或主鍵)
- 客戶端ID(外鍵的客戶表)
- 地址。
表名--- EMPLOYEE_ADDRESS
列名稱
- 序列號(唯一ID或主鍵)
- 客戶端ID(外鍵僱員表)
- 地址。
當然,你可以使用盡可能多的列數,而不是地址就像你所提到的單位,建築物,街道等
也有是從我的經驗,一個建議
請在您的每個表格中添加這五列。
- CREATED_BY(誰創造了此行意味着應用程序的用戶)
- CREATED_ON(在創建什麼時間和日期錶行)
- MODIFIED_ON(誰修改了該行指的一個用戶應用程序)
- MODIFIED_BY(在什麼時間和日期錶行修改)
- DELETE_FLAG(0 - 刪除,1 - 主動)
ŧ他從大多數開發人員的角度來看這個原因是,你的客戶可以隨時請求任何時間段的記錄。所以,如果你在現實中刪除,那麼對你來說這將是一個嚴重的情況。因此,每當應用程序用戶從gui刪除記錄時,您必須將該標誌設置爲0,而不是實際刪除它。默認值是1,這意味着該行仍處於活動狀態。這是從我的經驗建議:
在檢索的時候,你可以在那裏像這樣
select * from EMPOLOYEE_TABLE where DELETE_FLAG = 1;
注意條件進行選擇。我根本沒有強制你採納這一點。所以請根據您的要求添加它。
另外,沒有任何重要目的的表不需要這個。
看看這個:http://stackoverflow.com/questions/6576442/should-user-and-address-be-in-separate-tables – passion 2013-04-20 08:18:23