1.springboot+vue前後端分離,使用springsecurity完美處理許可權問題(一)
2.springboot+vue前後端分離,使用springsecurity完美處理許可權問題(二)
3.springsecurity中密碼加鹽與springboot中異常統一處理
4.axios請求封裝和異常統一處理
5.許可權管理模組中動態載入vue元件
6.springboot+vue前後端分離,使用springsecurity完美處理許可權問題(六)
好了,那我們本文主要來看看資料庫的設計與儲存過程的編寫。
部門資料庫整體來說還是比較簡單,如下:
新增部門儲存過程如下:
delimiter $$
use `vhr`$$
drop
procedure
ifexists
`adddep`$$
create definer=`root`@`localhost`
procedure
`adddep`(in depname varchar(32),in parentid int,in enabled boolean,out result int,out result2 int)
begin
declare did int;
declare pdeppath varchar(64);
insert
into department set name=depname,parentid=parentid,enabled=enabled;
select row_count() into result;
select last_insert_id() into did;
set result2=did;
select deppath into pdeppath from department where id=parentid;
update department set deppath=concat(pdeppath,'.',did) where id=did;
update department set isparent=true
where id=parentid;
end$$
delimiter ;
關於這個儲存過程,我說如下幾點:
1.該儲存過程接收五個引數,三個輸入引數分別是部門名稱、父部門id,該部門是否啟用,兩個輸出引數分別表示受影響的行數和插入成功後id的值。
2.儲存過程首先執行插入操作,插入完成後,將受影響行數賦值給result。
3.然後通過last_insert_id()
獲取剛剛插入的id,賦給result2。
4.接下來查詢父部門的deppath,並且和剛剛生成的id組合後作為剛剛插入部門的deppath。
5.將父部門的isparent欄位更新為true。
將這些邏輯寫在儲存過程中,可以簡化我們**中的邏輯。
刪除部門也被我寫成了儲存過程,主要是因為刪除過程也要做好幾件事,核心**如下:
delimiter $$
use `vhr`$$
drop procedure
ifexists `deletedep`$$
create
definer=`root`@`localhost` procedure `deletedep`(in did int,out
result int)
begin
declare
ecount
int;
declare pid int;
declare pcount int;
select count(*) into ecount from employee where departmentid=did;
if ecount>0 then set result=-1;
else
select parentid into pid from department where id=did;
delete from department where id=did and isparent=false;
select row_count() into result;
select count(*)
into pcount from department where parentid=pid;
if pcount=0
then update department set isparent=false
where id=pid;
endif; end
if;end$$
delimiter ;
關於這個儲存過程,我說如下幾點:
1.乙個輸入引數表示要刪除資料的id,乙個輸出引數表示刪除結果。
2.如果該部門下有員工,則該部門不能被刪除。
3.刪除該部門時注意加上條件isparent=false,即父部門不能被刪除,這一點我在前端已經做了判斷,正常情況下父部門的刪除請求不會被傳送,但是考慮到前端的資料不能被信任,所以後台我們也要限制。
4.刪除成功之後,查詢刪除部門的父部門是否還有其他子部門,如果沒有,則將父部門的isparent修改為false。
SQLServer程式設計 資料庫設計
sqlserver教程 專案文件參考 sql server開發文件 1 開發規範 sql server資料庫開發規範 關係型資料庫基本概念與知識框架 實體,屬性 由表 關係 以及操作物件 儲存過程 檢視 組成 資料庫完整性以及冗餘 資料庫效能概念。基本知識 1 建立資料庫 使用者的建立,許可權管理。...
管理資料庫與表
一 資料庫的建立與刪除 1.介紹 資料庫是用於儲存和操作諸如表,資料庫檢視,觸發器,儲存過程等資料的物件的集合。2.建立資料庫 3.顯示資料庫 show databases語句顯示mysql資料庫伺服器中的所有資料庫。其中 information schema,performance schema和...
論壇管理系統資料庫設計
注 mysql不允許在blob text,tinyblob,mediumblob,longblob,tinytext,mediumtext,longtext,varchar建索引,因為前面那些列型別都是可變長的,mysql無法保證列的唯一性,只能在blob text前n個位元組上建索引 展示版塊及版...