當(dāng)前位置:首頁(yè) > 芯聞號(hào) > 充電吧
[導(dǎo)讀]? ? ? ?數(shù)據(jù)庫(kù)也是計(jì)算機(jī)類筆試面試中不可避免會(huì)遇到的考點(diǎn),尤其是銀行和部分傳統(tǒng)軟件類公司。這里根據(jù)整理的資料,對(duì)數(shù)據(jù)庫(kù)的相關(guān)知識(shí)也做個(gè)總結(jié)吧。希望學(xué)過(guò)數(shù)據(jù)庫(kù)但長(zhǎng)時(shí)間不用的同學(xué)根據(jù)這些知識(shí)能夠回憶


? ? ? ?數(shù)據(jù)庫(kù)也是計(jì)算機(jī)類筆試面試中不可避免會(huì)遇到的考點(diǎn),尤其是銀行和部分傳統(tǒng)軟件類公司。這里根據(jù)整理的資料,對(duì)數(shù)據(jù)庫(kù)的相關(guān)知識(shí)也做個(gè)總結(jié)吧。希望學(xué)過(guò)數(shù)據(jù)庫(kù)但長(zhǎng)時(shí)間不用的同學(xué)根據(jù)這些知識(shí)能夠回憶和重拾,沒(méi)學(xué)過(guò)的同學(xué)能掌握一些數(shù)據(jù)庫(kù)的基礎(chǔ)知識(shí)。


第一節(jié)

? ? ? 一、相關(guān)概念

? ? ? ?1. Data:數(shù)據(jù),是數(shù)據(jù)庫(kù)中存儲(chǔ)的基本對(duì)象,是描述事物的符號(hào)記錄。
? ? ? ?2. Database:數(shù)據(jù)庫(kù),是長(zhǎng)期儲(chǔ)存在計(jì)算機(jī)內(nèi)、有組織的、可共享的大量數(shù)據(jù)的集合。
? ? ? ?3. DBMS:數(shù)據(jù)庫(kù)管理系統(tǒng),是位于用戶與操作系統(tǒng)之間的一層數(shù)據(jù)管理軟件,用于科學(xué)地組織、存儲(chǔ)和管理數(shù)據(jù)、高效地獲取和維護(hù)數(shù)據(jù)。
? ? ? ?4. DBS:數(shù)據(jù)庫(kù)系統(tǒng),指在計(jì)算機(jī)系統(tǒng)中引入數(shù)據(jù)庫(kù)后的系統(tǒng),一般由數(shù)據(jù)庫(kù)、數(shù)據(jù)庫(kù)管理系統(tǒng)、應(yīng)用系統(tǒng)、數(shù)據(jù)庫(kù)管理員(DBA)構(gòu)成。
? ? ? ?5. 數(shù)據(jù)模型:是用來(lái)抽象、表示和處理現(xiàn)實(shí)世界中的數(shù)據(jù)和信息的工具,是對(duì)現(xiàn)實(shí)世界的模擬,是數(shù)據(jù)庫(kù)系統(tǒng)的核心和基礎(chǔ);其組成元素有數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)操作和完整性約束。
? ? ? ?6. 概念模型:也稱信息模型,是按用戶的觀點(diǎn)來(lái)對(duì)數(shù)據(jù)和信息建模,主要用于數(shù)據(jù)庫(kù)設(shè)計(jì)。
? ? ? ?7. 邏輯模型:是按計(jì)算機(jī)系統(tǒng)的觀點(diǎn)對(duì)數(shù)據(jù)建模,用于DBMS實(shí)現(xiàn)。
? ? ? ?8. 物理模型:是對(duì)數(shù)據(jù)最底層的抽象,描述數(shù)據(jù)在系統(tǒng)內(nèi)部的表示方式和存取方法,在磁盤(pán)或磁帶上的存儲(chǔ)方式和存取方法,是面向計(jì)算機(jī)系統(tǒng)的。
? ? ? ?9. 實(shí)體和屬性:客觀存在并可相互區(qū)別的事物稱為實(shí)體。實(shí)體所具有的某一特性稱為屬性。
? ? ? ?10.E-R圖:即實(shí)體-關(guān)系圖,用于描述現(xiàn)實(shí)世界的事物及其相互關(guān)系,是數(shù)據(jù)庫(kù)概念模型設(shè)計(jì)的主要工具。
? ? ? ?11.關(guān)系模式:從用戶觀點(diǎn)看,關(guān)系模式是由一組關(guān)系組成,每個(gè)關(guān)系的數(shù)據(jù)結(jié)構(gòu)是一張規(guī)范化的二維表。
? ? ? ?12.型/值:型是對(duì)某一類數(shù)據(jù)的結(jié)構(gòu)和屬性的說(shuō)明;值是型的一個(gè)具體賦值,是型的實(shí)例。
? ? ? ?13.數(shù)據(jù)庫(kù)模式:是對(duì)數(shù)據(jù)庫(kù)中全體數(shù)據(jù)的邏輯結(jié)構(gòu)(數(shù)據(jù)項(xiàng)的名字、類型、取值范圍等)和特征(數(shù)據(jù)之間的聯(lián)系以及數(shù)據(jù)有關(guān)的安全性、完整性要求)的描述。
? ? ? ?14.數(shù)據(jù)庫(kù)的三級(jí)系統(tǒng)結(jié)構(gòu):外模式、模式和內(nèi)模式。
? ? ? ?15.數(shù)據(jù)庫(kù)內(nèi)模式:又稱為存儲(chǔ)模式,是對(duì)數(shù)據(jù)庫(kù)物理結(jié)構(gòu)和存儲(chǔ)方式的描述,是數(shù)據(jù)在數(shù)據(jù)庫(kù)內(nèi)部的表示方式。一個(gè)數(shù)據(jù)庫(kù)只有一個(gè)內(nèi)模式。
? ? ? ?16.數(shù)據(jù)庫(kù)外模式:又稱為子模式或用戶模式,它是數(shù)據(jù)庫(kù)用戶能夠看見(jiàn)和使用的局部數(shù)據(jù)的邏輯結(jié)構(gòu)和特征的描述,是數(shù)據(jù)庫(kù)用戶的數(shù)據(jù)視圖。通常是模式的子集。一個(gè)數(shù)據(jù)庫(kù)可有多個(gè)外模式。
? ? ? ?17.數(shù)據(jù)庫(kù)的二級(jí)映像:外模式/模式映像、模式/內(nèi)模式映像。

? ? ?

?二、重點(diǎn)知識(shí)點(diǎn)

? ? ? ?1.?數(shù)據(jù)庫(kù)系統(tǒng)由數(shù)據(jù)庫(kù)、數(shù)據(jù)庫(kù)管理系統(tǒng)、應(yīng)用系統(tǒng)和數(shù)據(jù)庫(kù)管理員構(gòu)成。

? ? ? ?2.?數(shù)據(jù)模型的組成要素是:數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)操作、完整性約束條件。

? ? ? ?3.?實(shí)體型之間的聯(lián)系分為一對(duì)一、一對(duì)多和多對(duì)多三種類型。

? ? ? ?4.?常見(jiàn)的數(shù)據(jù)模型包括:關(guān)系、層次、網(wǎng)狀、面向?qū)ο?、?duì)象關(guān)系映射等幾種。

? ? ? ?5.?關(guān)系模型的完整性約束包括:實(shí)體完整性、參照完整性和用戶定義完整性。

? ? ? 6.?闡述數(shù)據(jù)庫(kù)三級(jí)模式、二級(jí)映象的含義及作用。
? ? ? ??數(shù)據(jù)庫(kù)三級(jí)模式反映的是數(shù)據(jù)的三個(gè)抽象層次:?模式是對(duì)數(shù)據(jù)庫(kù)中全體數(shù)據(jù)的邏輯結(jié)構(gòu)和特征的描述。內(nèi)模式又稱為存儲(chǔ)模式,是對(duì)數(shù)據(jù)庫(kù)物理結(jié)構(gòu)和存儲(chǔ)方式的描述。外模式又稱為子模式或用戶模式,是對(duì)特定數(shù)據(jù)庫(kù)用戶相關(guān)的局部數(shù)據(jù)的邏輯結(jié)構(gòu)和特征的描述。


? ? ? ??數(shù)據(jù)庫(kù)三級(jí)模式通過(guò)二級(jí)映象在?DBMS?內(nèi)部實(shí)現(xiàn)這三個(gè)抽象層次的聯(lián)系和轉(zhuǎn)換。外模式面向應(yīng)用程序,?通過(guò)外模式/模式映象與邏輯模式建立聯(lián)系,?實(shí)現(xiàn)數(shù)據(jù)的邏輯獨(dú)立性。?模式/內(nèi)模式映象建立模式與內(nèi)模式之間的一對(duì)一映射,?實(shí)現(xiàn)數(shù)據(jù)的物理獨(dú)立性。


第二節(jié)

一、相關(guān)概念


? ? ? ?1.?主鍵:?能夠唯一地標(biāo)識(shí)一個(gè)元組的屬性或?qū)傩越M稱為關(guān)系的鍵或候選鍵。?若一個(gè)關(guān)系有多個(gè)候選鍵則可選其一作為主鍵(Primary?key)。

? ? ? ?2.?外鍵:如果一個(gè)關(guān)系的一個(gè)或一組屬性引用(參照)了另一個(gè)關(guān)系的主鍵,則稱這個(gè)或這組屬性為外碼或外鍵(Foreign?key)。

? ? ? ?3.?關(guān)系數(shù)據(jù)庫(kù):?依照關(guān)系模型建立的數(shù)據(jù)庫(kù)稱為關(guān)系數(shù)據(jù)庫(kù)。?它是在某個(gè)應(yīng)用領(lǐng)域的所有關(guān)系的集合。

? ? ? ?4.?關(guān)系模式:?簡(jiǎn)單地說(shuō),關(guān)系模式就是對(duì)關(guān)系的型的定義,?包括關(guān)系的屬性構(gòu)成、各屬性的數(shù)據(jù)類型、?屬性間的依賴、?元組語(yǔ)義及完整性約束等。?關(guān)系是關(guān)系模式在某一時(shí)刻的狀態(tài)或內(nèi)容,?關(guān)系模型是型,?關(guān)系是值,?關(guān)系模型是靜態(tài)的、?穩(wěn)定的,?而關(guān)系是動(dòng)態(tài)的、隨時(shí)間不斷變化的,因?yàn)殛P(guān)系操作在不斷地更新著數(shù)據(jù)庫(kù)中的數(shù)據(jù)。

? ? ? ?5.?.?實(shí)體完整性:用于標(biāo)識(shí)實(shí)體的唯一性。它要求基本關(guān)系必須要有一個(gè)能夠標(biāo)識(shí)元組唯一性的主鍵,主鍵不能為空,也不可取重復(fù)值。

? ? ? ?6.?參照完整性:?用于維護(hù)實(shí)體之間的引用關(guān)系。?它要求一個(gè)關(guān)系的外鍵要么為空,?要么取與被參照關(guān)系對(duì)應(yīng)的主鍵值,即外鍵值必須是主鍵中已存在的值。

? ? ? ?7.?用戶定義的完整性:就是針對(duì)某一具體應(yīng)用的數(shù)據(jù)必須滿足的語(yǔ)義約束。包括非空、?唯一和布爾條件約束三種情況。

? ? ? 二、重要知識(shí)點(diǎn)


? ? ? 1.?關(guān)系數(shù)據(jù)庫(kù)語(yǔ)言分為關(guān)系代數(shù)、關(guān)系演算和結(jié)構(gòu)化查詢語(yǔ)言三大類。

? ? ? 2.?關(guān)系的?5?種基本操作是選擇、投影、并、差、笛卡爾積。

? ? ? 3.關(guān)系模式是對(duì)關(guān)系的描述,五元組形式化表示為:R(U,D,DOM,F(xiàn)),其中

? ? ? ? ? ? R?——?關(guān)系名

? ? ? ? ? ??U?——?組成該關(guān)系的屬性名集合

? ? ? ? ? ??D?——?屬性組?U?中屬性所來(lái)自的域

? ? ? ? ? ??DOM?——?屬性向域的映象集合

? ? ? ? ? ??F?——?屬性間的數(shù)據(jù)依賴關(guān)系集合

? ? ? ?4.笛卡爾乘積,選擇和投影運(yùn)算如下


第三節(jié)

一、相關(guān)概念


? ? ? ?1.?SQL:結(jié)構(gòu)化查詢語(yǔ)言的簡(jiǎn)稱,?是關(guān)系數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)語(yǔ)言。SQL?是一種通用的、?功能極強(qiáng)的關(guān)系數(shù)據(jù)庫(kù)語(yǔ)言,?是對(duì)關(guān)系數(shù)據(jù)存取的標(biāo)準(zhǔn)接口,?也是不同數(shù)據(jù)庫(kù)系統(tǒng)之間互操作的基礎(chǔ)。集數(shù)據(jù)查詢、數(shù)據(jù)操作、數(shù)據(jù)定義、和數(shù)據(jù)控制功能于一體。

? ? ? ?2.?數(shù)據(jù)定義:數(shù)據(jù)定義功能包括模式定義、表定義、視圖和索引的定義。

? ? ? ?3.?嵌套查詢:指將一個(gè)查詢塊嵌套在另一個(gè)查詢塊的?WHERE?子句或?HAVING?短語(yǔ)的條件中的查詢。

? ? ? 二、重要知識(shí)點(diǎn)

? ? ? ?1. SQL 數(shù)據(jù)定義語(yǔ)句的操作對(duì)象有:模式、表、視圖和索引。
? ? ? ?2. SQL 數(shù)據(jù)定義語(yǔ)句的命令動(dòng)詞是:CREATE、DROP 和 ALTER。
? ? ? ?3. RDBMS 中索引一般采用 B+樹(shù)或 HASH 來(lái)實(shí)現(xiàn)。
? ? ? ?4. 索引可以分為唯一索引、非唯一索引和聚簇索引三種類型。



? ? ? ?6.SQL?創(chuàng)建表語(yǔ)句的一般格式為

? ? ? ?? ? ? ?CREATE?TABLE?

? ? ? ?? ? ? ?(?

? ? ? ?? ? ? ?[,

? ? ? ?? ? ? ?[,

其中

? ? 列級(jí)完整性約束為針對(duì)單個(gè)列(本列)的完整性約束,?包括?PRIMARY?KEY、?REFERENCES表名(列名)、UNIQUE、NOT?NULL?等。?

? ? 表級(jí)完整性約束可以是基于表中多列的約束,包括?PRIMARY?KEY?(?列名列表)?、FOREIGN?KEY?REFERENCES?表名(列名)?等。


? ? ? ?7.?SQL?創(chuàng)建索引語(yǔ)句的一般格式為


? ? ? ?? ? ? ?CREATE?[UNIQUE]?[CLUSTER]?INDEX?

? ? ? ?? ? ? ?ON?

其中UNIQUE:表示創(chuàng)建唯一索引,缺省為非唯一索引;

? ? ? CLUSTER:表示創(chuàng)建聚簇索引,缺省為非聚簇索引;

? ? ?


? ? ? ??8.?SQL?查詢語(yǔ)句的一般格式為

? ? ? ?? ? ? ?SELECT?[ALL|DISTINCT]?

? ? ? ?? ? ? ?[?WHERE?

? ? ? ?? ? ? ?[?GROUP?BY?

? ? ? ?? ? ? ?[?ORDER?BY?

其中

? ? ??ALL/DISTINCT:?缺省為?ALL,?即列出所有查詢結(jié)果記錄,?包括重復(fù)記錄。?DISTINCT則對(duì)重復(fù)記錄只列出一條。

? ? ???算術(shù)表達(dá)式列表:一個(gè)或多個(gè)逗號(hào)分隔的算術(shù)表達(dá)式,表達(dá)式由常量(包括數(shù)字和字符串)、列名、函數(shù)和算術(shù)運(yùn)算符構(gòu)成。每個(gè)表達(dá)式后還可跟別名。也可用?*代表查詢表中的所有列。

? ? ??

? ? ??條件表達(dá)式?1:包含關(guān)系或邏輯運(yùn)算符的表達(dá)式,代表查詢條件。

? ? ??條件表達(dá)式?2:包含關(guān)系或邏輯運(yùn)算符的表達(dá)式,代表分組條件。

? ? ??

? ? ??


? ? ? 關(guān)于SQL語(yǔ)句的知識(shí)這里先作如上簡(jiǎn)略介紹,具體寫(xiě)法下次將專門(mén)拿出一篇來(lái)敘述。


第四節(jié)

一、相關(guān)概念和知識(shí)


? ? ? ?1.觸發(fā)器是用戶定義在基本表上的一類由事件驅(qū)動(dòng)的特殊過(guò)程。由服務(wù)器自動(dòng)激活,?能執(zhí)行更為復(fù)雜的檢查和操作,具有更精細(xì)和更強(qiáng)大的數(shù)據(jù)控制能力。使用?CREATE?TRIGGER?命令建立觸發(fā)器。

? ? ? ?2.計(jì)算機(jī)系統(tǒng)存在技術(shù)安全、管理安全和政策法律三類安全性問(wèn)題。

? ? ? ?3.?TCSEC/TDI?標(biāo)準(zhǔn)由安全策略、責(zé)任、保證和文檔四個(gè)方面內(nèi)容構(gòu)成。


? ? ? ?4.?常用存取控制方法包括自主存取控制(DAC)和強(qiáng)制存取控制(MAC)兩種。

? ? ? ?5.?自主存取控制(DAC)的?SQL?語(yǔ)句包括?GRANT?和?REVOKE?兩個(gè)。?用戶權(quán)限由數(shù)據(jù)對(duì)象和操作類型兩部分構(gòu)成。


? ? ? ?6.?常見(jiàn)SQL 自主權(quán)限控制命令和例子。
? ? ? ? ?1) 把對(duì) Student 和 Course 表的全部權(quán)限授予所有用戶。
? ? ? ?? ? ? ?GRANT ALL PRIVILIGES ON TABLE Student,Course TO PUBLIC ;
? ? ? ? ?2) 把對(duì) Student 表的查詢權(quán)和姓名修改權(quán)授予用戶 U4。
? ? ? ?? ? ? ?GRANT SELECT,UPDATE(Sname) ON TABLE Student TO U4 ;
? ? ? ? ?3) 把對(duì) SC 表的插入權(quán)限授予 U5 用戶,并允許他傳播該權(quán)限。
? ? ? ?? ? ? ?GRANT INSERT ON TABLE SC TO U5 WITH GRANT OPTION ;
? ? ? ? ?4) 把用戶 U5 對(duì) SC 表的 INSERT 權(quán)限收回,同時(shí)收回被他傳播出去的授權(quán)。
? ? ? ?? ? ? ?REVOKE INSERT ON TABLE SC FROM U5 CASCADE ;
? ? ? ? ?5) 創(chuàng)建一個(gè)角色 R1,并使其對(duì) Student 表具有數(shù)據(jù)查詢和更新權(quán)限。
? ? ? ?? ? ? ?CREATE ROLE R1;
? ? ? ?? ? ? ?GRANT SELECT,UPDATE ON TABLE Student TO R1;
? ? ? ? ?6) 對(duì)修改 Student 表結(jié)構(gòu)的操作進(jìn)行審計(jì)。
? ? ? ?? ? ? ?AUDIT ALTER ON Student ;


數(shù)據(jù)庫(kù)知識(shí)總結(jié)(2)范式


?一、相關(guān)概念和知識(shí)點(diǎn)

? ? ? ?1.數(shù)據(jù)依賴:反映一個(gè)關(guān)系內(nèi)部屬性與屬性之間的約束關(guān)系,是現(xiàn)實(shí)世界屬性間相互聯(lián)系的抽象,屬于數(shù)據(jù)內(nèi)在的性質(zhì)和語(yǔ)義的體現(xiàn)。
? ? ? ?2.?規(guī)范化理論:是用來(lái)設(shè)計(jì)良好的關(guān)系模式的基本理論。它通過(guò)分解關(guān)系模式來(lái)消除其中不合適的數(shù)據(jù)依賴,以解決插入異常、刪除異常、更新異常和數(shù)據(jù)冗余問(wèn)題。
? ? ? ?3.?函數(shù)依賴:簡(jiǎn)單地說(shuō),對(duì)于關(guān)系模式的兩個(gè)屬性子集X和Y,若X的任一取值能唯一確定Y的值,則稱Y函數(shù)依賴于X,記作X→Y。
? ? ? ?4.?非平凡函數(shù)依賴:對(duì)于關(guān)系模式的兩個(gè)屬性子集X和Y,如果X→Y,但Y!?X,則稱X→Y為非平凡函數(shù)依賴;如果X→Y,但Y?X,則稱X→Y為非平凡函數(shù)依賴。
? ? ? ?5.?完全函數(shù)依賴:對(duì)于關(guān)系模式的兩個(gè)屬性子集X和Y,如果X→Y,并且對(duì)于X的任何一個(gè)真子集X',都沒(méi)有X'→Y,則稱Y對(duì)X完全函數(shù)依賴。
? ? ? ?6.?范式:指符合某一種級(jí)別的關(guān)系模式的集合。在設(shè)計(jì)關(guān)系數(shù)據(jù)庫(kù)時(shí),根據(jù)滿足依賴關(guān)系要求的不同定義為不同的范式。
? ? ? ?7.?規(guī)范化:指將一個(gè)低一級(jí)范式的關(guān)系模式,通過(guò)模式分解轉(zhuǎn)換為若干個(gè)高一級(jí)范式的關(guān)系模式的集合的過(guò)程。
? ? ? ?8.?1NF:若關(guān)系模式的所有屬性都是不可分的基本數(shù)據(jù)項(xiàng),則該關(guān)系模式屬于1NF。
? ? ? ?9.?2NF:1NF關(guān)系模式如果同時(shí)滿足每一個(gè)非主屬性完全函數(shù)依賴于碼,則該關(guān)系模式屬于2NF。
? ? ? ?10.?3NF:若關(guān)系模式的每一個(gè)非主屬性既不部分依賴于碼也不傳遞依賴于碼,則該關(guān)系模式屬于3NF。
? ? ? ?11.?BCNF:若一個(gè)關(guān)系模式的每一個(gè)決定因素都包含碼,則該關(guān)系模式屬于BCNF。
? ? ? ?12.?數(shù)據(jù)庫(kù)設(shè)計(jì):是指對(duì)于一個(gè)給定的應(yīng)用環(huán)境,構(gòu)造優(yōu)化的數(shù)據(jù)庫(kù)邏輯模式和物理結(jié)構(gòu),并據(jù)此建立數(shù)據(jù)庫(kù)及其應(yīng)用系統(tǒng),使之能夠有效地存儲(chǔ)和管理數(shù)據(jù),滿足各種用戶的應(yīng)用需求,包括信息管理要求和數(shù)據(jù)操作要求。
? ? ? ?13. 數(shù)據(jù)庫(kù)設(shè)計(jì)的6個(gè)基本步驟:需求分析,概念結(jié)構(gòu)設(shè)計(jì),邏輯結(jié)構(gòu)設(shè)計(jì),物理結(jié)構(gòu)設(shè)計(jì),數(shù)據(jù)庫(kù)實(shí)施,數(shù)據(jù)庫(kù)運(yùn)行和維護(hù)。
? ? ? ?14.?概念結(jié)構(gòu)設(shè)計(jì):指將需求分析得到的用戶需求抽象為信息結(jié)構(gòu)即概念模型的過(guò)程。也就是通過(guò)對(duì)用戶需求進(jìn)行綜合、歸納與抽象,形成一個(gè)獨(dú)立于具體DBMS的概念模型。
? ? ? ?15.?邏輯結(jié)構(gòu)設(shè)計(jì):將概念結(jié)構(gòu)模型(基本E-R圖)轉(zhuǎn)換為某個(gè)DBMS產(chǎn)品所支持的數(shù)據(jù)模型相符合的邏輯結(jié)構(gòu),并對(duì)其進(jìn)行優(yōu)化。
? ? ? ?16.?物理結(jié)構(gòu)設(shè)計(jì):指為一個(gè)給定的邏輯數(shù)據(jù)模型選取一個(gè)最適合應(yīng)用環(huán)境的物理結(jié)構(gòu)的過(guò)程。包括設(shè)計(jì)數(shù)據(jù)庫(kù)的存儲(chǔ)結(jié)構(gòu)與存取方法。
? ? ? ?17.?抽象:指對(duì)實(shí)際的人、物、事和概念進(jìn)行人為處理,抽取所關(guān)心的共同特性,忽略非本質(zhì)的細(xì)節(jié),并把這些特性用各種概念精確地加以描述,這些概念組成了某種模型。

? ? ? ?18.?數(shù)據(jù)庫(kù)設(shè)計(jì)必須遵循結(jié)構(gòu)設(shè)計(jì)和行為設(shè)計(jì)相結(jié)合的原則。

? ? ? ?19.?數(shù)據(jù)字典主要包括數(shù)據(jù)項(xiàng)、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)流、數(shù)據(jù)存儲(chǔ)和處理過(guò)程五個(gè)部分。
? ? ? ?20. 三種常用抽象方法是分類、聚集和概括。
? ? ? ?21. 局部 E-R 圖之間的沖突主要表現(xiàn)在屬性沖突、命名沖突和結(jié)構(gòu)沖突三個(gè)方面。

? ? ? ?22. 數(shù)據(jù)庫(kù)常用的存取方法包括索引方法、聚簇方法和 HASH方法三種。
? ? ? ?23. 確定數(shù)據(jù)存放位置和存儲(chǔ)結(jié)構(gòu)需要考慮的因素主要有:?存取時(shí)間、 存儲(chǔ)空間利用率和維護(hù)代價(jià)等。

二、細(xì)說(shuō)數(shù)據(jù)庫(kù)三范式


2.1?第一范式(1NF)無(wú)重復(fù)的列

? ? ? ?第一范式(1NF)中數(shù)據(jù)庫(kù)表的每一列都是不可分割的基本數(shù)據(jù)項(xiàng)
? ? ? ?同一列中不能有多個(gè)值
? ? ? ?即實(shí)體中的某個(gè)屬性不能有多個(gè)值或者不能有重復(fù)的屬性。
? ? ? ?簡(jiǎn)而言之,第一范式就是無(wú)重復(fù)的列。


? ? ? ?在任何一個(gè)關(guān)系數(shù)據(jù)庫(kù)中,第一范式(1NF)是對(duì)關(guān)系模式的基本要求,不滿足第一范式(1NF)的數(shù)據(jù)庫(kù)就不是關(guān)系數(shù)據(jù)庫(kù)。


2.2?第二范式(2NF)屬性完全依賴于主鍵[消除部分子函數(shù)依賴]

? ? ? 滿足第二范式(2NF)必須先滿足第一范式(1NF)。

? ? ? 第二范式(2NF)要求數(shù)據(jù)庫(kù)表中的每個(gè)實(shí)例或行必須可以被惟一地區(qū)分。

? ? ? 為實(shí)現(xiàn)區(qū)分通常需要為表加上一個(gè)列,以存儲(chǔ)各個(gè)實(shí)例的惟一標(biāo)識(shí)。?
? ? ? 第二范式(2NF)要求實(shí)體的屬性完全依賴于主關(guān)鍵字。所謂完全依賴是指不能存在僅依賴主關(guān)鍵字一部分的屬性,如果存在,那么這個(gè)屬性和主關(guān)鍵字的這一部分應(yīng)該分離出來(lái)形成一個(gè)新的實(shí)體,新實(shí)體與原實(shí)體之間是一對(duì)多的關(guān)系。為實(shí)現(xiàn)區(qū)分通常需要為表加上一個(gè)列,以存儲(chǔ)各個(gè)實(shí)例的惟一標(biāo)識(shí)。簡(jiǎn)而言之,第二范式就是屬性完全依賴于主鍵。
2.3?第三范式(3NF)屬性不依賴于其它非主屬性[消除傳遞依賴]

? ? ? 滿足第三范式(3NF)必須先滿足第二范式(2NF)。

? ? ? 簡(jiǎn)而言之,第三范式(3NF)要求一個(gè)數(shù)據(jù)庫(kù)表中不包含已在其它表中已包含的非主關(guān)鍵字信息。

? ? ? 例如,存在一個(gè)部門(mén)信息表,其中每個(gè)部門(mén)有部門(mén)編號(hào)(dept_id)、部門(mén)名稱、部門(mén)簡(jiǎn)介等信息。那么在的員工信息表中列出部門(mén)編號(hào)后就不能再將部門(mén)名稱、部門(mén)簡(jiǎn)介等與部門(mén)有關(guān)的信息再加入員工信息表中。如果不存在部門(mén)信息表,則根據(jù)第三范式(3NF)也應(yīng)該構(gòu)建它,否則就會(huì)有大量的數(shù)據(jù)冗余。簡(jiǎn)而言之,第三范式就是屬性不依賴于其它非主屬性。

2.4 具體實(shí)例剖析


? ? ? 下面列舉一個(gè)學(xué)校的學(xué)生系統(tǒng)的實(shí)例,以示幾個(gè)范式的應(yīng)用。

? ? ? ?在設(shè)計(jì)數(shù)據(jù)庫(kù)表結(jié)構(gòu)之前,我們先確定一下要設(shè)計(jì)的內(nèi)容包括那些。學(xué)號(hào)、學(xué)生姓名、年齡、性別、課程、課程學(xué)分、系別、學(xué)科成績(jī),系辦地址、系辦電話等信息。為了簡(jiǎn)單我們暫時(shí)只考慮這些字段信息。我們對(duì)于這些信息,說(shuō)關(guān)心的問(wèn)題有如下幾個(gè)方面。

? ? ? ?1)學(xué)生有那些基本信息?
? ? ? ?2)學(xué)生選了那些課,成績(jī)是什么?
? ? ? ?3)每個(gè)課的學(xué)分是多少?
? ? ? ?4)學(xué)生屬于那個(gè)系,系的基本信息是什么。

? ? ? ?首先第一范式(1NF):數(shù)據(jù)庫(kù)表中的字段都是單一屬性的,不可再分。這個(gè)單一屬性由基本類型構(gòu)成,包括整型、實(shí)數(shù)、字符型、邏輯型、日期型等。在當(dāng)前的任何關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)中,不允許你把數(shù)據(jù)庫(kù)表的一列再分成二列或多列,因此做出的都是符合第一范式的數(shù)據(jù)庫(kù)。?


? ? ? ?我們?cè)倏紤]第二范式,把所有這些信息放到一個(gè)表中(學(xué)號(hào),學(xué)生姓名、年齡、性別、課程、課程學(xué)分、系別、學(xué)科成績(jī),系辦地址、系辦電話)下面存在如下的依賴關(guān)系。?
? ? ? ?1)(學(xué)號(hào))→?(姓名,?年齡,性別,系別,系辦地址、系辦電話)?
? ? ? ?2) (課程名稱)?→?(學(xué)分)?
? ? ? ?3)(學(xué)號(hào),課程)→?(學(xué)科成績(jī))

根據(jù)依賴關(guān)系我們可以把選課關(guān)系表SelectCourse改為如下三個(gè)表:?

? ? ? ?學(xué)生:Student(學(xué)號(hào),姓名,?年齡,性別,系別,系辦地址、系辦電話);?
? ? ? ?課程:Course(課程名稱,?學(xué)分);?
? ? ? ?選課關(guān)系:SelectCourse(學(xué)號(hào),?課程名稱,?成績(jī))。


? ? ? ?事實(shí)上,對(duì)照第二范式的要求,這就是滿足第二范式的數(shù)據(jù)庫(kù)表,若不滿足第二范式,會(huì)產(chǎn)生如下問(wèn)題?
數(shù)據(jù)冗余:?同一門(mén)課程由n個(gè)學(xué)生選修,"學(xué)分"就重復(fù)n-1次;同一個(gè)學(xué)生選修了m門(mén)課程,姓名和年齡就重復(fù)了m-1次。

更新異常:?1)若調(diào)整了某門(mén)課程的學(xué)分,數(shù)據(jù)表中所有行的"學(xué)分"值都要更新,否則會(huì)出現(xiàn)同一門(mén)課程學(xué)分不同的情況。?
? ? ? ? ? ? ? ? ?2)假設(shè)要開(kāi)設(shè)一門(mén)新的課程,暫時(shí)還沒(méi)有人選修。這樣,由于還沒(méi)有"學(xué)號(hào)"關(guān)鍵字,課程名稱和學(xué)分也無(wú)法記錄入數(shù)據(jù)庫(kù)。

刪除異常?:?假設(shè)一批學(xué)生已經(jīng)完成課程的選修,這些選修記錄就應(yīng)該從數(shù)據(jù)庫(kù)表中刪除。但是,與此同時(shí),課程名稱和學(xué)分信息也被刪除了。很顯然,這也會(huì)導(dǎo)致插入異常。

? ? ? ?我們?cè)倏紤]如何將其改成滿足第三范式的數(shù)據(jù)庫(kù)表,接著看上面的學(xué)生表Student(學(xué)號(hào),姓名,?年齡,性別,系別,系辦地址、系辦電話),關(guān)鍵字為單一關(guān)鍵字"學(xué)號(hào)",因?yàn)榇嬖谌缦聸Q定關(guān)系:

? ? ? (學(xué)號(hào))→?(姓名,?年齡,性別,系別,系辦地址、系辦電話)?
但是還存在下面的決定關(guān)系?
? ? ? ?(學(xué)號(hào))?→?(所在學(xué)院)→(學(xué)院地點(diǎn),?學(xué)院電話)?
? ? ? ? 即存在非關(guān)鍵字段"學(xué)院地點(diǎn)"、"學(xué)院電話"對(duì)關(guān)鍵字段"學(xué)號(hào)"的傳遞函數(shù)依賴。?
? ? ? ?它也會(huì)存在數(shù)據(jù)冗余、更新異常、插入異常和刪除異常的情況(這里就不具體分析了,參照第二范式中的分析)。根據(jù)第三范式把學(xué)生關(guān)系表分為如下兩個(gè)表就可以滿足第三范式了:

? ? ? ?學(xué)生:(學(xué)號(hào),?姓名,?年齡,?性別,系別);?
? ? ? ?系別:(系別,?系辦地址、系辦電話)。



SQL語(yǔ)句總結(jié)


SQL語(yǔ)句中常用關(guān)鍵詞及其解釋如下:

1)SELECT 將資料從數(shù)據(jù)庫(kù)中的表格內(nèi)選出,兩個(gè)關(guān)鍵字:從 (FROM) 數(shù)據(jù)庫(kù)中的表格內(nèi)選出 (SELECT)。語(yǔ)法為
SELECT "欄位名" FROM "表格名"。
2)DISTINCT 在上述 SELECT 關(guān)鍵詞后加上一個(gè) DISTINCT 就可以去除選擇出來(lái)的欄位中的重復(fù),從而完成求得這個(gè)表格/欄位內(nèi)有哪些不同的值的功能。語(yǔ)法為
SELECT DISTINCT "欄位名" FROM "表格名"。
3)WHERE 這個(gè)關(guān)鍵詞可以幫助我們選擇性地抓資料,而不是全取出來(lái)。語(yǔ)法為
SELECT "欄位名" FROM "表格名" WHERE "條件"?
4)AND OR 上例中的 WHERE 指令可以被用來(lái)由表格中有條件地選取資料。這個(gè)條件可能是簡(jiǎn)單的 (像上一頁(yè)的例子),也可能是復(fù)雜的。復(fù)雜條件是由二或多個(gè)簡(jiǎn)單條件透過(guò) AND 或是 OR 的連接而成。語(yǔ)法為:
SELECT "欄位名" ?FROM "表格名" ?WHERE "簡(jiǎn)單條件" ?{[AND|OR] "簡(jiǎn)單條件"}+
5)IN 在 SQL 中,在兩個(gè)情況下會(huì)用到 IN ?這個(gè)指令;這一頁(yè)將介紹其中之一:與 WHERE 有關(guān)的那一個(gè)情況。在這個(gè)用法下,我們事先已知道至少一個(gè)我們需要的值,而我們將這些知道的值都放入 IN ?這個(gè)子句。語(yǔ)法為:
SELECT "欄位名" ?FROM "表格名" ?WHERE "欄位名" IN ('值一', '值二', ...) ?
6)BETWEEN IN 這個(gè)指令可以讓我們依照一或數(shù)個(gè)不連續(xù) (discrete)的值的限制之內(nèi)抓出資料庫(kù)中的值,而 BETWEEN 則是讓我們可以運(yùn)用一個(gè)范圍 (range) ?內(nèi)抓出資料庫(kù)中的值,語(yǔ)法為:
SELECT "欄位名" ?FROM "表格名" WHERE "欄位名" BETWEEN '值一' AND '值二'?
7)LIKE LIKE 是另一個(gè)在 WHERE ?子句中會(huì)用到的指令。基本上, LIKE ?能讓我們依據(jù)一個(gè)模式(pattern) 來(lái)找出我們要的資料。語(yǔ)法為:
SELECT "欄位名" ?FROM "表格名" ?WHERE "欄位名" LIKE {模式}?
8)ORDER BY 我們經(jīng)常需要能夠?qū)⒆コ龅馁Y料做一個(gè)有系統(tǒng)的顯示。這可能是由小往大 (ascending) ?或是由大往小(descending)。在這種情況下,我們就可以運(yùn)用 ORDER BY 這個(gè)指令來(lái)達(dá)到我們的目的。語(yǔ)法為:
SELECT "欄位名" ?FROM "表格名 [WHERE "條件"] ORDER BY "欄位名" [ASC, DESC]?
9)函數(shù) 函數(shù)允許我們能夠?qū)@些數(shù)字的型態(tài)存在的行或者列做運(yùn)算,包括 AVG (平均)、COUNT (計(jì)數(shù))、MAX (最大值)、MIN (最小值)、SUM (總合)。語(yǔ)法為:
SELECT "函數(shù)名"("欄位名") FROM "表格名" ?
10)COUNT 這個(gè)關(guān)鍵詞能夠幫我我們統(tǒng)計(jì)有多少筆資料被選出來(lái),語(yǔ)法為:
SELECT COUNT("欄位名") FROM "表格名"
11)GROUP BY GROUP BY 語(yǔ)句用于結(jié)合合計(jì)函數(shù),根據(jù)一個(gè)或多個(gè)列對(duì)結(jié)果集進(jìn)行分組。語(yǔ)法為:
SELECT "欄位1", SUM("欄位2") ?FROM "表格名" ?GROUP BY "欄位1"?
12)HAVING 該關(guān)鍵詞可以幫助我們對(duì)函數(shù)產(chǎn)生的值來(lái)設(shè)定條件。語(yǔ)法為:
SELECT "欄位1", SUM("欄位2") ?FROM "表格名" ?GROUP BY "欄位1" ?HAVING (函數(shù)條件) ?
13)ALIAS 我們可以通過(guò)ALIAS為列名稱和表名稱指定別名,語(yǔ)法為:
SELECT "表格別名"."欄位1" "欄位別名" ?FROM "表格名" "表格別名" ?

下面為一個(gè)例子,通過(guò)它我們應(yīng)該能很好地掌握以上關(guān)鍵詞的使用方法。


Student(S#,Sname,Sage,Ssex) 學(xué)生表
Course(C#,Cname,T#) 課程表
SC(S#,C#,score) 成績(jī)表
Teacher(T#,Tname) 教師表


問(wèn)題:
1、查詢“001”課程比“002”課程成績(jī)高的所有學(xué)生的學(xué)號(hào);
select a.S#
from (select s#,score from SC where C#=’001′) a,
(select s#,score from SC where C#=’002′) b
where a.score>b.score and a.s#=b.s#;

2、查詢平均成績(jī)大于60分的同學(xué)的學(xué)號(hào)和平均成績(jī);
select S#,avg(score)
from sc
group by S# having avg(score) >60;

3、查詢所有同學(xué)的學(xué)號(hào)、姓名、選課數(shù)、總成績(jī);
select Student.S#,Student.Sname,count(SC.C#),sum(score)
from Student left Outer join SC on Student.S#=SC.S#
group by Student.S#,Sname

4、查詢姓“李”的老師的個(gè)數(shù);
select count(distinct(Tname))
from Teacher
where Tname like ‘李%’;

5、查詢沒(méi)學(xué)過(guò)“葉平”老師課的同學(xué)的學(xué)號(hào)、姓名;
select Student.S#,Student.Sname
from Student
where S# not in (select distinct( SC.S#) from SC,Course,Teacher where SC.C#=Course.C# and Teacher.T#=Course.T# and Teacher.Tname=’葉平’);

6、查詢學(xué)過(guò)“001”并且也學(xué)過(guò)編號(hào)“002”課程的同學(xué)的學(xué)號(hào)、姓名;
select Student.S#,Student.Sname
from Student,SC

where Student.S#=SC.S# and SC.C#=’001′and exists( Select * from SC as SC_2 where SC_2.S#=SC.S# and SC_2.C#=’002′);


7、查詢學(xué)過(guò)“葉平”老師所教的所有課的同學(xué)的學(xué)號(hào)、姓名;
select S#,Sname
from Student
where S# in
(select S#
from SC ,Course ,Teacher
where SC.C#=Course.C# and Teacher.T#=Course.T# and Teacher.Tname=’葉平’ group by S# having count(SC.C#)=(select count(C#) from Course,Teacher where Teacher.T#=Course.T# and Tname=’葉平’));

8、查詢所有課程成績(jī)小于60分的同學(xué)的學(xué)號(hào)、姓名;
select S#,Sname
from Student
where S# not in (select Student.S# from Student,SC where S.S#=SC.S# and score>60);

9、查詢沒(méi)有學(xué)全所有課的同學(xué)的學(xué)號(hào)、姓名;
select Student.S#,Student.Sname
from Student,SC
where Student.S#=SC.S#
group by Student.S#,Student.Sname having count(C#) <(select count(C#) from Course);

10、查詢至少有一門(mén)課與學(xué)號(hào)為“1001”的同學(xué)所學(xué)相同的同學(xué)的學(xué)號(hào)和姓名;
select S#,Sname
from Student,SC
where Student.S#=SC.S# and C# in (select C# from SC where S#='1001');

11、刪除學(xué)習(xí)“葉平”老師課的SC表記錄;
Delect SC
from course ,Teacher
where Course.C#=SC.C# and Course.T#= Teacher.T# and Tname='葉平';

12、查詢各科成績(jī)最高和最低的分:以如下形式顯示:課程ID,最高分,最低分
SELECT L.C# 課程ID,L.score 最高分,R.score 最低分
FROM SC L ,SC R
WHERE L.C# = R.C#
and
L.score = (SELECT MAX(IL.score)
FROM SC IL,Student IM
WHERE IL.C# = L.C# and IM.S#=IL.S#
GROUP BY IL.C#)
and
R.Score = (SELECT MIN(IR.score)
FROM SC IR
WHERE IR.C# = R.C#
GROUP BY IR.C# );

13、查詢學(xué)生平均成績(jī)及其名次
SELECT 1+(SELECT COUNT( distinct 平均成績(jī))
FROM (SELECT S#,AVG(score) 平均成績(jī)
FROM SC
GROUP BY S# ) T1
WHERE 平均成績(jī) > T2.平均成績(jī)) 名次, S# 學(xué)生學(xué)號(hào),平均成績(jī)
FROM (SELECT S#,AVG(score) 平均成績(jī) FROM SC GROUP BY S# ) T2
ORDER BY 平均成績(jī) desc;

14、查詢各科成績(jī)前三名的記錄:(不考慮成績(jī)并列情況)
SELECT t1.S# as 學(xué)生ID,t1.C# as 課程ID,Score as 分?jǐn)?shù)
FROM SC t1
WHERE score IN (SELECT TOP 3 score
FROM SC
WHERE t1.C#= C#
ORDER BY score DESC)
ORDER BY t1.C#;

15、查詢每門(mén)功成績(jī)最好的前兩名
SELECT t1.S# as 學(xué)生ID,t1.C# as 課程ID,Score as 分?jǐn)?shù)
FROM SC t1
WHERE score IN (SELECT TOP 2 score
FROM SC
WHERE t1.C#= C#
ORDER BY score DESC )

ORDER BY t1.C#;



原文網(wǎng)址鏈接:數(shù)據(jù)庫(kù)及SQL----常用知識(shí)點(diǎn)總結(jié)



本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車(chē)的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車(chē)技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車(chē)工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車(chē)。 SODA V工具的開(kāi)發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車(chē) 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開(kāi)幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉