數據庫程序設計(畢業選題系統)

在一個爲期兩週的時間裏進行了一次完整的數據庫設計的過程,不敢說自己有多大進步,獲得多少知識,但起碼瞭解了以後項目開發所需要數據庫創建的基本內容。這次設計中有許多是老師一次次的實驗課所講內容的總結,還有自己沒有接觸的知識也通過查詢資料學了,收穫很大。
在這分享給博主們,有問題可以指出!!!!

文章目錄


1引言
1.1課題研究的意義
2 需求分析
2.1系統需求分析
2.2系統功能需求分析
3概念結構設計
3.1抽象出系統的實體
3.1.1各基本實體集的屬性定義如下
3.1.2根據實體屬性畫出E-R圖
3.2設計總的E-R圖
3.2.1定義聯繫集及屬性
3.2.2全局E-R圖
4邏輯結構設計
4.1 E-R圖轉換關係模式
5、數據庫物理設計與實施
5.1 創建數據庫
5.2建立和管理基本表
5.2.1建立基本表
5.2.2 管理基本表
5.3 建立和管理視圖
5.3.1 建立視圖
5.3.2 管理視圖
6 訪問數據庫
6.1 數據添加
6.2 數據查詢
6.3數據跟新
7 數據庫維護
7.1備份數據庫
7.2創建觸發器
1引言
隨着當代大學生越來越多,畢業設計選題的種類也越來越豐富,並且也要面對學生多老師少等難題。每當一個老師面對多個學生的設計題目,由於數據大,操作麻煩,會非常浪費畢業生和老師的時間。現在我們正處於信息發達的時代,我們應該利用當前技術建立一個題目數據庫,這樣工作會便捷、高效。
1.1課題研究的意義
建立畢業設計選題系統,這樣可以滿足教師和學生的雙向選擇,即老師可以選擇學生,學生也可以選擇自己的老師。系統給教師的權限是可以增加或者減少題目、查看自己帶的多少個學生以及一些基本信息,學生的權限是選擇題目、瀏覽教師題目以及教師的簡介信息。這樣條理清晰的進行,保證了學生信息的流暢,同時也避免了複雜的管理。
2 需求分析
2.1系統需求分析
隨着互聯網的發展,計算機的軟硬件不斷的更新迭代,這時計算機已經可以管理超大規模的數據,文件系統遠遠不能滿足各種應用的需求,數據庫使得數據實現了結構化存儲,數據更容易被共享。數據庫管理系統既便於數據的集中管理,控制冗餘,提高數據的利用率和一致性,又利於應用程序的開發和維護。
隨着高校學生人數越來越多,課程越來越豐富,學生多老師少,迫切需要一個數據庫管理系統來管理、存取大量的信息,則建立一個學生畢業設計選題系統具有非常大的實際應用意義。我們知道計算機具有運算速度快,處理能力強等特點。因此,爲了保證學校信息的流暢,工作高效,學生畢業設計選題系統應運而生。這不但能使教務人員從複雜的管理中解脫出來,而且對於推動教學的發展也起到非常重要的作用。
2.2系統功能需求分析
教師和學生進行雙向選擇,即學生可選擇相應的畢業設計題目,教師也可選擇學生。

教師:

  1. 教師可以增加畢業設計題目,人數及要求。
  2. 教師可錄取報名的學生,查看學生的詳細信息如學生的基本信息等內容。
  3. 針對不同的用戶,可進行相關的統計、查詢可查看報自己的學生人數,基本信息等。
    2)學生:
  4. 可瀏覽教師的畢業設計題目及教師的簡介等內容。
  5. 可查看自己的個人信息(基本信息)。
  6. 可以報畢業設計題目,每人限報兩個,第一選題志願和第二選題志願。
    3)管理員:
  7. 可對每個教師、學生進行統計分析與維護。
    3概念結構設計
    3.1抽象出系統的實體
    根據前面的需求分析,可以將畢業設計選題系統的數據庫實體集劃分爲:學生實體集、教師實體集、管理員實體集、題目實體集、班級實體集、專業實體集和學院實體集七個實體。
    3.1.1各基本實體集的屬性定義如下
    1)學生(student):學號(sno)、姓名(sname)、性別(sex)、出生日期(birthday)、籍貫(native)、民族(nation)等。
    2)教師(teacher):教師編號(teano)、姓名(teaname)、性別(sex)、學位(degree).
    3)班級(class):班級編號(cno)、班級名稱(cname)等。
    4)專業(major):專業編號(mno)、專業名稱(mname)等。
    5)學院(institute):學院編號(ino)、學院名稱(iname)等。
    6)題目(title):題目編號(tno)、題目名稱(tname)、要求(requ)、人數(pop)等。
    7)管理員(manager):工號(maon)、姓名(maname)、性別(sex)、聯繫方式(pho)等。
    3.1.2根據實體屬性畫出E-R圖
    如圖3-1、3-2、3-3、3-4、3-5、3-6、3-7,並在圖中標出主鍵(加下劃線的屬性)

    在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述

3.2設計總的E-R圖
根據需求分析,可以知道各個實體之間存在一定的聯繫。
3.2.1定義聯繫集及屬性
1)選題(selecttitle):它是題目實體集和學生實體集的一對多聯繫集,屬性:題目編號(tno)、學號(sno)、教師編號(teano)、指導(wish)、指導情況(admission)等。
2)出題(settitle):它是教師實體集與題目實體集之間的一對多聯繫集。無屬性。
3)指導(guidance):它是教師實體集與學生實體集的一對多的聯繫集。無屬性。
4)包含(include):它是班級實體集與學生實體集的一對多的聯繫集。無屬性。
5)擁有(hold):它是班級實體集與學生實體集的一對多的聯繫集。無屬性。
6)屬於(belong):它是學院實體集與教師實體集的一對多的聯繫集。無屬性。
7)設置(establish):它是學院實體集與專業實體集的一對多的聯繫集。無屬性。
8)權限設置:用戶(user):賬號(uno)、登陸密碼(password)、姓名(uname)、身份(id)等。
3.2.2全局E-R圖

在這裏插入圖片描述

4邏輯結構設計
邏輯結構設計是將概念結構轉換爲某個 DBMS 所支持的數據模型,並對其進行優化。((下劃線加粗代表主碼,斜體加粗代表外碼 )
4.1 E-R圖轉換關係模式
(1)學生student(sno,sname,sex,birthday,native,nation,cno);分析student關係模式得函數依賴關係爲:sno->{sname,sex,birthday,native,nation,cno}滿足BCNF範式。
(2)教師teacher(teano,teaname,sex,degree,ino);分析teacher關係模式得函數依賴關係爲:teano->{teaname,sex,degree,ino}滿足BCNF範式。
(3)班級class(cno,cname,mno)分析class關係模式得函數依賴關係爲:cno->{cname,mno}滿足BCNF範式。
(4)專業major(mno,mname,ino);分析major關係模式得函數依賴關係爲:mno->{mname,ino}滿足BCNF範式。
(5)學院institute(ino,iname);分析institute關係模式得函數依賴關係爲:ino->{iname}滿足BCNF範式。
(6)題目title(tno,tname,requ,pop,teano);分析title關係模式得函數依賴關係爲:tno->{tname,requ,pop,teano},滿足BCNF範式。
5、數據庫物理設計與實施
爲上一階段的關係模型選取一個最適合的應用要求的物理結構,即確定存取方法和存儲結構。在實際問題中最常用的存取方法是索引,使用索引可以大大減少數據的查詢時間。而存儲結構的方式是訪問儘量在同一個磁盤上。
5.1 創建數據庫

在這裏插入圖片描述
5.2建立和管理基本表
5.2.1建立基本表
學生student(sno,sname,sex,birthday,native,nation,cno)

在這裏插入圖片描述
教師teacher表:(teano,teaname,sex,degree,ino)
在這裏插入圖片描述
班級class表:(cno,cname,mon)
在這裏插入圖片描述
專業major表:(mon,mname,ino)
在這裏插入圖片描述
學院institute表:(ino,iname)
在這裏插入圖片描述
題目title表:(tno,tname,requ,pop,teano)
在這裏插入圖片描述
管理員manager表:(mano,maname,sex,pho)
在這裏插入圖片描述
選題selecttitle表:(tno,sno,teano,wish,admission)
在這裏插入圖片描述
用戶user表:(uno,password,uname,id)
在這裏插入圖片描述
5.2.2 管理基本表
有時候應用環境和應用需求的改變,我們需要修改已經建立好的基本表的模式結構或者更新已經插入的數據。Mysql語句採用ALTER TABLE<>語句修改基本表的結構,利用DROP<>子句刪除基本表,利用UPDATE更新已經插入的數據。ALTER TABLE語句以修改基本表的名字,增加新列或者增加新的完整性約束條件,修改原有列的定義,包括修改列名和數據類型等。DEOP子句用於刪除指定的完整性約束條件。UPDATE用於把插入表的數據更新改變。
如下例子:
Eg1:把class表名改爲stu_class表名:

在這裏插入圖片描述在這裏插入圖片描述
Eg2:把class表中的cname的長度由20改爲長度爲30:

在這裏插入圖片描述
在這裏插入圖片描述
5.3 建立和管理視圖
5.3.1 建立視圖
數據庫中的視圖是常用的數據對象,它用於定義數據庫某類用戶的外模式。通過創建視圖,可以限制不同的用戶查看不同的信息,屏蔽用戶不關心的或者不因你該看到的信息。
視圖是從一個會多個基本表中導出來的表,它與基本表不同,是一個虛表,其數據不單度保存在一個基本文件中,任然保存在導出視圖的基本標文件中,任然保存在導出視圖的基本表中,數據庫系統中只保存視圖的定義,視圖一經定義,就和基本表一樣,可以關係,可以進行基本的操作如查詢、刪除等。
Eg1:爲籍貫是河南的學生建立視圖:

在這裏插入圖片描述
5.3.2 管理視圖
Eg1:將視圖中的武松的性別改成女:

在這裏插入圖片描述
Eg2:查詢視圖性別是女的姓名:

在這裏插入圖片描述
6 訪問數據庫
6.1 數據添加
class表數據如下:

在這裏插入圖片描述
institute表數據如下:
在這裏插入圖片描述
major表數據如下:
在這裏插入圖片描述
manager表數據如下:
在這裏插入圖片描述
selecttitle表數據如下:
在這裏插入圖片描述
student表數據如下:
在這裏插入圖片描述
teacher表數據如下:
在這裏插入圖片描述
title表數據如下:
在這裏插入圖片描述
user表數據如下:
在這裏插入圖片描述
6.2 數據查詢
數據查詢是數據庫的核心操作,select語句進行數據庫查詢,該語句具有靈活的使用方式和功能。
Eg1:查詢學生的基本信息及期望的指導老師:

在這裏插入圖片描述
Eg2:查詢教師的基本信息及題目:
在這裏插入圖片描述
Eg3:查詢用戶的姓名、性別、籍貫及密碼:
在這裏插入圖片描述
6.3數據跟新
Eg1:把student表中的武松性別改爲男,出生日趨爲2000-1-1,籍貫改爲山東:

在這裏插入圖片描述
更新完如下:
在這裏插入圖片描述

7 數據庫維護
數據庫維護包括許多內容,包括用戶權限的設置、數據庫完整性維護、數據庫的備份、表的備份、日誌備份等。
7.1備份數據庫
1)完整備份:備份整個數據庫的所有內容,包括事務日誌。該備份類型需要比較大的存儲空間來存儲備份文件,備份時間也比較長,在還原數據的時候也需要一個備份文件。
2)差異備份:它是完整備份的補充,差異備份只備份上次完整備份後更改的數據。由於差異備份數據量小、備份的速度也快,所以數據庫管理員經常採用的是一次完整性備份之後,進行多次差異備份。
3)備份截圖:

在這裏插入圖片描述

7.2創建觸發器
觸發器是數據庫中一種確保數據完整性的方法,同時也是DBMS執行特殊類型的存儲過程,觸發器都定義在基本表上,每個基本操作可以爲插入、刪除、修改3種操作定義觸發器,即insert觸發器、update觸發器、delete觸發器,對於這些基本的操作保證不會破壞數據的完整性。
爲institute創建觸發器stu_on_institute,保存的表爲stu_institute:
1)創建觸發器之前爲空:

在這裏插入圖片描述

3)在institute新插入的數據就會自動觸發保存到stu_institute中:
在這裏插入圖片描述
附錄:創建基本表命令:

CREATE TABLE `manager`  (
  `mno` char(4) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '管理員編號',
  `mname` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '姓名',
  `sex` char(2) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '性別',
  `pho` varchar(13) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '聯繫方式',
  PRIMARY KEY (`mno`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;
mysql> CREATE TABLE `class`  (
  `cno` char(8) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '班級編號',
  `cname` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '班級名稱',
  `mno` char(5) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '專業編號',
  PRIMARY KEY (`cno`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;
CREATE TABLE `institute`  (
  `ino` char(3) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '學院編號',
  `iname` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '學院名稱',
  PRIMARY KEY (`ino`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;
CREATE TABLE `selecttitle`  (
  `tno` char(9) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '題目編號',
  `sno` char(12) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '學號',
  `teano` char(6) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '教師編號',
  `wish` char(4) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '指導老師',
  `admission` char(1) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '錄取情況',
  PRIMARY KEY (`tno`, `sno`, `teano`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;
 CREATE TABLE `major`  (
  `mno` char(5) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '專業編號',
  `mname` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '專業名稱',
  `ino` varchar(3) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '學院編號',
  PRIMARY KEY (`mno`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;
CREATE TABLE `student`  (
  `sno` char(12) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '學號',
  `sname` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '姓名',
  `sex` char(2) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '性別',
  `birthday` date NULL DEFAULT NULL COMMENT '出生日期',
  `native` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '籍貫',
  `nation` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '民族',
  `cno` char(8) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '班級編號',
  PRIMARY KEY (`sno`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;
CREATE TABLE `title`  (
  `tno` char(9) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '題目編號',
  `tname` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '題目名稱',
  `requ` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '要求',
  `pop` int(11) NULL DEFAULT NULL COMMENT '人數',
  `teano` varchar(6) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '教師編號',
  PRIMARY KEY (`tno`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;
CREATE TABLE `user`  (
  `uno` varchar(12) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '賬號',
  `password` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '密碼',
  `uname` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '用戶名稱',
  `id` varchar(3) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '身份:學生、教師、管理員',
  PRIMARY KEY (`uno`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章