文章目錄
一、主碼、外碼、用戶約束自定義10分
一共有5種約束,分別是主碼PRIMARY KEY、獨特UNIQUE、外碼FOREIGN KEY、默認DEFAULT和檢查CHECK。
例子用到pdf裏的SPJ題的例子。
格式如下:
/*PRIMARY KEY*/
ALTER TABLE 表名 ADD CONSTRAINT 約束名 PRIMARY KEY (列名)
ALTER TABLE S ADD CONSTRAINT PK_SNO PRIMARY KEY (SNO)
ALTER TABLE SPJ ADD CONSTRAINT PK_SPJ PRIMARY KEY(SNO,PNO,JNO)
/*UNIQUE*/
ALTER TABLE 表名 ADD CONSTRAINT 約束名 UNIQUE (列名)
ALTER TABLE SPJ ADD CONSTRAINT UK_ QTY(QTY)//這樣供應情況表無法出現同供應數的行,不合適,僅做展示。
/*FOREIGN KEY*/
ALTER TABLE 表名 ADD CONSTRAINT 約束名
FOREIGN KEY (列名)REFERENCES 引用表名 (列名)
ALTER TABLE SPJ ADD CONSTRAINT FK_S FOREIGN KEY (SNO) REFERENCES S (SNO)
/*DEFAULT*/
ALTER TABLE 表名 ADD CONSTRAINT 約束名 DEFAULT 默認值 FOR 列名
ALTER TABLE S ADD CONSTRAINT DF_CITY DEFAULT '鄭州' FOR CITY
ALTER TABLE SPJ ADD CONSTRAINT DF_QTY DEFAULT 0 FOR QTY
/*CHECK */
ALTER TABLE 表名 ADD CONSTRAINT 約束名 CHECK (邏輯表達式)
ALTER TABLE SPJ ADD CONSTRAINT CHK_QTY CHECK (QTY>=0)
二、查詢30分
基本結構
SELECT 目標列名序列 //需要的列
FROM 數據源 //需要的表
WHERE 檢索條件表達式 //條件
GROUP BY 分組依據列 //分組
HAVING 組提取條件 //挑選組
ORDER BY 排序依據列 //排序
接下來看書搞。
三、規範化20分
需要知道的概念
Y=F(X),由X得唯一Y。相對的由學號、科目、考試輪次爲X,得唯一成績Y;由學號X對應唯一學生名Y;由城市X對應唯一省Y。都記爲X→Y。
X和Y都可以是一個集,如果X有一個真子集X1→Y,則稱Y部分函數依賴於X;
如果沒有X1→Y,則稱Y完全函數依賴與X;
如果有Z滿足X→Y(Y不→X,Y不包含於X),Y→Z,則稱Z傳遞函數依賴於X。
候選碼:
一個屬性U,可以對應一組關係模式屬性全集R,即可爲此屬性全集的候選碼。
主屬性:
包含在任意候選碼中的屬性都爲主屬性A,其他爲非主屬性a。
主碼P
例:學生R(學生號UAP,身份證號UAP,性別a,年齡a,所在系a)
選課(學號UAP,課號UAP,考試次數UAP,成績a),一個學生一門課可以有多次考試,一次考試一個成績。
範式
- 第一範式:
不包含非原子項屬性。
分解方法:拆分屬性爲原子項屬性。 - 第二範式:
所有非主屬性都完全依賴主屬性。
分解方法:
- 用組成主碼的屬性集合每個子集構成一個關係模式
- 將依賴這些主碼的屬性放置到對應關係模式
- 最後去掉只由主碼的子集構成的關係模式
- 第三範式:
所有非主屬性都不傳遞依賴主碼
分解方法:
- 對不是候選碼的被依賴屬性,從關係中刪除依賴這些屬性的屬性
- 新建一個關係模式,這個關係模式包含之前刪除的屬性以及被依賴屬性
- 被依賴屬性作爲新關係模式的主碼
SLC表(學生號,學生名,性別,所在系,所在樓,課程號,課程成績)每個系學生住在同一個樓。
SLC爲第一範式,即SLC∈1NF
∵SLC中學生號和課程號爲主碼,學生號→學生名。
∴SLC爲第一範式。
轉變爲第二範式,拆分子集。
S(學生號,學生名,性別,所在系,所在樓)
SC(學生號,課程號,課程成績)
C(課程號)
刪去只由主碼的子集構成的關係模式,此時所有非主屬性都完全依賴主屬性,所有表∈1NF。
∵學生號→所在系,所在系→所在樓
所以S∈2NF。
轉變爲第三範式。
S(學生號,學生名,性別,所在系)
所在系(所在系(系),所在樓(樓))
SC中無傳遞函數依賴,SC∈3NF。
分解完畢,一般分解到3NF即可。
四、關係數據庫的主要功能?
相互關聯的數據集合,在文件管理方法中,文件是分散的,而在數據庫系統中可以集中控制、維護和管理有關數據。
減少的數據冗餘,通過關係規範化理論實現。
程序與數據相互獨立,包括數據的物理獨立性和邏輯獨立性。
保證數據的安全和可靠,通過數據庫管理系統的備份和恢復機制實現。
最大限度保證數據的正確性(完整性),通過建立保證數據正確的約束實現。
數據共享並能保證數據的一致性。
五、什麼是視圖,視圖有什麼用?
視圖是由從數據庫的基本表中選取出來的數據組成的邏輯窗口,是基本表的部分行和列的數據的組合。
簡化數據查詢語句;使用戶能從多角度看待同一數據;提高了數據的安全性;提供了一定程度的邏輯獨立性。
六、數據庫故障的種類有幾種?如何恢復?10分
三種。事務內部的故障;系統故障、其他故障。
事務故障的恢復:事務故障是指事務在運行到正常結束前被終止,這時恢復子系統可以利用日誌文件撤銷此事務對數據庫已進行的修改。由系統自動完成,對用戶透明,步驟如下:反向掃描日誌文件並執行相應操作的逆操作,直至讀到此事務開始標記,恢復完成。
系統故障的恢復:系統故障造成數據庫不一致狀態有兩個,一個是未完成事務對數據庫的更新可能已寫入數據庫,二是已提交事務對數據庫更新可能還留在數據緩存區未寫入數據庫。因此恢復系統故障就是撤銷故障發生時未完成的事務,重做已完成事務:正向掃描日誌文件,找出故障發生前的已提交的事務,重做;找出故障發生時未完成的事務,撤銷。
介質故障的恢復:此時磁盤上的物理數據和日誌文件均遭到破壞,是最嚴重的一種故障。恢復方法是首先重裝數據庫,是數據庫管理系統能正常運行,然後利用介質損壞前對數據庫已做的備份或利用鏡像設備恢復數據庫。
七、數據庫設計(猜測是分析題)
步驟:
- 需求分析
是整個數據庫設計中最重要的一步,是其他各步驟的基礎。明確用戶對系統的需求:包括數據、功能和性能的需求。 - 概念結構設計
主要是用E-R圖的形式。作用:將需求分析得到的用戶需求抽象爲信息結構。 - 邏輯結構設計
將E-R圖轉換成表,導出特定的DBMS可以處理的數據庫邏輯結構。 - 物理結構設計
爲邏輯結構設計選取一個最適合應用環境的數據庫物理結構。 - 數據庫的行爲設計
設計數據庫所包含功能、功能間的關聯關係和一些功能的完整性要求。 - 數據庫實施
運用DBMS提供的數據語言以及數據庫開發工具,根據結構設計和行爲設計建立數據庫,編制應用程序,組織數據入庫並進行試運行。 - 數據庫運行和維護階段
將試運行數據庫應用系統投入正式使用,在DBMS使用過程中不斷進行調整、修改和完善,使其能夠獲得更好的性能。
八、併發操作會產生哪幾種數據不一致的情況?如何避免這種數據不一致的情況?
併發操作帶來的數據不一致性包括三類:丟失修改、不可重複讀(其中包括產生幽靈數據)和讀 “髒”數據。 我們可以通過封鎖機制避免各種不一致的情況。
X鎖爲排它鎖,對其他事務X鎖文件不可被讀不可被寫。
S鎖爲共享鎖,,對其他事務S鎖文件可讀不可寫。
一級封鎖協議:對事務要修改的文件全程加X鎖,可避免丟失修改。丟失修改,即,回寫修改數據被覆蓋,破壞數據的一致性。
二級封鎖協議:一級封鎖協議上,對事務要讀取文件加S鎖,讀完釋放,在一級封鎖協議上,可避免讀髒數據。讀髒數據,即,其他事務對數據操作回滾,本事務讀取了回滾前的錯誤數據。
三級封鎖協議:一級封鎖協議上,對事務要讀取文件全程加S鎖。在二級封鎖協議上可避免不可重複讀。不可重複讀,即,本事務首次讀數據後,其他事務對此數據進行修改,本事務再次讀此數據,取得結果會不同的問題。
九、數據庫管理系統以及它有哪些主要功能?(DBMS的主要功能,主流的DBMS軟件)
(1)DBMS是一個專門用於實現對數據進行管理和維護的系統軟件。
(2)主要功能:
數據庫的建立與維護;
數據定義功能;
數據組織、存儲和管理功能;
數據操作功能;
事務的管理和運行功能;
與其他軟件的通信功能。
(3)主流的DBMS:MS SQL Server、DB2、Oracle、Access、mySQL
2、數據庫系統的組成:由數據庫、數據庫管理系統、應用程序、數據庫管理員組成。