mysql數據庫表設計及存儲過程設計
一、目標
電話手表的數據庫表設計,以及為了服務器與數據庫后台分離進行存儲過程設計。
二、數據庫表設計
基本的數據表設計,設備信息表(手表)、APP用戶個人信息表、設備登錄狀態表、經緯度位置表、消息表(可進行聊天)、指令表(用來記錄app對設備的操作等)、驗證碼記錄表、群組表、群成員表、意見表(意見反饋記錄)、綁定表(設備與APP用戶相互綁定)、陌生人表(記錄設備上陌生人來電)、設備通訊錄表(保存設備的通訊錄名單)、手表消息記錄表(用來對設備的各種消息的記錄)等。
遵循數據庫設計三大范式。
三、存儲過程設計
選擇存儲過程有幾方面的考慮:
1.速度、網絡帶寬 考慮的較少。
2.服務器端與數據庫端解耦,當數據庫變動的時候,不影響服務器代碼。
3.加快項目的進程。
4.安全問題,限制非數據庫人員的操作權限,只能通過存儲過程進行操作數據庫。
四、踩過的坑
1.數據庫設計:
(1)對於鬧鍾開關,多個鬧鍾時間設置等,建議使用json形式進行存取。
(2)盡可能把非強相關性的表分開成兩張表或是多張表
(3)遵循數據庫設計三大范式
(4)保證數據庫表設計前后一致,簡介
2.存儲過程設計:
(1)傳入參數一致性需要認真校驗
(2)注意調用者權限問題,definer | invoker :在begin之前加上 sql security invoker
另外需要修改調用者權限:grant select,insert,delete,update,execute on database.* to 'user'@'%' ;
由於項目服務端仍未開發好,所以數據庫測試沒遇到編碼問題、格式問題、接口參數類型問題等等。