大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學習攻略 職業指南 參與開發面試的同學,數據庫開發面試題必看

參與開發面試的同學,數據庫開發面試題必看

更新時間:2022-12-28 11:22:52 來源:動力節點 瀏覽1411次

1.三個范式是什么

第一范式(1NF):數據庫表中的字段都是單一屬性的,不可再分。這個單一屬性由基本類型構成,包括整型、實數、字符型、邏輯型、日期型等。 第二范式(2NF):數據庫表中不存在非關鍵字段對任一候選關鍵字段的部分函數依賴(部分函數依賴指的是存在組合關鍵字中的某些字段決定非關鍵字段的情況),也即所有非關鍵字段都完全依賴于任意一組候選關鍵字。

第三范式(3NF):在第二范式的基礎上,數據表中如果不存在非關鍵字段對任一候選關鍵字段的傳遞函數依賴則符合第三范式。所謂傳遞函數依賴,指的是如果存在"A → B → C"的決定關系,則C傳遞函數依賴于A。因此,滿足第三范式的數據庫表應該不存在如下依賴關系: 關鍵字段 → 非關鍵字段x → 非關鍵字段y

上面的文字我們肯定是看不懂的,也不愿意看下去的。接下來我就總結一下:

首先要明確的是:滿足著第三范式,那么就一定滿足第二范式、滿足著第二范式就一定滿足第一范式

第一范式:字段是最小的的單元不可再分 學生信息組成學生信息表,有年齡、性別、學號等信息組成。這些字段都不可再分,所以它是滿足第一范式的

第二范式:滿足第一范式,表中的字段必須完全依賴于全部主鍵而非部分主鍵。 其他字段組成的這行記錄和主鍵表示的是同一個東西,而主鍵是唯一的,它們只需要依賴于主鍵,也就成了唯一的 學號為1024的同學,姓名為Java3y,年齡是22歲。姓名和年齡字段都依賴著學號主鍵。

第三范式:滿足第二范式,非主鍵外的所有字段必須互不依賴 就是數據只在一個地方存儲,不重復出現在多張表中,可以認為就是消除傳遞依賴 比如,我們大學分了很多系(中文系、英語系、計算機系……),這個系別管理表信息有以下字段組成:系編號,系主任,系簡介,系架構。那我們能不能在學生信息表添加系編號,系主任,系簡介,系架構字段呢?不行的,因為這樣就冗余了,非主鍵外的字段形成了依賴關系(依賴到學生信息表了)!正確的做法是:學生表就只能增加一個系編號字段。

2.什么是視圖?以及視圖的使用場景有哪些?

視圖是一種基于數據表的一種虛表

(1)視圖是一種虛表

(2)視圖建立在已有表的基礎上, 視圖賴以建立的這些表稱為基表

(3)向視圖提供數據內容的語句為 SELECT 語句,可以將視圖理解為存儲起來的 SELECT 語句

(4)視圖向用戶提供基表數據的另一種表現形式

(5)視圖沒有存儲真正的數據,真正的數據還是存儲在基表中

(6)程序員雖然操作的是視圖,但最終視圖還會轉成操作基表

(7)一個基表可以有0個或多個視圖

有的時候,我們可能只關系一張數據表中的某些字段,而另外的一些人只關系同一張數據表的某些字段...

那么把全部的字段都都顯示給他們看,這是不合理的。

我們應該做到:他們想看到什么樣的數據,我們就給他們什么樣的數據...一方面就能夠讓他們只關注自己的數據,另一方面,我們也保證數據表一些保密的數據不會泄露出來...

數據庫開發面試題

我們在查詢數據的時候,常常需要編寫非常長的SQL語句,幾乎每次都要寫很長很長....上面已經說了,視圖就是基于查詢的一種虛表,也就是說,視圖可以將查詢出來的數據進行封裝。。。那么我們在使用的時候就會變得非常方便...

值得注意的是:使用視圖可以讓我們專注與邏輯,但不提高查詢效率

3.索引是什么?有什么作用以及優缺點?

什么是索引【Index】

(1)是一種快速查詢表中內容的機制,類似于新華字典的目錄

(2)運用在表中某個些字段上,但存儲時,獨立于表之外

索引表把數據變成是有序的....

數據庫開發面試題

快速定位到硬盤中的數據文件...

數據庫開發面試題

4.什么是事務?

事務簡單來說:一個Session中所進行所有的操作,要么同時成功,要么同時失敗

ACID — 數據庫事務正確執行的四個基本要素

包含:原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)、持久性(Durability)。

一個支持事務(Transaction)中的數據庫系統,必需要具有這四種特性,否則在事務過程(Transaction processing)當中無法保證數據的正確性,交易過程極可能達不到交易。

舉個例子:A向B轉賬,轉賬這個流程中如果出現問題,事務可以讓數據恢復成原來一樣【A賬戶的錢沒變,B賬戶的錢也沒變】。

事例說明:

 
 
		/*
		* 我們來模擬A向B賬號轉賬的場景
		*   A和B賬戶都有1000塊,現在我讓A賬戶向B賬號轉500塊錢
		*
		* */
            //JDBC默認的情況下是關閉事務的,下面我們看看關閉事務去操作轉賬操作有什么問題
 
            //A賬戶減去500塊
            String sql = "UPDATE a SET money=money-500 ";
            preparedStatement = connection.prepareStatement(sql);
            preparedStatement.executeUpdate();
 
            //B賬戶多了500塊
            String sql2 = "UPDATE b SET money=money+500";
            preparedStatement = connection.prepareStatement(sql2);
            preparedStatement.executeUpdate();
 

從上面看,我們的確可以發現A向B轉賬,成功了。可是**如果A向B轉賬的過程中出現了問題呢?**下面模擬一下

 
			//A賬戶減去500塊
            String sql = "UPDATE a SET money=money-500 ";
            preparedStatement = connection.prepareStatement(sql);
            preparedStatement.executeUpdate();
			
			//這里模擬出現問題
            int a = 3 / 0;
 
 
            String sql2 = "UPDATE b SET money=money+500";
            preparedStatement = connection.prepareStatement(sql2);
            preparedStatement.executeUpdate();
 

顯然,上面代碼是會拋出異常的,我們再來查詢一下數據。A賬戶少了500塊錢,B賬戶的錢沒有增加。這明顯是不合理的。

我們可以通過事務來解決上面出現的問題

 
			//開啟事務,對數據的操作就不會立即生效。
            connection.setAutoCommit(false);
            
            //A賬戶減去500塊
            String sql = "UPDATE a SET money=money-500 ";
            preparedStatement = connection.prepareStatement(sql);
            preparedStatement.executeUpdate();
 
            //在轉賬過程中出現問題
            int a = 3 / 0;
 
            //B賬戶多500塊
            String sql2 = "UPDATE b SET money=money+500";
            preparedStatement = connection.prepareStatement(sql2);
            preparedStatement.executeUpdate();
            
            //如果程序能執行到這里,沒有拋出異常,我們就提交數據
            connection.commit();
 
			//關閉事務【自動提交】
			connection.setAutoCommit(true);
            
 
        } catch (SQLException e) {
            try {
                //如果出現了異常,就會進到這里來,我們就把事務回滾【將數據變成原來那樣】
                connection.rollback();
                
                //關閉事務【自動提交】
                connection.setAutoCommit(true);
            } catch (SQLException e1) {
                e1.printStackTrace();
            }
 

上面的程序也一樣拋出了異常,A賬戶錢沒有減少,B賬戶的錢也沒有增加。

注意:當Connection遇到一個未處理的SQLException時,系統會非正常退出,事務也會自動回滾,但如果程序捕獲到了異常,是需要在catch中顯式回滾事務的。

以上就是“參與開發面試的同學,數據庫開發面試題必看”,你能回答上來嗎?如果想要了解更多的Java面試題相關內容,可以關注動力節點Java官網。

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 亚洲麻豆视频 | 在线播放日本爽快片 | 天天插天天操天天射 | 成人免费久久精品国产片久久影院 | 四虎永久免费地址在线观看 | 国产欧美精品区一区二区三区 | 久久夜色精品国产噜噜小说 | 亚洲欧洲视频在线观看 | 国产农村精品一级毛片视频 | 婷婷色在线播放 | 日日拍夜夜嗷嗷叫视频 | 久草热在线 | 一及 片日本| 久久久久久久久免费影院 | 久久免费观看国产精品 | 天天夜天干天天爽 | 最近中文字幕无吗高清视频 | 韩国xxxx色视频在线观看 | 欧美性猛交ⅹxxx乱大交免费 | 四虎黄色影院 | 国产欧美中文字幕 | 国产视频在线观看福利 | 色综合久久中文字幕网 | 99久久影视 | 性欧美videos高清喷水 | 99热久这里都是精品小草 | 香蕉视频禁止18 | 国产精品国产亚洲精品不卡 | 免费在线不卡视频 | 狠狠躁日日躁人人爽 | 久久九九有精品国产23百花影院 | 五月婷网 | 久草在线观看首页 | 2021最新国产成人精品视频 | 久久久不卡国产精品一区二区 | 国产成人欧美 | 久久久久免费观看 | 免费观看一级欧美大 | 成人亚洲性情网站www在线观看 | 国产欧美在线观看视频 | xxxxbbbb欧美 |