資料庫假數據
① 求問教務系統SQL資料庫 。考勤 請假 節假日之類要怎麼設計資料庫,(用戶,用戶中還有分組=部門,然後有)
1.員工信息表(包括 職務(級別),入職時間(工齡),部門等)
2.部門信息表(分組表)
3.工時總表(記錄每個月的實際出勤數)(員工號,年度,1月工時,2月工時.....12月工時)
4.休假總表(記錄各種假的基數,已休數,剩餘數)(員工號,年度,年假基數,上年剩餘,已休天數,未休天數,病假基數已休天數,未休天數,其它假已休天數)
5. 考勤明細表(員工號,考勤日期,工時數....)
6. 休假明細表(員工 號,休假日期,休假類型,休假小時數)
7. 休假類型表
8. 工作日表(只需要設置發生狀態變化的,周一至周五預設認為是工作日,周六日為休息日,如10月1日是周一,要設為非工作日,如果剛好是周六,則不需要設置)
9.用戶表(包括 許可權設置等)
② 資料庫的並發操作分帶來哪些問題
資料庫事務並發帶來的問題有:更新丟失、臟讀、不可重復讀、幻象讀。假設張三辦了一張招商銀行卡,余額100元,分別說明上述情況。
1、更新丟失:一個事務的更新覆蓋了另一個事務的更新。事務A:向銀行卡存錢100元。事務B:向銀行卡存錢200元。A和B同時讀到銀行卡的余額,分別更新余額,後提交的事務B覆蓋了事務A的更新。更新丟失本質上是寫操作的沖突,解決辦法是一個一個地寫。
2、臟讀:一個事務讀取了另一個事務未提交的數據。事務A:張三妻子給張三轉賬100元。事務B:張三查詢余額。事務A轉賬後(還未提交),事務B查詢多了100元。事務A由於某種問題,比如超時,進行回滾。事務B查詢到的數據是假數據。臟讀本質上是讀寫操作的沖突,解決辦法是寫完之後再讀。
3、不可重復讀:一個事務兩次讀取同一個數據,兩次讀取的數據不一致。事務A:張三妻子給張三轉賬100元。事務B:張三兩次查詢余額。事務B第一次查詢余額,事務A還沒有轉賬,第二次查詢余額,事務A已經轉賬了,導致一個事務中,兩次讀取同一個數據,讀取的數據不一致。不可重復讀本質上是讀寫操作的沖突,解決辦法是讀完再寫。
4、幻象讀:一個事務兩次讀取一個范圍的記錄,兩次讀取的記錄數不一致。事務A:張三妻子兩次查詢張三有幾張銀行卡。事務B:張三新辦一張銀行卡。事務A第一次查詢銀行卡數的時候,張三還沒有新辦銀行卡,第二次查詢銀行卡數的時候,張三已經新辦了一張銀行卡,導致兩次讀取的銀行卡數不一樣。幻象讀本質上是讀寫操作的沖突,解決辦法是讀完再寫。