数据库课程设计——学生宿舍信息管理系统
數(shù)據(jù)庫(kù)課程設(shè)計(jì)——學(xué)生宿舍信息管理系統(tǒng)
目錄?????????????????????????????????????????????????????????????????????????????????????????????
1.設(shè)計(jì)目的... 2
2、任務(wù)與要求... 2
3、學(xué)生宿舍管理系統(tǒng)課程設(shè)計(jì)... 2
3.1 引言... 2
3.2需求分析... 2
3.2.1. 2
3.2.2. 3
3.3概念設(shè)計(jì)... 6
3.4邏輯設(shè)計(jì)... 10
3.5物理結(jié)構(gòu)設(shè)計(jì)... 12
3.6數(shù)據(jù)庫(kù)實(shí)施... 14
3.6.1數(shù)據(jù)庫(kù)表的定義... 14
3.6.2視圖的定義:... 15
3.6.3索引:... 16
3.6.4觸發(fā)器的定義:... 17
3.6.5用戶的定義:... 18
3.6.6 對(duì)數(shù)據(jù)的管理:... 18
3.7系統(tǒng)調(diào)試和測(cè)試... 19
4.系統(tǒng)評(píng)價(jià)... 20
4.1我的系統(tǒng)特色:... 20
4.2 系統(tǒng)不足及改進(jìn)... 21
5.設(shè)計(jì)心得... 21
?
1.設(shè)計(jì)目的
《數(shù)據(jù)庫(kù)系統(tǒng)原理》課程設(shè)計(jì)是軟件工程和計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)集中實(shí)踐性環(huán)節(jié)之一,旨在讓我們自身加深對(duì)數(shù)據(jù)庫(kù)基礎(chǔ)理論和基本知識(shí)的理解,掌握設(shè)計(jì)數(shù)據(jù)庫(kù)管理系統(tǒng)的基本方法,鍛煉運(yùn)用知識(shí)解決實(shí)際問(wèn)題的動(dòng)手能力。
2、任務(wù)與要求
要求學(xué)生們從給定的設(shè)計(jì)題目中進(jìn)行選擇,進(jìn)行需求分析,概念設(shè)計(jì)、邏輯設(shè)計(jì),數(shù)據(jù)庫(kù)的設(shè)計(jì)過(guò)程,表結(jié)構(gòu)、表之間的關(guān)聯(lián),給出視圖的定義、觸發(fā)器的定義、索引,安全性的實(shí)現(xiàn),用SQL語(yǔ)句等在SQL Server 2008系統(tǒng)中實(shí)現(xiàn)數(shù)據(jù)庫(kù)的數(shù)據(jù)輸入,查詢,更新和輸出;給出實(shí)現(xiàn)效果截圖及部分測(cè)試結(jié)果。
?
3、學(xué)生宿舍管理系統(tǒng)課程設(shè)計(jì)
3.1 引言
?
隨著社會(huì)的發(fā)展以及教育水平的提高,當(dāng)今社會(huì)在校生的數(shù)量越來(lái)越龐大。與此同時(shí),使用曾經(jīng)的手工的方式對(duì)學(xué)生的信息進(jìn)行管理效率非常低下。在互聯(lián)網(wǎng)技術(shù)高度發(fā)達(dá)的今天 ,使用數(shù)據(jù)庫(kù)技術(shù)隊(duì)對(duì)學(xué)生的住信息進(jìn)行管理能夠使學(xué)校對(duì)學(xué)生信息的管理更加的高效,檢索迅速,查找方便,可靠性高存儲(chǔ)量大。使用數(shù)據(jù)庫(kù)技術(shù)的這些優(yōu)點(diǎn)可以使得學(xué)生信息出錯(cuò)的發(fā)生。同時(shí)使用數(shù)據(jù)庫(kù)技術(shù)可以使學(xué)生住宿信息長(zhǎng)時(shí)間穩(wěn)定地保存,也不容易丟失。開(kāi)發(fā)出這樣的一個(gè)數(shù)據(jù)庫(kù)迫在眉睫。
3.2需求分析
3.2.1
?系統(tǒng)需求調(diào)查的方法為訪談法,通過(guò)對(duì)多個(gè)學(xué)校的宿舍管理人員進(jìn)行交談,從而得出系統(tǒng)的主要任務(wù)和特定的要求。系統(tǒng)的主要任務(wù)是能夠?qū)λ奚嵝畔?#xff0c;學(xué)生信息,管理員信息,住宿信息進(jìn)行登記,調(diào)整,并能進(jìn)行各種查詢以及信息的備份。
?
完整性要求:防止不符合語(yǔ)義的數(shù)據(jù)進(jìn)入數(shù)據(jù)庫(kù)。
安全性要求:需要防止客戶對(duì)數(shù)據(jù)進(jìn)行未經(jīng)授權(quán)的訪問(wèn)。
性能要求:最好能夠?qū)崿F(xiàn)并發(fā)訪問(wèn),允許多個(gè)用戶同時(shí)對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行訪問(wèn)。
一致性要求:防止數(shù)據(jù)庫(kù)進(jìn)入不一致?tīng)顟B(tài)。
數(shù)據(jù)庫(kù)要求:各種各樣的故障都可能發(fā)生,出現(xiàn)意外時(shí),,盡可能的確保任何數(shù)據(jù)在任何情況下都不會(huì)丟失。
3.2.2
系統(tǒng)的業(yè)務(wù)流程:
學(xué)生入住和退宿時(shí)通過(guò)管理員進(jìn)行登記;
住宿產(chǎn)生的各種費(fèi)用以及使用的各項(xiàng)物品由管理員進(jìn)行登記;
管理員將登記的各項(xiàng)信息上報(bào)給教務(wù)處;
教務(wù)處將各項(xiàng)住宿信息進(jìn)行統(tǒng)一管理;
儲(chǔ)存的所有數(shù)據(jù)供不同權(quán)限的客戶進(jìn)行訪問(wèn);
?
?
數(shù)據(jù)字典:
學(xué)生基本信息
| 編號(hào) | 屬性名 | 類型 | 解釋 | 備注 |
| 0001 | 學(xué)號(hào) | Varchar(15) | 無(wú) | 無(wú) |
| 0002 | 姓名 | Varchar(10) | 無(wú) | 無(wú) |
| 0003 | 性別 | Varchar(2) | 無(wú) | 男、女 |
| 0004 | 年齡 | Int | 無(wú) | 0……100之間 |
| 0005 | 手機(jī)號(hào) | Varchar(15) | 手機(jī)號(hào)碼 | 無(wú) |
| 0006 | 專業(yè) | Varchar(20) | 無(wú) | 無(wú) |
?
住宿費(fèi)用信息:
?
?
| 編號(hào) | 屬性名 | 類型 | 解釋 | 備注 |
| 0008 | 表單編號(hào) | Varchar(15) | 無(wú) | 無(wú) |
| 0009 | 學(xué)號(hào) | Varchar(15) | 無(wú) | 無(wú) |
| 0010 | 宿舍號(hào) | Varchar(6) | 不是門牌號(hào) | 無(wú) |
| 0011 | 水費(fèi) | Double(6) | 無(wú) | 大于0 |
| 0012 | 電費(fèi) | Double(6) | 無(wú) | 大于0 |
| 0013 | 維修費(fèi) | Double(6) | 無(wú) | 大于0 |
| 0014 | 住宿費(fèi) | Double(6) | 無(wú) | 大于0 |
| 0015 | 日期 | Date(8) | 無(wú) | 無(wú) |
| 0016 | 合計(jì) | Double(6) | 無(wú) | 大于0 |
?
?
?
物品管理信息:
?
| 編號(hào) | 屬性名 | 類型 | 解釋 | 備注 |
| 0017 | 員工號(hào) | Varchar(15) | 無(wú) | 無(wú) |
| 0018 | 宿舍號(hào) | Varchar(15) | 無(wú) | 無(wú) |
| 0019 | 桌子 | Int | 無(wú) | 大于0 |
| 0020 | 椅子 | Int | 無(wú) | 大于0 |
| 0021 | 床 | Int | 無(wú) | 大于0 |
| 0022 | 電扇 | Int | 無(wú) | 大于0 |
| 0023 | 燈 | Int | 無(wú) | 大于0 |
| 0024 | 窗戶 | Int | 無(wú) | 大于0 |
?
?
?
宿舍信息
?
| 編號(hào) | 屬性名 | 類型 | 解釋 | 備注 |
| 0025 | 宿舍編號(hào) | Varchar(15) | 無(wú) | 無(wú) |
| 0026 | 樓號(hào) | Varchar(15) | 無(wú) | 無(wú) |
| 0027 | 區(qū)域 | Varchar(15) | 校園內(nèi) | ABCDEFG |
| 0028 | 人數(shù) | Int | 無(wú) | 0……8 |
| 0029 | 房間類型 | Varchar(15) | 按人數(shù)分 | 1(四人)2(六人)3(八人) |
?
?
管理員信息
?
| 編號(hào) | 屬性名 | 類型 | 解釋 | 備注 |
| 0030 | 員工號(hào) | Varchar(15) | 無(wú) | 無(wú) |
| 0031 | 姓名 | Varchar(10) | 無(wú) | 無(wú) |
| 0032 | 性別 | Varchar(2) | 無(wú) | 男,女 |
| 0033 | 年齡 | Int | 無(wú) | 0……100 |
| 0034 | 手機(jī)號(hào) | Varchar(15) | 無(wú) | 11位 |
| 0035 | 樓號(hào) | int | 無(wú) | 無(wú) |
| 0036 | 區(qū)域 | int | 無(wú) | ABCDEFG |
| 0037 | 職位 | Varchar(2) | 無(wú) | 1(高級(jí)員工)2(普通員工) |
?
?
3.2.2 系統(tǒng)功能描述:
對(duì)學(xué)生的信息進(jìn)行管理;
對(duì)宿舍信息進(jìn)行管理;
對(duì)管理員信息進(jìn)行管理;
對(duì)宿舍物品進(jìn)行登記和管理;
對(duì)住宿產(chǎn)生的各項(xiàng)費(fèi)用進(jìn)行登記和管理;
對(duì)已經(jīng)更改的學(xué)生和管理員信息進(jìn)行保存
?
在這幅圖中,其中各項(xiàng)從左往右前5部分功能都包括各自信息的增刪改查,第六項(xiàng)功能為學(xué)生和教師信息的備份,也就是已修改信息儲(chǔ)存。
3.3概念設(shè)計(jì)
(說(shuō)明使用數(shù)據(jù)庫(kù)概念設(shè)計(jì)的基本思想和原理方法,設(shè)計(jì)出系統(tǒng)E-R圖)
基本思想:將需求分析得到的用戶需求抽象為信息結(jié)構(gòu),分析數(shù)據(jù)字典中數(shù)據(jù)字典間內(nèi)在語(yǔ)義關(guān)聯(lián),并將其抽象表示為數(shù)據(jù)的概念模式,從而能真實(shí),充分地反應(yīng)真實(shí)世界,包括事物和事物之間的聯(lián)系,能滿足用戶對(duì)數(shù)據(jù)的處理需求,是現(xiàn)實(shí)世界的一個(gè)真實(shí)模型,易于理解,從而可以用它和不熟悉計(jì)算機(jī)的人交換意見(jiàn),且易于更改。方法:首先分析整個(gè)系統(tǒng)中涉及到的實(shí)體,得到局部的ER圖。然后分析這些實(shí)體之間的關(guān)系,進(jìn)行連接從而得到
?
?
?
?
?
?
3.4邏輯設(shè)計(jì)
基本思想:首先整個(gè)系統(tǒng)一共可以劃分出三個(gè)實(shí)體,分別是學(xué)生,管理員和宿舍,三者之間構(gòu)成一個(gè)三角關(guān)系。同時(shí),學(xué)生和宿舍之間的住宿關(guān)系衍生出一系列的住宿產(chǎn)生的費(fèi)用,管理員和宿舍的管理關(guān)系衍生出一系列需要管理的物品,因此五張表相互關(guān)聯(lián)生成完整的數(shù)據(jù)庫(kù)系統(tǒng)。
數(shù)據(jù)庫(kù)關(guān)系圖:
學(xué)生的個(gè)人信息:學(xué)號(hào),姓名,性別,年齡,手機(jī)號(hào)碼,專業(yè),管理員號(hào)
student(stu_num,stu_name,stu_gender,stu_age,stu_tele,stu_spe,manager_num)
?
宿舍費(fèi)用信息:表單編號(hào),水費(fèi),電費(fèi),維修費(fèi),住宿費(fèi),總費(fèi)用,日期
live(list_num,stu_num,dor_num,water,electric,service,lodge,total,date)
?
宿舍物品信息:桌子,椅子,床,燈,
tool(mana_num,dor_num,table,chair,bed,light)
?
宿舍信息:宿舍編號(hào),人數(shù),房間類型,樓號(hào),區(qū)域
dormitory(dor_num ,prople_total,size, build_num,zone)
?
宿舍管理人員信息:員工號(hào),姓名,性別,年齡,手機(jī)號(hào)
manager(mana_num,mana_name,mana_gender,mana_age,mana_tele)
??
??
3.5物理結(jié)構(gòu)設(shè)計(jì)
?
物理設(shè)計(jì)的基本思想:根據(jù)邏輯設(shè)計(jì)出的邏輯模式,DBMS及計(jì)算機(jī)系統(tǒng)所提供的手段和施加的限制,設(shè)計(jì)數(shù)據(jù)庫(kù)的內(nèi)模式,即文件結(jié)構(gòu),各種路徑,控件分配,記錄的存取方式等,為邏輯數(shù)據(jù)結(jié)構(gòu)選取一個(gè)最合適的應(yīng)用環(huán)境的物理結(jié)構(gòu)。
學(xué)生基本信息表:
?
| 屬性名 | 類型 | 長(zhǎng)度 | 備注 |
| Stu_num | varchar | 15 | 無(wú) |
| Stu_name | varchar | 10 | 無(wú) |
| Stu_gender | varchar | 2 | 男、女 |
| Stu_age | int | 4 | 0……100之間 |
| Stu_tele | varchar | 15 | 無(wú) |
| Stu_spe | varchar | 20 | 無(wú) |
住宿費(fèi)用信息表:
?
| 屬性名 | 類型 | 長(zhǎng)度 | 備注 |
| List_num | Varchar | 15 | 無(wú) |
| ?? Stu_num | Varchar | 15 | 無(wú) |
| ?? Dor_num | Varchar | 15 | 無(wú) |
| water | double | 6 | 大于0 |
| Elect | double | 6 | 大于0 |
| ??? Repaire | double | 6 | 大于0 |
| live | double | 6 | 大于0 |
| date | date | 8 | 指的是具體一年 |
物品管理信息表:
?
| 屬性名 | 類型 | 長(zhǎng)度 | 備注 |
| Mana_num | Varchar | 15 | 無(wú) |
| ??? Dor_num | Varchar | 15 | 無(wú) |
| Desk | Int | 2 | 大于0 |
| Chair | Int | 2 | 大于0 |
| Bed | Int | 2 | 大于0 |
| fan | Int | 2 | 大于0 |
| lighr | Int | 2 | 大于0 |
| window | Int | 2 | 大于0 |
宿舍信息表:
| 屬性名 | 類型 | 長(zhǎng)度 | 備注 |
| Dor_num | Varchar | 15 | 無(wú) |
| Build_num | Varchar | 2 | 無(wú) |
| Zone | Varchar | 2 | ABCDEFG |
| People_total | Int | 2 | 0……8 |
| size | varchar | 2 | 1(四人)2(六人)3(八人) |
管理員信息表:
| 屬性名 | 類型 | 長(zhǎng)度 | 備注 |
| ?? Mana_num | Varchar | 15 | 無(wú) |
| Mana_name | Varchar | 10 | 無(wú) |
| Mana_gender | Varchar | 2 | 男,女 |
| Mana_age | Int | 4 | 0……100 |
| Mana_tele | varchar | 15 | 11位 |
| Build_num | int | 2 | 無(wú) |
| zone | varchar | 2 | ABCDEFG |
3.6數(shù)據(jù)庫(kù)實(shí)施
數(shù)據(jù)庫(kù)的實(shí)施:數(shù)據(jù)庫(kù)設(shè)計(jì)完成后,設(shè)計(jì)人員要用DBMS提供的數(shù)據(jù)定義語(yǔ)言和其他的使用程序?qū)?shù)據(jù)庫(kù)邏輯結(jié)構(gòu)設(shè)計(jì)和物理結(jié)構(gòu)設(shè)計(jì)的結(jié)構(gòu)用DDL嚴(yán)格描繪出來(lái),成為DBMS可以接受的源代碼,再經(jīng)過(guò)調(diào)試產(chǎn)生目標(biāo)模式。最后將數(shù)據(jù)裝入數(shù)據(jù)庫(kù)。
?
3.6.1數(shù)據(jù)庫(kù)表的定義
創(chuàng)建學(xué)生信息表:
?Create table student
(stu_num? varchar(15),
Stu_name? varchar(10),
Stu_gender? varchar(2)? check(stu_gender=’男’ or stu_gender=’女’),
Stu_age? int? check(stu_age>0 and stu_age<100),
Stu_tele? varchar(15),
Stu_spe? varchar(20),
Primary key (stu_num),
);
?
創(chuàng)建費(fèi)用信息表:
?Create? table? live
( list_num? varchar(15),
Stu_num? varchar(15),
Dor_num? varchar(15),
Water? float check(water>=0),
Elect? float? check(elect>=0),
Repair? float? check(repair>=0),
Living? float? check(living>=0),
statu? int default(1),?
Date? date,
Primary key(list_num),
Foreign key (stu_num ) references? student(stu_num)
on update cascade,
Foreign key (dor_num ) references? dormitory(dor_num)
on update cascade
);
?
?
創(chuàng)建物品信息管理表:
Create? table tool
( mana_num? varchar(15),
Dor_num? varchar(15),
desk? int? check(desk>=0),
Chair? int? check(chair>=0),
Bed? int? check(bed>=0),
Light? int? check(light>=0),
Primary key (dor_num),
Foreign key (mana_num ) references? manager(mana_num)
on update cascade on delete set null
);
?
創(chuàng)建宿舍信息管理表:
?Create table dormitory
(dor_num varchar(15),
People_total? int? check(people_total>=0 and people_total<=8),
Size?? int check(size=1 or size=2? or size=3)
);
?
創(chuàng)建管理員信息表:
?Create table manager
(mana_num? varchar(15),
mana_name? varchar(10),
mana_gender? varchar(2)? check(stu_gender='男' or stu_gender='女'),
mana_age? int? check(stu_age>0 and stu_age<100),
mana_tele? varchar(15),
Primary key (mana_num)
);
?
3.6.2視圖的定義:
所有的信息匯總在一起:
Create view allmass
(stu_num,stu_name,stu_gender,stu_age,stu_tele,stu_spe,stu_statu,list_num,dor_num,water,elect,repair,living,live_status,Date,people_total,size,dor_status,mana_num,desk,chair,bed,light,tool_statu,mana_name,mana_gender,mana_age,mana_tele,mana_statu)
as select student.stu_num,stu_name,stu_gender,stu_age,stu_tele,stu_spe,stu_statu,list_num,dormitory.dor_num,water,elect,repair,living,live_statu,Date,people_total,size,dor_statu,manager.mana_num,desk,chair,bed,light,tool_statu,mana_name,mana_gender,mana_age,mana_tele,mana_statu
from student,lives,dormitory,tool,manager
where student.stu_num=lives.stu_num
and lives.dor_num=dormitory.dor_num
and dormitory.dor_num=tool.dor_num
and tool.mana_num= manager.mana_num ;
學(xué)生信息視圖:
Select stu_num,stu_name,stu_gender,stu_age,stu_tele,stu_spe,mana_name
from allmass
where stu_statu=1;
?
管理員信息:
create view manager_view
as
select manager.mana_num,mana_name,mana_age,mana_gender,mana_tele
from manager
where? mana_statu=1;
宿舍信息:
create view dormitory_view
as
select tool.dor_num,build_num,zone,people_total,size
from tool,dormitory
where tool.dor_num=dormitory.dor_num and dor_statu=1;
物品信息:
create view tool_view
as
select dor_num,mana_num, desk,chair,bed,light
from tool
where tool_statu=1;
賬單信息:
create view lives_view
as
select list_num,stu_name,dor_num,water,elect,date,repair,living
from lives,student
where live_statu=1 and lives.stu_num=student.stu_num;
?
3.6.3索引:
每一張表通過(guò)主鍵的列產(chǎn)生索引,從而加快查詢時(shí)的進(jìn)度。
拿學(xué)生信息表進(jìn)行舉例:
Create index stu_index on student(stu_num);
當(dāng)然可以通過(guò)數(shù)據(jù)庫(kù)自動(dòng)生成。
?
3.6.4觸發(fā)器的定義:
在學(xué)生表上建立觸發(fā)器,記錄被修改的信息。在原表中通過(guò)一個(gè)狀態(tài)屬性標(biāo)示是否被刪除,因此數(shù)據(jù)并不會(huì)真正被刪除,只需要記錄被修改的信息。
create trigger on_pre_stu
on student
for update
as
begin
declare @stu_num varchar(15)
declare @pre_stu_name varchar(10)
declare @pre_stu_gender varchar(2)
declare @pre_stu_age int
declare @pre_stu_tele varchar(15)
declare @pre_stu_spe? varchar(20)
select? @stu_num = stu_num from deleted
select @pre_stu_name =stu_name from deleted
select @pre_stu_gender =stu_gender from deleted
select @pre_stu_age = stu_age from deleted
select @pre_stu_tele =stu_tele from deleted
select @pre_stu_spe = stu_spe from deleted
insert into pre_stu(stu_num,pre_stu_name,pre_stu_gender,pre_stu_age,pre_stu_tele,pre_stu_spe )
values(@stu_num,@pre_stu_name,@pre_stu_gender,@pre_stu_age,@pre_stu_tele,@pre_stu_spe)
end
?
在管理員上建立觸發(fā)器,記錄被修改的信息。在原表中通過(guò)一個(gè)狀態(tài)屬性標(biāo)示是否被刪除,因此數(shù)據(jù)并不會(huì)真正被刪除,只需要記錄被修改的信息。
?
create trigger on_pre_mana
on manager
for update
as
begin
declare @mana_num varchar(15)
declare @pre_mana_name varchar(10)
declare @pre_mana_gender varchar(2)
declare @pre_mana_age int
declare @pre_mana_tele varchar(15)
select? @mana_num = mana_num from deleted
select @pre_mana_name =mana_name from deleted
select @pre_mana_gender =mana_gender from deleted
select @pre_mana_age = mana_age from deleted
select @pre_mana_tele =mana_tele from deleted
insert
into pre_mana(mana_num,pre_mana_name,pre_mana_gender,pre_mana_age,pre_mana_tele)values(@mana_num,@pre_mana_name,@pre_mana_gender,@pre_mana_age,@pre_mana_tele)
??? end
3.6.5用戶的定義:
create user dba for login dba with default_schema=dbo
exec sp_addrolemember 'db_owner' ,'dba'
?
3.6.6 對(duì)數(shù)據(jù)的管理:
對(duì)數(shù)據(jù)的管理主要是由增刪改查組成,以學(xué)生信息的管理為例,
增加:
insert into
student(stu_num,stu_name,stu_gender,stu_age,stu_tele,stu_spe,stu_statu)
values('201677H0555','劉飛達(dá)','男',19,14646646465,'軟工',1);
?
刪除:值得注意的是我刪除信息用的是更新信息語(yǔ)句,只需要更改狀態(tài)值即可標(biāo)示數(shù)據(jù)是否被刪除,數(shù)據(jù)不會(huì)真的被刪除,做好了別分工作。
update student set stu_status=0 where stu_num=’201677H0522’;
修改:
update student set stu_name='劉豪' where stu_num='201677H0522';
?
查詢:值得注意的是查詢的條件是數(shù)據(jù)行的狀態(tài)值是1,也就是被標(biāo)示未被刪除。
select stu_num,stu_name,stu_gender,stu_age,stu_tele,stu_spe from student where stu_statu=1;
?
分別查詢每一個(gè)宿舍的總費(fèi)用,并且按照宿舍號(hào)進(jìn)行排序(使用的是分組求和的思想):
select dor_num , sum(w?? ater+elect + repair +living) from lives group by dor_num order by dor_num ;
在sql代碼執(zhí)行的過(guò)程中,會(huì)自動(dòng)生成存儲(chǔ)過(guò)程,將有價(jià)值的存儲(chǔ)過(guò)程進(jìn)行儲(chǔ)存。
?
3.7系統(tǒng)調(diào)試和測(cè)試
?
在對(duì)數(shù)據(jù)庫(kù)的備份功能進(jìn)行測(cè)試的過(guò)程中,我在原表中對(duì)數(shù)據(jù)進(jìn)行修改,從而觸動(dòng)觸發(fā)器將被刪除的信息儲(chǔ)存在備份表中。執(zhí)行語(yǔ)句update student set stu_name='劉豪' where stu_num='201677H0522'; 然后查看備份表中的信息,驗(yàn)證之后正確。
?
把數(shù)據(jù)庫(kù)總所有的信息聯(lián)合起來(lái),形成一張非常大的表,生成一個(gè)視圖,測(cè)試之后,可以成功生成,滿足要求。
在安全性方面,我創(chuàng)建了用戶并且進(jìn)行了授權(quán):
create login dba with password='123456', default_database=stu_dor_manage;
create user dba for login dba with default_schema=dbo
exec sp_addrolemember 'db_owner' ,'dba'
執(zhí)行以后,成功生成了一個(gè)用戶:測(cè)試成功!
4.系統(tǒng)評(píng)價(jià)
4.1我的系統(tǒng)特色:
A、數(shù)據(jù)結(jié)構(gòu)化 ,數(shù)據(jù)之間具有聯(lián)系,面向整個(gè)系統(tǒng)。
B、數(shù)據(jù)的共享性高,冗余度低,易擴(kuò)充 。
C、數(shù)據(jù)獨(dú)立性高 。
D、數(shù)據(jù)由DBMS統(tǒng)一管理和控制。
4.2 系統(tǒng)不足及改進(jìn)
在對(duì)數(shù)據(jù)庫(kù)進(jìn)行設(shè)計(jì)的過(guò)程中,結(jié)構(gòu)比較簡(jiǎn)單,不能夠應(yīng)對(duì)是否能復(fù)雜的情況,只能對(duì)學(xué)生住宿的簡(jiǎn)單信息進(jìn)行操作。另外,在安全性方面做得也不夠完善,主要原因在于設(shè)計(jì)的重點(diǎn)是功能的正常執(zhí)行,而不是在每一個(gè)細(xì)節(jié)做到完美。另外,執(zhí)行虛度方面沒(méi)有做出專門的優(yōu)化。因此,這個(gè)數(shù)據(jù)庫(kù)系統(tǒng)需要我在以后相信的去完成每一個(gè)細(xì)節(jié)。
5.設(shè)計(jì)心得
在設(shè)計(jì)數(shù)據(jù)庫(kù)的過(guò)程中我遇到過(guò)非常多的問(wèn)題:
首先,在設(shè)計(jì)階段有非常多的數(shù)據(jù)項(xiàng),當(dāng)時(shí)覺(jué)得不好分類和處理,而且有很多的數(shù)據(jù)項(xiàng)和許多實(shí)體都有關(guān)系。最后通過(guò)查看課本例題,問(wèn)同學(xué)等方式將各個(gè)數(shù)據(jù)項(xiàng)進(jìn)行歸類,對(duì)于和多個(gè)實(shí)體之間都有關(guān)系的數(shù)據(jù)項(xiàng)可以建立一個(gè)關(guān)系表,從而完成歸類。
接著,在添加數(shù)據(jù)的過(guò)程中,我忽略掉了數(shù)據(jù)的參照完整性,導(dǎo)致許多數(shù)據(jù)不能夠正常加入。后來(lái)經(jīng)過(guò)同學(xué)的提示,我將數(shù)據(jù)進(jìn)行了統(tǒng)一分析,保持所有的數(shù)據(jù)一致,最后數(shù)據(jù)可以正常輸入。
最后,每個(gè)表中的數(shù)據(jù)更改完成之后,更改后的數(shù)據(jù)會(huì)丟失找不到了。對(duì)于這個(gè)問(wèn)題就解決辦法為加入觸發(fā)器,記錄表中信息的修改前的值,成功解決問(wèn)題。
收獲:對(duì)于一個(gè)系統(tǒng),數(shù)據(jù)庫(kù)的設(shè)計(jì)是非常重要的,數(shù)據(jù)庫(kù)設(shè)計(jì)決定了以后數(shù)據(jù)好不好維護(hù)。后期需求好不好展。同時(shí)也決定了系統(tǒng)的性能。一個(gè)壞的數(shù)據(jù)庫(kù)設(shè)計(jì)一個(gè)功能點(diǎn)的改動(dòng)可能會(huì)設(shè)計(jì)多張表的改動(dòng)。一不小心可能就會(huì)引起數(shù)據(jù)的不一致。為了解決這些問(wèn)題。在數(shù)據(jù)庫(kù)設(shè)計(jì)之初就要考慮這些問(wèn)題。減少后期系統(tǒng)維護(hù)量。
?
?
?
?
總結(jié)
以上是生活随笔為你收集整理的数据库课程设计——学生宿舍信息管理系统的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 讯时构架设计
- 下一篇: window10安装虚拟机及相关软件