vhr部門管理資料庫設計與程式設計

2021-08-15 07:34:26 字數 2798 閱讀 9860

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個位元組上建索引 展示版塊及版...