數據庫課程設計之學生管理系統_第1頁
數據庫課程設計之學生管理系統_第2頁
數據庫課程設計之學生管理系統_第3頁
數據庫課程設計之學生管理系統_第4頁
數據庫課程設計之學生管理系統_第5頁
已閱讀5頁,還剩13頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

學生成績管理第1章設計目的與要求1.1設計目的本實踐課的主要目的是:掌握運用管理系統及數據庫原理知識進行系統分析和設計的方法;掌握關系數據庫的設計方法;掌握SQLServer2000技術應用;掌握簡單的數據庫應用程序編寫方法;理解C/S模式結構。1.2設計環境Windowsxp,VisualBasic6.0,SQLServer200,0SQLServer2000桌面引擎1.4設計內容及要求一、內容要求根據管理信息系統及數據庫設計原理,按照數據庫系統設計的步驟和規范,完成各階段的設計內容。需求分析具體實際,數據流圖、數據字典、關系模型要正確規范在sqlserver2000上實現設計的數據庫模型。對應用程序進行概要設計。二、要求設計過程中,要嚴格遵守課程設計的時間安排,聽從指導教師的指導。正確地完成上述內容,規范完整地撰寫出課程設計報告。第2章設計內容2.1數據庫設計1.1需求分析1.學生管理系統總共包括四個表學生信息表student、教師信息表teacher、成績表score和課程表course。Student表:在建表時,除了添加學號、姓名、班級必要字段,還添加一些其他的字段,比如:出生日期、性別、郵箱地址和類型等。Teacher表:在建表時,除了添加教師編號,教師姓名,部門必要字段,還可以添加一些其他的字段,比如:出生日期、性別、和電話等。Score表:此表應該包括學生學號、課程號和成績等。Course表:應包括課程號,對應的課程名稱和教此課程的教師編號。(1)、建立一個數據庫,然后在此數據庫中建立這四個數據表。(2)、向表中添加記錄。(3)、用一些查詢語句來查看表中的特定記錄。(4)、向表中添加一些字段。如:向teacher表中添加字段tel(5)、創建一個自定義數據類型,并修改student表中的某個字段為此數據類型。(6)、創建幾個視圖

查詢某個班級的學生信息查看每門課程的平均成績查看選修計算機課程的學生信息查看所有男教師和所有男學生的信息2.1.2概念設計四個表的E-R實體模型圖分析:教師學生NM教師學生NM在教學管理中,學校開設若干門學科,一個教師可以教授其中的一門或多門課程,每個學生也需要學習其中的幾門課程,因此,教學管理中涉及的對象(實體型)有學生、教師和課程。用E-R圖描述它們之間的聯系。如圖所示。其中,學生與課程是多對多的聯系,而教師與課程的聯系則是一對多。這四個表的總的實體-關系圖學號班級學號班級設計數據表在此學生成績信息中有4個表需要建立學生信息表(student)包括學號(sno)、姓名(sname)、性別(Ssex)、班級(class)、出生日期(sbirth)教師信息表(teacher)包括教師編號(tno)、姓名(tname)、性別(Tsex)、部門(depart)、職稱(prof)、出生日期(tbirth)成績表(score)包括學號(sno)、課程號(cno)、成績(degree)課程信息表(course)包括課程號(cno)、課程名稱(cname)、教師編號(tno)2.1.3邏輯設計邏輯結構設計階段的任務是將概念結構設計階段所得到的概念模型轉換為具體DBMS所能支持的數據模型(即邏輯結構),并對其進行優化。邏輯結構設計一般分為三步進行:從E-R圖向關系模式轉化數據庫的邏輯設計主要是將概念模型轉換成一般的關系模式,也就是將E-R圖中的實體、實體的屬性和實體之間的聯系轉化為關系模式。一個實體類型轉換為一個關系模型,將每種實體類型轉換為一個關系,實體的屬性就是關系的屬性,實體的關鍵字就是關系的關鍵字。將“學生”實體轉換為一個關系模型,其中,帶下劃線的屬性為主鍵,該主屬性為關系模型外鍵。主鍵是一個表通過一個列或多個列組合的數據來唯一標識表中的每一行,這個列或列組合就被稱為主鍵,煮件可以來強制實體完整性。主鍵約束有以下特征和作用:(1)主鍵約束通過不允許一個或多個列輸入重復的值來保證一個表中所有行的惟一性,使所有浪都是可以區分的。(2)一個表張只能有一個主鍵,且組成主鍵的列的數據都不能取空值。(3)當定義主鍵約束時,SQLserver在主鍵列上建立惟一性索引,這個索引在煮件被查詢時可以加快查詢的速度。在teacher表中,以教師編號tno為主鍵,對其進行惟一性約束。在Course表中,以課程號為主鍵,對其進行惟一性約束。2.1.4物理設計存儲結構存儲結構是建立一種由邏輯結構到存儲空間的映射。存儲結構是把一組結點存放在按地址相鄰的存儲單元里,結點間的邏輯關系用存儲單元的自然順序關系來表達的,即用一塊存儲區域存儲線性數據結構,為使用整數編碼訪問數據結點提供了便利。索引的創建為schoolgrade表創建一個以grade_id為索引的關鍵字的唯一聚簇索引1)展開數據庫中的表右鍵學生表,單擊所有任務彈出的索引管理。2)在窗體點新建索引名稱為grade_name,點擊復選框“聚簇索引”、“惟一值”。事務日志文件備份及存放SQLServer創建數據庫的時候,會同時創建事物日志文件,事物日志存儲在一個單獨的日志文件上。在修改寫入數據庫之前,事物日志會自動地記錄對數據庫對象所做的所有修改,事物日志有助于防止數據庫損壞。日志文件與數據文件要分開放在不同的磁盤上,這樣事物日志就可以單獨的備份,事務日志不會搶占數據庫的空間,可以很容易的監測事務日志的空間。存取方法:數據庫系統是多用戶共享的系統,對同一個關系要建立多條存取路徑才能滿足多用戶的多種應用要求。物理設計的任務之一就是要確定選擇哪些存取方法,即建立哪些存取路徑。存取方法是快速存取數據庫中數據的技術。數據庫管理系統一般都提供多種存取方祛。常用的存取方法有二類。第一類是索引方法,第二類是聚簇(Cluster)方法。索引方法是數據庫中經典的存取方法,使用最普遍。索引法是為了加速對表中的數據行的檢索而創建的一種分散的存儲結構。是針對一個表而建立的,它能夠以一列或多列的值為關鍵字,迅速查找/存取表中行數據加快了數據檢索。整個系統需要調用學生表、成績表等,所以學生表屬性“學號”,成績表表中的屬性“學號”,將經常出現在查詢條件中,可以考慮在上面建立聚簇索引以提高查詢效率。數據庫模式定義1、Student表:snoChar(8)不允許為空snameChar(10)不允許為空SsexChar(2)不允許為空sbirthDatetime(8)允許為空classChar(4)不允許為空typeChar(7)允許為空score表結構:snoChar(8)不允許為空cnoChar(5)不允許為空degreeFloat(8)不允許為空Course表:以課程號為主鍵,通過這個主鍵來對這個表進行唯一性約束。cno(主鍵)Char(5)不允許為空cnamevarchar(10)不允許為空tnochar(3)不允許為空Teacher表結構:Tno(主鍵)Char(5)不允許為空tnamevarchar(10)不允許為空departVarchar(8)不允許為空tsexChar(2)不允許為空tbirthdatatime允許為空profChar(6)允許為空六、其他對象的說明:(1)、外鍵約束(primarykey):外鍵也是由表中的一個列或多個列組成的,它是和在相關表中事先定義的具有惟一性的列一起使用的,該列一個是所在表的主鍵。外鍵約束用來建立和強制兩個表之間的關聯,即一個表的一個列或列組合與另一個表的具有惟一性的列或列組合相關,這個列或列組合就成為第一個表中的外鍵外鍵約束限制將破壞這種關聯的操作。作為外鍵的列的值可以是空值,或是它所引用的表中已經存在的值。在score表中,其學號sno和課程號cno都是此表的外鍵約束,因為此表中學號sno要受學生信息表中的學號的約束,student表中沒有的學號,score表中也應該沒有,如果向score表添加數據時違反的此規則,則添加不成功。課程號cno也同樣,受到course表中課程號cno的約束.。(2)、空值(null):空值意味著數據尚未如,它與0或長度為零的字符串(“”)的含義不同。如果表中的某一列必須有值才能使記錄有意義,那么可以指明該列不允許取空值。在教師信息表teacher中其出生日期列tbirth和職稱prof允許為空,但并不表示該教師沒有生日,沒有職稱,而是目前還不知道而已。在學生信息表student中其出生日期sbirth也可為空,也是同樣的道理。(3)、check約束:檢查約束可以用來限制列上可以接受的數據值,檢查約束使用邏輯表達式來限制列上可以接受的數據。可以在一個列上使用多個檢查約束,也可以在表上建立一個可以在多個列上使用的檢查約束。比如:在學生信息表中,郵件地址semail的格式必須是%@%格式的。(4)、惟一性約束:使用惟一性約束的作用是保證在不是主鍵的指定惟一性的列上不會出現重復的數據。定義了惟一性約束的列上的數據可以為空值,一個表上可以定義多個惟一性6.數據庫實施階段1、創建數據庫:createdatabasesshon(name=ssh,老大\sql\ssh.mdf',size=1)logon(name=ssh1,老大\sql\ssh1.ldf',size=1)2、創建數據表(1)、student表usesshcreatetablestudent(snochar(8)primarykey,snamechar(10)notnull,Ssexchar(2)notnull,Sbirthdatetime,classchar(4)notnullsemailvarchar(20))(2)、score表createtablescore(snochar(8)notnull,cnochar(4)notnull,degreefloatnotnull)(3)、course表createtablecourse(cnochar(5)notnullprimarykey,cnamevarchar(10)notnull,tnochar(3)notnull)(4)、teacher表createtableteacher(tnochar(5)notnullprimarykey,tnamevarchar(10)notnull,departvarchar(8)notnull,Tsexchar(2)notnull,Tbirthdatetime,profchar(6))4向表中添加記錄1)、向學生信息表中添加insertintostudentvalues('101','生活','女','1983-09-18','11')insertintostudentvalues('102','insertintostudentvalues('103','insertintostudentvalues('104','insertintostudentvalues('105','insertintostudentvalues('106','insertintostudentvalues('107','insertintostudentvalues('108','insertintostudentvalues('109','insertintostudentvalues('110','風塵','男','1984-01-01','11')離開','男','1984-01-01','11')流浪','女','1984-11-11','11')生命','男','1984-12-05','13')無悔','女','1984-11-01','13')歷史','女','1984-10-01','12')風塵','男','1985-9-08','11')活著','男','1985-12-12','12')傻瓜','女','1985-08-28','12')查看記錄Select*fromstudent(2)、向成績表中添加insertintoscorevalues('101','01',88)insertintoscorevalues('101','02',85)insertintoscorevalues('102','02',80)insertintoscorevalues('101','03',88)insertintoscorevalues('102','02',85)insertintoscorevalues('102','03',80)insertintoscorevalues('103','01',83)insertintoscorevalues('103','02',85)insertintoscorevalues('103','03',90)insertintoscorevalues('104','01',60)查看記錄(3)、向教師表中添加數據insertintocoursevalues('01','計算機','11')insertintocoursevalues('02','網絡管理','12')insertintocoursevalues('03','專業英語','13')insertintocoursevalues('04','軟件工程','14')查看記錄4)、向課程表中添加數據insertintoteachervalues('11','無意','計算機系','男','1973-4-5','教授')insertintoteachervalues('12','生活','計算機系','女','1975-12-1','副教授')insertintoteachervalues('13','沒有','管理系','女','1975-3-3','副教授')insertintoteachervalues('14','離開','英語系','男','1973-5-5','教授')查看記錄Select*fromteacher5、一些查詢語句

、查詢成績大于學號為101的學生的課程為02的成績的所有列select*fromscorewheredegree>(selectdegreefromscorewheresno='101'andcno='02')、查詢課程號01大于課程號02的最大值、并以分數降序排序的成績表中所有列select*o='01'ands.degree>=(selectmax(degree)o='02')orderbydegreedescgoselectmax(degree)as"02max"fromscorewherecno='02'、查詢性別為男的學號,姓名,班級,課程號和成績的學生selectstudent.sno,student.sname,student.class,o,score.degreefromstudent,scorewherestudent.sno=score.snoandssex='男'4)、查詢成績在60到80之間的所有列select*fromscorewheredegreebetween60and80

(5)、查詢score表中至少有5名學生選修的并以0開頭的課程的平均分selectavg(degree)as"平均分",cnofromscorewherecnolike'0%'groupbycnohavingcount(*)>=5創建視圖(1)、創建所有11班的學生信息的視圖createviewstudent11asselect*fromstudentwhereclass='11查看視圖中的記錄select*fromstudent11(2)、創建視圖course_degree,其中的內容是選修計算機課程的學生信息,包括sno,sname,cno,cname,degree),創建時加上withcheckoptioncreateviewcourse_degree(sno,sname,cno,cname,degree)asselectscore.sno,sname,o,cname,degreefrom

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論