當前位置:首頁 » 編程語言 » sql連接java課程設計報告
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sql連接java課程設計報告

發布時間: 2023-03-16 09:23:11

⑴ java如何實現sql連接和查詢的代碼

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;

public class DBCon {
//資料庫驅動對象
public static final String DRIVER="oracle.jdbc.driver.OracleDriver";
//資料庫連接地址(資料庫名)
public static final String URL="jdbc:oracle:thin:@localhost:1521:orcl";
//登陸名
public static final String USER="FM";
//登陸密碼
public static final String PWD="FM";
//創建資料庫連接對象
private Connection con=null;
//創建資料庫預編譯對象
private PreparedStatement ps=null;
//創建結果集
private ResultSet rs=null;
//創建數據源對象
public static DataSource source=null;

// //靜態代碼塊
// static{
//
// //初始化配置文件context
// try {
// Context context=new InitialContext();
// source=(DataSource)context.lookup("java:comp/env/jdbc/webmessage");
// } catch (Exception e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
//
//
// }

/**
* 獲取資料庫連接
*/
public Connection getCon(){
try {
Class.forName(DRIVER);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
con=DriverManager.getConnection(URL,USER,PWD);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

return con;
}
// /**
// * 獲取資料庫連接
// */
// public Connection getCon(){
//
// try {
// con=source.getConnection();
// } catch (SQLException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
//
// return con;
// }

/**
* 關閉所有資源
*/
public void closeAll(){
if(rs!=null)
try {
rs.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if(ps!=null)
try {
ps.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if(con!=null)
try {
con.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
/**
* @param sql資料庫更新(增、刪、改) 語句
* @param pras參數列表(可傳,可不傳,不傳為NULL,以數組形式存在)
* @return 返回受影響都行數
*/
public int update(String sql,String... pras){
int resu=0;
con=getCon();
try {
ps=con.prepareStatement(sql);
for(int i=0;i<pras.length;i++){
ps.setString(i+1,pras[i]);
}
resu=ps.executeUpdate();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally{
closeAll();
}
return resu;
}

/**
* @param sql資料庫查詢語句
* @param pras參數列表(可傳,可不傳,不傳為NULL,以數組形式存在)
* @return 返回結果集
*/
public ResultSet query(String sql,String... pras){
con=getCon();
try {
ps=con.prepareStatement(sql);

if(pras!=null)
for(int i=0;i<pras.length;i++){
ps.setString(i+1, pras[i]);
}
rs=ps.executeQuery();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return rs;
}

}

⑵ sql資料庫課程設計報告

網路即時通信系統是為用戶開發研製的,用戶是系統的最終使用者和評價者,所以在網路通信系統的開發設計的過程中,我們樹立了從用戶的尋求出發,面向用戶,一切為了用戶的觀念,在分析與設計系統的前期,為了保證系統的功能的完善多次尋求周圍同學和老師的意見,了解他們的要求,依照功能完善,界面美觀,操作簡單的原則進行設計 。
嚴格按階段進行
系統的開發設計是一項較大的工程,所以應該將整個系統的開發設計過程劃分為若干階段,相應的階段又要分為若干個不同的步驟,每個階段和步驟都要有明確的工作任務和目標。這種有序的組織安排,條例清楚、層次分明,便於計劃的制定和控制,並且為後續工作的進行奠定了堅實的基礎,提高了工作效率和質量。
採用系統的觀點處理
在系統分析階段,在對原系統進行全面調查和分析的基礎上,構造系統的最佳邏輯模型,使用戶對將來完整系統的輪廓有個初步的了解和認識,以便及時和用戶進行交流和探討,不斷提高系統的完善性。在此基礎上進行系統的物理實現和設計,切實完成邏輯模型的具體功能。邏輯設計和物理實現二者是相輔相成、密不可分的,這樣使系統的設計更加穩妥合理。
整個系統的設計主要採用快速原形法
快速原形法是信息系統設計的一個重要方法。它是根據用戶提出的需求,由用戶和開發者共同確定系統的基本要求和主要功能,並在一個較短的時間內建立一個實驗性的、簡單的信息系統模型,通過用戶不斷提出的意見和建議,對模型進行不斷的修改和完善,直到用戶比較滿意為止,以便形成一個相對穩定、較為理想的管理信息系統。該方法的主要優點。
1.脈絡清楚,所有問題都圍繞一個模型展開,使彼此之間聯系緊密。
2.有助於發現用戶需求,通過對原形和用戶接觸,能夠啟發開發人員去挖掘問題,從而不斷的修正、完善,最終得到一個理想的系統。
3.系統開發效率高,此方法的開發周期短、使用靈活、容易修改,這對於管理體制不夠穩定的系統更加適合。
4.系統的可擴展性好,由於此方法是在原型應用中不斷發展完善和修改的,所以有較強的擴展性。

在進行代碼設計時,遵循了以下原則。
唯一性:在本系統中,每一個代碼都和系統中的每一個對象唯一確定。
標准性:主要體現在對程序文件名命名和對數據文件命名的標准化上,遵循簡單扼要,方便適用的原則。一目瞭然,無重復現象。為了系統維護人員便於進行系統維護,使用了統一的標准。
合理性:系統中代碼設計與編碼對象的分類相適應,以使代碼對編碼對象的分類據有標志作用。
簡單性:在設計過程中採用Code-Behind代碼分離,使資料庫操作代碼和前端調用代碼分離,頁面修改容易。
適應性:在代碼設計過程中,代碼反映了編碼對象的特點,便於識別和記憶,使系統維護人員容易了解和掌握,便於進行維護工作。
系統總體功能結構
網路通信系統包含以下主要功能。
用戶注冊;用戶登錄;
查找好友;查看好友資料;
添加好友;
刪除好友;
發送消息;
發送文件.
資料庫表主要用來存放用戶的注冊信息和用戶的好友資料,可利用兩張資料庫表來 存放用戶信息和用戶好友的資料。包括用戶的號碼,昵稱,密碼,在線與否,ip地址,資料,頭像號,性別,E-mail和籍貫等信息。其中,用戶昵稱和密碼是必需的欄位;在線與否是由系統自動設置的;其餘的信息是可選的欄位。
課題整體以JAVA為平台,採用Eclipse開發工具,並使用SQL Server 2000管理資料庫數據開發而成的基於Socket的集中式網路通信系統,系統採用客戶機/伺服器(C/S)的模式設計,是一個三層C/S結構,資料庫伺服器、應用程序伺服器端 、應用程序客戶端。系統採用C/S結構,可以將任務合理分配到客戶機端和伺服器端 ,從而降低了系統的通信開銷。
客戶層。
客戶層是應用程序的用戶介面部分,它擔負著用戶與應用間的對話功能,用於檢查用戶的輸入數據,顯示應用的輸出數據,為了直觀的進行操作,客戶層需要使用圖形用戶介面,若聊天用戶變更,系統只需改寫顯示控制和數據檢查程序即可,而不會影響其他兩層。
服務層。(功能層)
服務層相當於應用的本體,它是將具體的業務處理邏輯編入程序中。在應用設計中,必須避免在表示層和功能層之間進行多次的數據交換,這就需要盡可能進行一次性的業務處理達到優化整體設計的目的。
數據層
數據層是DBMS,本系統使用了Microsoft 公司的SQL Ssever2000資料庫伺服器來管理數據。SQL Ssever2000能迅速的執行大量數據的更新和檢索,因此,從功能層傳送到數
據層的要求一般都使用SQL語言。

⑶ java與sql連接

1、創建一個 PreparedStatement 對象來將參數化的 SQL 語句發送到資料庫。
2、 patat.setInt(1,id) 將第一個參數id設置為java給定int 值。
3、在PreparedStatement 對象中執行 SQL 查詢,並返回該查詢生成的 ResultSet 對象。
4、ResultSet 游標最初位於第一行之前;第一次調用 next 方法使第一行成為當前行;第二次調用使第二行成為當前行,依此類推
5、以 Java 編程語言中 String 的形式獲取此 ResultSet 對象的當前行中指定列的值

⑷ JAVA連接SQL資料庫

本文將介紹使用java連接sqlserver資料庫


工具/材料

myeclipse 、 SqlServer資料庫


方法:

1、要向連接資料庫,首先應該保證資料庫服務打開

2、資料庫服務打開之後就可以在環境中編寫連接代碼了。如圖:


連接資料庫就是這兩個步驟:1)載入驅動、2)創建連接。

注意在導包是導入的java.sql下的。

接下來直接運行一下就可以測試是否連接成功了

⑸ 《Java程序設計》和《SQL Server資料庫管理與應用》聯合課程設計

開發的話,sql會建表,增刪改查就夠用了,其餘的是DBA乾的事

⑹ 小型超市管理系統課程設計,要JAVA+SQL的,不用太復雜,分好商量

可以依靠Bai Hi示意我們
有機會可能完成你所面臨的任務
具體的要求也可能示意我們

ES:\\

⑺ 用Java做一個簡單的界面,連接到資料庫(SQL Server),大家有沒有具體的例子,跪求解答

你可以做一個下拉框,選項有教師和學生,不過這個的話,一般是通過許可權來控制的,這樣教師和學生登錄之後,看到的菜單就不一樣了。
JDBC連接資料庫
•創建一個以JDBC連接資料庫的程序,包含7個步驟:
1、載入JDBC驅動程序:
在連接資料庫之前,首先要載入想要連接的資料庫的驅動到JVM(Java虛擬機),
這通過java.lang.Class類的靜態方法forName(String className)實現。
例如:
try{
//載入MySql的驅動類
Class.forName("com.mysql.jdbc.Driver") ;
}catch(ClassNotFoundException e){
System.out.println("找不到驅動程序類 ,載入驅動失敗!");
e.printStackTrace() ;
}
成功載入後,會將Driver類的實例注冊到DriverManager類中。
2、提供JDBC連接的URL
•連接URL定義了連接資料庫時的協議、子協議、數據源標識。
•書寫形式:協議:子協議:數據源標識
協議:在JDBC中總是以jdbc開始
子協議:是橋連接的驅動程序或是資料庫管理系統名稱。
數據源標識:標記找到資料庫來源的地址與連接埠。
例如:(MySql的連接URL)
jdbc:mysql:
//localhost:3306/test?useUnicode=true&characterEncoding=gbk ;
useUnicode=true:表示使用Unicode字元集。如果characterEncoding設置為
gb2312或GBK,本參數必須設置為true 。characterEncoding=gbk:字元編碼方式。
3、創建資料庫的連接
•要連接資料庫,需要向java.sql.DriverManager請求並獲得Connection對象,
該對象就代表一個資料庫的連接。
•使用DriverManager的getConnectin(String url , String username ,
String password )方法傳入指定的欲連接的資料庫的路徑、資料庫的用戶名和
密碼來獲得。
例如:
//連接MySql資料庫,用戶名和密碼都是root
String url = "jdbc:mysql://localhost:3306/test" ;
String username = "root" ;
String password = "root" ;
try{
Connection con =
DriverManager.getConnection(url , username , password ) ;
}catch(SQLException se){
System.out.println("資料庫連接失敗!");
se.printStackTrace() ;
}
4、創建一個Statement
•要執行SQL語句,必須獲得java.sql.Statement實例,Statement實例分為以下3
種類型:
1、執行靜態SQL語句。通常通過Statement實例實現。
2、執行動態SQL語句。通常通過PreparedStatement實例實現。
3、執行資料庫存儲過程。通常通過CallableStatement實例實現。
具體的實現方式:
Statement stmt = con.createStatement() ;
PreparedStatement pstmt = con.prepareStatement(sql) ;
CallableStatement cstmt =
con.prepareCall("{CALL demoSp(? , ?)}") ;
5、執行SQL語句
Statement介面提供了三種執行SQL語句的方法:executeQuery 、executeUpdate
和execute
1、ResultSet executeQuery(String sqlString):執行查詢資料庫的SQL語句
,返回一個結果集(ResultSet)對象。
2、int executeUpdate(String sqlString):用於執行INSERT、UPDATE或
DELETE語句以及SQL DDL語句,如:CREATE TABLE和DROP TABLE等
3、execute(sqlString):用於執行返回多個結果集、多個更新計數或二者組合的
語句。
具體實現的代碼:
ResultSet rs = stmt.executeQuery("SELECT * FROM ...") ; 法長瘁短誆的搭痊但花
int rows = stmt.executeUpdate("INSERT INTO ...") ;
boolean flag = stmt.execute(String sql) ;
6、處理結果
兩種情況:
1、執行更新返回的是本次操作影響到的記錄數。
2、執行查詢返回的結果是一個ResultSet對象。
• ResultSet包含符合SQL語句中條件的所有行,並且它通過一套get方法提供了對這些
行中數據的訪問
• 使用結果集(ResultSet)對象的訪問方法獲取數據:
while(rs.next()){
String name = rs.getString("name") ;
String pass = rs.getString(1) ; // 此方法比較高效
}
(列是從左到右編號的,並且從列1開始)
7、關閉JDBC對象
操作完成以後要把所有使用的JDBC對象全都關閉,以釋放JDBC資源,關閉順序和聲
明順序相反:
1、關閉記錄集
2、關閉聲明
3、關閉連接對象
if(rs != null){ // 關閉記錄集
try{
rs.close() ;
}catch(SQLException e){
e.printStackTrace() ;
}
}
if(stmt != null){ // 關閉聲明
try{
stmt.close() ;
}catch(SQLException e){
e.printStackTrace() ;
}
}
if(conn != null){ // 關閉連接對象
try{
conn.close() ;
}catch(SQLException e){
e.printStackTrace() ;
}
}

⑻ jsp+sql基於JAVA的圖書管理系統設計(開題報告+論文+程序)

ASP.NET網路應用開發例學與實踐
選用C#作為編程語言,詳細介紹了開發ASP.NET網路應用程序所需的基本衡鎮知識和開發方法。本書重開發實踐訓練,引入典型項目案例咐滲粗,培養工程實踐能力,使沒有開發經驗喊派或者僅有少量程序設計基礎的讀者迅速掌握使用ASP.NET開發多層結構的中小型企業信息系統的能力。

⑼ java 怎麼連接sql資料庫 幫忙步驟講解以及代碼參考

看了一下你的代碼:
1.你用的oracle資料庫,裡面不應該用char型,應該用varchar2型
2.你的sql語句錯誤,
insert
into
基本表
(職純顫雀工編號,姓名,性別,職稱,職務,部門,出生日期,籍貫,身份證,合同期限,參加工作時間)
values
(?,?,?,?,?,?,?,?,?,?,?)
是values不是value
然後其他我還沒看出什麼錯誤
你改一下看可以不,還是不行你把錯誤代碼給我看一下洞孝。做早
然後兩點建議:連接資料庫的類分開寫,然後資料庫裡面最好不要用中文

⑽ 求一份SQL server資料庫課程設計報告

2.2需求分析
(1)需求分析的任務
需求分析的任務是通過詳細調查現實世界要處理的對象(組織、部門、企業等),充分了解原系統(手工系統或計算機系統)工作概況,明確用戶的各種需求,用通俗的話來講,就是分析了解用戶關心什麼,用戶需要什麼樣的結果,然後在此基礎上分析和設計新系統的資料庫。
需求分析的重點是調查、收集與分析用戶在數據管理中的信息要求、處理要求、安全性與完整性要求。
 信息要求
是指用戶需要從資料庫中獲得信息的內容與性質。由用戶的信息要求可以導出數據要求,即在資料庫中需要存儲哪些數據。
 處理要求
是指用戶要求完成什麼處理功能,對處理的響應時間有什麼要求,處理方式是批處理還是聯機處理。
 安全性與完整性要求
一是指用戶對系統和數據有什麼安全性要求,如不同級別的用戶具有什麼操作許可權和使用哪些數據;二是對數據的輸入和存儲的什麼要求,如數據的長度和范圍、數據的有效性、一致性和唯一性等。
確定用戶的最終需求其實是一件很困難的事,這是因為一方面用戶缺少計算機知識,開始時無法確定計算機究竟能為自己做什麼,不能做什麼,因此無法一下子准確地表達自己的需求,他們所提出的需求往往不斷地變化。另一方面設計人員缺少用戶的專業知識,不易理解用戶的真正需求,甚至誤解用戶的需求。因此設計人員必須與用戶不斷深入地進行溝通和交流,才能逐步得以確定用戶的實際需求。
(2)需求分析的基本步驟
1.調查與初步分析用戶的需求,確定系統的功能邊界
⑴首先調查組織機構情況
⑵然後調查各部門的業務活動情況
⑶協助用戶明確對新系統的各種要求
⑷確定新系統的結構和功能邊界,確定哪些功能由計算機完成或將來由計算機完成,哪些活動由人工完成。

常用的調查方法有:
⑴跟班作業
⑵開調查會
⑶請專人介紹
⑷詢問
⑸問卷調查
⑹查閱記錄
2.生成數據字典
1)數據項條目:數據項是不可再分的數據單位,它直接反映事物的某一特徵。
2)數據結構條目:反映了數據之間的組合關系。
3)數據流條目:數據流是數據結構在系統內傳輸的路徑。
4)數據文件條目:數據文件是數據項停留或保存的地方,也是數據流的來源和去向之一。
5)處理過程條目。
(3) 案例分析:教學管理系統資料庫的需求分析
用戶的需求具體體現在各種信息的提供、保存、更新和查詢上,這就要求資料庫的結構能充分滿足各種信息的輸出和輸入。需求分析階段主要是收集基本數據,確定數據結構及數據處理的流程,組成一份詳盡的數據字典,以便為後面的概念設計和邏輯設計打下基礎。

2.3概念結構設計
概念結構設計是對收集來的信息和數據進行分析整理,確定實體、屬性及聯系,形成獨立於計算機的反映用戶觀點的概念模型。概念設計的重點在於信息結構的設計,它是整個資料庫系統設計的關鍵。
(1)概念結構設計的目標和任務
概念結構設計的目標是產生反映系統信息需求的資料庫概念結構,即概念模式。概念結構是獨立於DBMS和使用的硬體環境的。在這一階段,設計人員要從用戶的角度看待數據以及數據處理的要求和約束,產生一個反映用戶觀點的概念模式,然後再把概念模式轉換為邏輯模式。
概念模型的表示方法很多,其中最著名、最常用的表示方法為實體-聯系方法,這種方法也稱為E-R模型方法,該方法採用E-R圖描述概念模型。
E-R圖提供了表示實體、屬性和聯系的方法,它由以下三個組件構成:
 實體---用矩形表示,矩形框內寫明實體名。
 屬性---用橢圓形表示,並用無向邊將其與相應的實體連接起來。
 聯系---用菱形表示,菱形框內寫明聯系名,並用無向邊分別與有關實體連接起來,同時在無向邊旁標上聯系的類型(1:1、1:n或m:n)。
例如教學管理系統中的學生實體與課程實體的E-R圖如下圖表示:

(2)概念結構設計的過程
●數據抽象
概念結構是對現實世界的一種抽象,所謂抽象就是對實際的人、事、物和概念進行加工處理,抽取所關心的共同特性,用各種概念精確的加以描述,組成某種模型。
在需求分析中,已初步得到了有關各類實體、實體間的聯系以及描述它們性質的數據元素,統稱數據對象。
在這一階段中,首先要從以上數據對象中找出:系統有哪些實體?每個實體有哪些屬性?哪些實體間存在聯系?每一種聯系有哪些屬性?然後就可以做出系統的局部E-R模型和全局E-R模型。
● 局部E-R模型設計
局部E-R模型設計是從數據流圖出發確定實體和屬性,並根據數據流圖中表示的對數據的處理、確定實體之間的聯系。
設計局部E-R圖的步驟是:
1.確定實體類型和屬性
實體和屬性之間沒有嚴格的區別界限,但對於屬性來講,可以用下面的兩條准則作為依據:
1)作為屬性必須是不可再分的數據項,也就是屬性中不能再包含其他的屬性。
2)屬性不能與其他實體之間具有聯系。

2.確定實體間的聯系
依據需求分析結果,考察任意兩個實體類型之間是否存在聯系,若有,則確定其類型(一對一,一對多或多對多)。
3.畫出局部E-R圖
確定了實體及實體間的聯系後,可用E-R圖描述出來。形成局部E-R圖之後,還必須返回去徵求用戶意見,使之如實地反映現實世界,同時還要進一步規范化,以求改進和完善。每個局部E-R圖必須滿足:
(1)對用戶需求是完整的。
(2)所有實體、屬性、聯系都有惟一的名字。
(3)不允許有異名同義、同名異義的現象。
● 全局E-R模型的設計
各個局部E-R模型建立好後,還需要對它們進行合並,集成為一個整體的數據概念結構,即總E-R圖。在合並全局E-R模型時,應注意檢查和消除屬性、命名的沖突及數據冗餘。
(3)案例分析:教學管理系統資料庫的概念結構設計
通過上面的需求分析,就可以進行資料庫的概念結構設計,先對現實當中的人、事、物和概念進行抽象的加工處理,抽取所關心的共同特性,用各種概念進行描述,從中找出能夠滿足用戶需求的各種實體,以及它們之間的關系,並用實體-聯系圖表示出來(即畫出E-R圖),為後面的邏輯結構設計打下基礎。
1、確定實體及其屬性
經過對人工進行的教學管理系統的業務調查,得知系統主要涉及以下幾個實體:
● 學生實體:屬性主要包括班級名稱、學號、姓名、性別、出生日期、民族、政治面貌、來源地、入學成績、學生類別、電話、備注等。
● 教師實體:屬性主要包括教師號、教師姓名、性別、出生日期、所在系、職稱
● 班級實體:屬性主要包括系部名稱、班級號、班級名稱、班主任、學生人數、備注等。
● 系部實體:屬性主要包括系號、系部名稱、班級數等。
● 課程實體:屬性主要包括課程號、課程名、考核方式、學分、學時數等。

2、確定實體之間的聯系
2.4 邏輯結構設計
(1)邏輯結構設計的目標和任務
邏輯結構設計的目標就是把概念結構設計階段設計好的E-R圖轉換為特定的DBMS所支持的數據模型(即層次、網狀、關系模型之一),並對其進行優化。
概念模型向邏輯模型的轉換過程分為3步進行:
(1)把概念模型轉換為一般的數據模型。
(2)將一般的數據模型轉換成特定的DBMS所支持的數據模型。
(3)通過優化方法將其轉化為優化的數據模型。
(2) 概念模型轉換為一般的關系模型
1.實體的轉換規則
將E-R圖中的每一個常規實體轉換為一個關系,實體的屬性就是關系的屬性,實體的碼就是關系的碼。
2.實體間聯系的轉換規則
1)一個1:1聯系可以轉換為各自獨立的關系模式,也可以與任意一端所對應的關系模式合並。
2)一個1 : n聯系可以轉換為各自獨立的關系模式。
3)一個m : n聯系轉換為一個關系模式。轉換的方法為:與該聯系相連的各實體的碼以及聯系本身的屬性均轉換為關系的屬性,新關系的碼為兩個相連實體碼的組合
(3) 案例分析:教學管理系統資料庫的邏輯結構設計
邏輯結構設計的任務是把概念結構設計階段設計好的E-R圖轉換為特定的DBMS所支持的數據模型(即層次、網狀、關系模型之一),並對其進行優化,得到滿足用戶要求和系統功能需求的關系模式。
1、 E-R模型轉換為關系模式
將E-R模型轉換成初始關系模式的一般規則是:系統中各個實體轉換為對應的關系模式;實體之間多對多的聯系也轉換為關系模式。
根據轉換規則,可以將系部、班級、學生、教師、課程五個實體轉換成與之對應的五個關系模式;而將學生與課程兩者之間多對多的選修關系以及教師、班級和課程三者之間多對多的開課關系也轉換為關系模式。
2、關系模式的設計
根據上述的轉換結果,在對關系模式中數據進行規范化處理後,得到了符合第三範式的關系模式如下:
學生:{學號、姓名、性別、出生日期、民族、政治面貌、來源地、入學成績、學生類別、班級名稱、電話、備注}
班級:{班級號、班級名稱、班主任、學生人數、系部名稱、備注}
系部:{系號、系部名稱、班級數}
教師:{教師號、教師姓名、性別、出生日期、所在系、職稱}
課程:{課程號、課程名、考核方式、學分、學時數}
選修:{學號、課程號、成績}
開課: {教師號、班級名稱、課程號、開課學期、授課地點}
每個關系模式中帶下劃線的屬性或屬性的組合表示主鍵、帶雙波浪線的屬性表示與之關聯的表的外鍵。
根據系統功能需求,數據採用SQL Server 2000所支持的實際數據模型,也就是資料庫的邏輯結構。啟動SQL Server 2000,創建一個資料庫命名為:jxgl。該資料庫中各個數據表的結構如下面各個表格所示。每個表格對應於資料庫中的一個表。
3、將關系模式轉換為資料庫中的表
按照關系數據模型的結構,將關系模式轉換為關系資料庫中的數據表,轉換的規則是:一個關系模式轉換為一個數據表,關系模式中的每個屬性轉換為數據表中的一個列。同時設置表中各個列的名稱、數據類型、數據寬度以及數據規則,得到如下幾個表:

學生表(student)
列名 類型 寬度 規則
班級名稱 CHAR 20 內容取自班級信息表的班級名稱
學號 CHAR 10 主鍵、長度為10個字元
姓名 CHAR 8
性別 CHAR 2 非空、只能取「男」或「女」
出生日期 DATETIME
民族 CHAR 4 假定只能取以下之一:漢、壯、白、回、苗、滿、其它
政治面貌 CHAR 4 只能取以下之一:黨員、團員、群眾
來源地 CHAR 10
入學成績 INT
學生類別 CHAR 10 假定只能取以下之一:本科、大專(普)、大專(業)、中專、技校、函授、其它
電話 CHAR 11
備注 CHAR 10
註:(1)該表存放全校所有學生的基本信息,每個學生產生一條記錄。
(2)學號的前4位表示年級,第5--8位表示班級號(其中第5-6位表示系號, 第7-8位表示系內班級號),最後兩位是班內的學生編號,在輸入記錄內容時應加以區分。

班級表(class)
列名 類型 寬度 規則
系部名稱 CHAR 10 非空、內容取自系部信息表的系部名稱
班級號 CHAR 4 非空、長度為4個字元
班級名稱 CHAR 20 主鍵
班主任 CHAR 8
學生人數 INT
備注 CHAR 10
註:(1)該表存放全校所有班級的信息,每個班級產生一條記錄。
(2)班級號的前2位表示系號,後兩位為系內的班級編號,在輸入記錄內容時應加以區分。

系部表(department)
列名 類型 寬度 規則
系號 CHAR 2 非空、長度為2個字元
系部名稱 CHAR 10 主鍵
班級數 INT
註:該表存放某校所有的系部信息,每個系部產生一條記錄。

教師表(teacher)
列名 類型 寬度 規則
教師號 CHAR 4 主鍵、長度為4個字元
姓名 CHAR 8
性別 CHAR 2 非空、只能取「男」或「女」
出生日期 DATETIME
職稱 CHAR 6 只能取以下之一:教授、副教授、講師、助教、其他
所在系 CHAR 20 非空、外鍵(內容取自系部表的系部名稱)

課程表(course)
列名 類型 寬度 規則
課程號 CHAR 4 主鍵、長度為4個字元
課程名 CHAR 20
考核方式 CHAR 4 假定只能取以下之一:考試、考查、其他
學分 INT 非空
學時數 INT
註:該表存放某校所有的課程信息,每門課產生一條記錄。

成績表(SC)
列名 類型 寬度 規則
學號 CHAR 8 主鍵、內容取自學生信息表的學生姓名
課程號 CHAR 20 主鍵、內容取自課程信息表的課程名稱
成績 INT
註:該表存放某校所有學生的成績信息,每個學生學習每門課程產生一條記錄。

開課信息表(tcc)
列名 類型 寬度 規則
教師號 CHAR 4 主鍵、內容取自教師信息表的教師號
課程號 CHAR 4 主鍵、內容取自課程信息表的課程號
班級號 CHAR 4 主鍵、內容取自班級信息表的班級號
開課學期 CHAR 20
授課地點 CHAR 20
註:該表存放某校開設課程的信息,每個教師教授某個班級的某門課產生一條記錄。

2. 5 物理設計
資料庫的物理設計目標是在選定的DBMS上建立起邏輯設計結構確立的資料庫結構,這一過程也稱為資料庫的物理實現。它主要包括兩項工作:
一是根據資料庫的結構、系統的大小、系統需要完成的功能及對系統的性能要求,決定選用哪個資料庫管理系統。目前,資料庫產品市場上比較好的產品有:Microsoft SQL Server、Oracle、IBM DB/2,SYBASE等。
二是根據選用的資料庫管理系統的資料庫實現方法來建立用戶資料庫,即創建所需要的資料庫、表及其他資料庫對象。
本系統選用的DBMS是SQL Server 2000,並在該系統上創建用戶資料庫jxgl以及下屬的7個用戶表:student、class、department、teacher、course、sc、tcc,各個表的結構按2.4節第3點各表給出的具體內容設定。

2. 5 實訓二
以小組討論的形式,完成人事工資管理系統用戶資料庫的設計,要求個人寫出用戶資料庫設計的文檔(包括資料庫的需求分析、概念設計、邏輯設計和物理設計,表達方法可參考本章相應內容的案例分析部分),每個小組上交一份本系統用戶資料庫包括的數據表。

第三章 資料庫的數據完整性設計
3.1數據完整性的基本概念及內容
正確創建資料庫後,需要考慮數據的完整性、數據的安全性等要求。數據的完整性主要指數據的正確性、有效性、相容性,強制實施數據完整性可以確保資料庫中的數據的質量。
進行數據完整性設計主要考慮以下幾個方面的內容:
1)表名惟一;
由系統強制實施控制。
2)列名惟一;()
由系統強制實施控制。
3)數據行惟一;
通過設置主鍵約束或觸發器來實施控制。
4)列值非空;
通過設置非空約束來實施控制。
5)列值惟一性
通過設置惟一約束或惟一索引來實施控制。
6)列值滿足一定的條件
通過設置檢查約束或觸發器來實施控制。
7)數據的一致性和有效性
通過設置外鍵約束或觸發器來實施控制。
至於具體要對資料庫的哪一個表的哪一項數據進行什麼樣的數據完整性設計,還應根據用戶的需求來考慮和確定。
3.2 數據完整性的分類與實現方法
在SQL Server關系資料庫中,數據完整性分為以下三類:
1. 域完整性
域完整性是指一個列的輸入有效性,是否允許空值。實現域完整性的方法主要有:限制數據類型(通過設定列的數據類型)、限定格式(通過CHECK約束和規則)或可能值的范圍(通過 FOREIGN KEY 約束、CHECK 約束、DEFAULT定義、NOT NULL定義和規則)以及程序控制。
2. 實體完整性
實體完整性是指保證表中所有的行唯一。實現實體完整性的方法主要有:索引、UNIQUE約束、PRIMARY KEY約束或 IDENTITY屬性以及程序控制。
3. 參照完整性
參照完整性也叫引用完整性。參照完整性確保主鍵(被引用表)和外鍵(引用表)之間的參照關系。它涉及兩個或兩個以上表數據的一致性維護。如student表(稱為引用表、參照表或子表)的class_id列就是參照class表(稱為被引用表、被參照表或父表)的外鍵。參照完整性可以實現以下兩種控制:
(1)存在外鍵時,被參照表中的這一行不能被刪除,主鍵值也不能改變 (以student和class表的「班級名稱」列為例說明)。
(2)若在被參照表中不存在包含相應主鍵的行時,一個外鍵值不能插入參照表中(MsgBox "添加記錄成功!", vbOKOnly + vbInformation, "提示"
End Sub

Private Sub Command5_Click()
rs.Close
Unload Me
End Sub

Private Sub Form_Load()
rs.CursorLocation = adUseClient ' 設置在客戶端創建游標
rs.CursorType = adOpenKeyset '設置游標類型為鍵集類型
rs.LockType = adLockOptimistic '設置打開記錄集時的鎖定類型為樂觀鎖,在執行UPdate方法前不鎖定編輯的數據
rs.Open "select * from teacher", cnn
'在表格上顯示class表的記錄內容
Set DataGrid1.DataSource = rs
DataGrid1.Refresh
'將表格上的數據與文本框或下拉列表框綁定
Set Text1.DataSource = rs
Text1.DataField = "教師號"
Set Text2.DataSource = rs
Text2.DataField = "姓名"
Set Combo1.DataSource = rs
Combo1.DataField = "所在系"
Set Text3.DataSource = rs
Text3.DataField = "出生日期"
Set Text4.DataSource = rs
Text4.DataField = "從教日期"
Set Combo2.DataSource = rs
Combo2.DataField = "性別"
Set Combo3.DataSource = rs
Combo3.DataField = "職稱"
Set Combo4.DataSource = rs
Combo4.DataField = "政治面貌"
Set Combo5.DataSource = rs
Combo5.DataField = "學歷"
Set Text7.DataSource = rs
Text7.DataField = "家庭住址"
Set Text5.DataSource = rs
Text5.DataField = "聯系電話"
Set Text6.DataSource = rs
Text6.DataField = "備注"

'下拉列表框提供班級名稱
Combo1.Clear
rs1.Open "select 系部名稱 from department", cnn
While Not rs1.EOF()
Combo1.AddItem Trim(rs1.Fields("系部名稱"))
rs1.MoveNext
Wend
rs1.Close
End Sub

對其餘幾個表的數據進行增、刪、改操作的窗體的設計方法與上述類擬。