我正在用sql server開發一個MVC項目。其中每個用戶在註冊後將被給予用戶名。使用地址和電子郵件號碼和電話號碼等各種數據完成註冊。我正在使用一個表來存儲地址,它的ID存儲在用戶表中。現在人們可以更改地址,因此我無法理解如何管理它。我想保留舊地址以及新用戶的新地址。任何人都可以幫忙嗎?管理地址的數據庫模式
0
A
回答
0
你有一些選擇:
在地址表中,添加用戶ID列。在用戶表中,添加addressid列。
用戶表格會告訴您用戶指示的當前地址。
select * from user u
inner join address a on u.userid = a.userid and u.addressid = a.addressid
where userid = 45
地址表會告訴你用戶使用的所有地址。
select * from address where userid = 45
優點是用戶表指向您最近的地址表。當用戶添加新地址時,地址表獲取插入並更新用戶表。缺點是在地址表中重複使用用戶名 - 如果父母和子女擁有相同的地址(假設每個用戶都是用戶),則應爲每個用戶多次添加相同的地址。要獲得當前地址,您必須同時詢問用戶和地址表。
在地址表中添加userid列和isPrimary位列。在用戶表中不要添加addressid列
用戶表不會告訴你有關地址的任何信息,但地址表會告訴你用戶使用過的所有地址以及哪個地址是他們的主要地址。
select * from user u
inner join address a on u.userid = a.userid and a.isPrimary = 1
where userid = 45
您可以直接從地址表中獲取給定用戶的當前地址。
select * from address where userid = 45 and isPrimary = 1
地址表,就像前面的例子一樣,會告訴你用戶使用的所有地址。
好處是地址表負責告訴你這個地址屬於誰,以及它是否是主要的。
將用戶存儲在用戶表中,地址在地址表中。創建交匯點表將地址和用戶放在一起
可以創建具有userid,addressid,isPrimary列的UserAddress表。用戶表只會包含用戶信息。地址表將具有地址並且知道哪個地址屬於哪個用戶,您可以詢問UserAddress表。
select * from user u
inner join useraddress ua on u.userid = ua.userid and ua.isPrimary = 1
inner join address a on ua.addressid = a.addressid
where u.userid = 45
這樣做的好處是將地址與多個人聯繫起來。同一家庭的父母和兩個孩子可以使用同一個地址。如果家庭移動到另一個位置,則地址表中有一個附加記錄,並且在交接表中有4個記錄。缺點是需要額外加入。
選擇您認爲適合您的情況的用例。
相關問題
- 1. 支持IPv6格式的數據庫服務器地址的數據庫管理工具
- 2. Node.js //管理sqlite數據庫的模塊
- 3. 流星本地與管理數據庫
- 4. 管理結構的地址
- 5. 數據庫管理
- 6. 如何管理對生產數據庫的模式升級?
- 7. 管理內存中數據庫關係的模式
- 8. 管理每週時間表的數據庫模式
- 9. 在Docker中管理數據庫模式的「正確」方法
- 10. 源代碼管理中的存儲過程/數據庫模式
- 11. 用於高效考勤管理系統的數據庫模式
- 12. 開始使用內容管理系統的數據庫模式
- 13. 如何從簡單的docker管理多個數據庫模式?
- 14. Laravel的一種醫院管理數據庫模式
- 15. 數據庫管理庫
- 16. 模型代理數據庫模式
- 17. 數據庫模式:用戶團隊管理
- 18. Lib從數據庫模式構建管理頁面?
- 19. 地理定位/地理空間測試的有效地址列表/數據庫
- 20. 保護模式和物理地址
- 21. 從數據庫集成url地址到django url模式的最佳方式
- 22. 如何管理數據保存速度本地數據庫
- 23. 管理mysql數據庫
- 24. MYSQL數據庫管理
- 25. 管理Wordpress數據庫(Adminer)
- 26. 管理多個數據庫
- 27. IPTC數據管理庫
- 28. 數據庫和表管理
- 29. 管理許多數據庫
- 30. 管理數據庫連接