當前位置:首頁 » 操作系統 » 資料庫及其應用題庫

資料庫及其應用題庫

發布時間: 2023-06-26 12:53:11

㈠ 求資料庫應用題

資料庫語言的目標

要說清這個目標,先要理解資料庫是做什麼的。

資料庫這個軟體,名字中有個「庫」字,會讓人覺得它主要是為了存儲的。其實不然,資料庫實現的重要功能有兩條:計算、事務!也就是我們常說的 OLAP 和 OLTP,資料庫的存儲都是為這兩件事服務的,單純的存儲並不是資料庫的目標。

我們知道,sql 是目前資料庫的主流語言。那麼,用 SQL 做這兩件事是不是很方便呢?

事務類功能主要解決數據在寫入和讀出時要保持的一致性,實現這件事的難度並不小,但對於應用程序的介面卻非常簡單,用於操縱資料庫讀寫的代碼也很簡單。如果假定目前關系資料庫的邏輯存儲模式是合理的(也就是用數據表和記錄來存儲數據,其合理性與否是另一個復雜問題,不在這里展開了),那麼 SQL 在描述事務類功能時沒什麼大問題,因為並不需要描述多復雜的動作,復雜性都在資料庫內部解決了。

但計算類功能卻不一樣了。

這里說的計算是個更廣泛的概念,並不只是簡單的加加減減,查找、關聯都可以看成是某種計算。

什麼樣的計算體系才算好呢?

還是兩條:寫著簡單、跑得快。

寫著簡單,很好理解,就是讓程序員很快能寫出來代碼來,這樣單位時間內可以完成更多的工作;跑得快就更容易理解,我們當然希望更短時間內獲得計算結果。

其實 SQL 中的 Q 就是查詢的意思,發明它的初衷主要是為了做查詢(也就是計算),這才是 SQL 的主要目標。然而,SQL 在描述計算任務時,卻很難說是很勝任的。

SQL為什麼不行

先看寫著簡單的問題。

SQL 寫出來很象英語,有些查詢可以當英語來讀和寫(網上多得很,就不舉例了),這應當算是滿足寫著簡單這一條了吧。

且慢!我們在教科書上看到的 SQL 經常只有兩三行,這些 SQL 確實算是寫著簡單的,但如果我們嘗試一些稍復雜化的問題呢?

這是一個其實還不算很復雜的例子:計算一支股票最長連續上漲了多少天?用 SQL 寫出來是這樣的:


  • selectmax(consecutive_day)from(selectcount(*) (consecutive_dayfrom(selectsum(rise_mark) over(orderbytrade_date) days_no_gainfrom(selecttrade_date,case when closing_price>lag(closing_price) over(order by trade_date)then 0 else 1 END rise_markfrom stock_price ) )group by days\_no\_gain)

  • 這個語句的工作原理就不解釋了,反正有點繞,同學們可以自己嘗試一下。

    這是潤乾公司的招聘考題,通過率不足 20%;因為太難,後來被改成另一種方式:把 SQL 語句寫出來讓應聘者解釋它在算什麼,通過率依然不高。

    這說明什麼?說明情況稍有復雜,SQL 就變得即難懂又難寫!

    再看跑得快的問題,還是一個經常拿出來的簡單例子:1 億條數據中取前 10 名。這個任務用 SQL 寫出來並不復雜:

  • SELECTTOP 10x FROMT ORDERBYx DESC

  • 但是,這個語句對應的執行邏輯是先對所有數據進行大排序,然後再取出前 10 個,後面的不要了。大家知道,排序是一個很慢的動作,會多次遍歷數據,如果數據量大到內存裝不下,那還需要外存做緩存,性能還會進一步急劇下降。如果嚴格按這句 SQL 體現的邏輯去執行,這個運算無論如何是跑不快的。然而,很多程序員都知道這個運算並不需要大排序,也用不著外存緩存,一次遍歷用一點點內存就可以完成,也就是存在更高性能的演算法。可惜的是,用 SQL 卻寫不出這樣的演算法,只能寄希望於資料庫的優化器足夠聰明,能把這句 SQL 轉換成高性能演算法執行,但情況復雜時資料庫的優化器也未必靠譜。

    看樣子,SQL 在這兩方面做得都不夠好。這兩個並不復雜的問題都是這樣,現實中數千行的 SQL 代碼中,這種難寫且跑不快的情況比比皆是。

    為什麼 SQL 不行呢?

    要回答這個問題,我們要分析一下用程序代碼實現計算到底是在干什麼。

    本質上講,編寫程序的過程,就是把解決問題的思路翻譯成計算機可執行的精確化形式語言的過程。舉例來說,就象小學生解應用題,分析問題想出解法之後,還要列出四則運算表達式。用程序計算也是一樣,不僅要想出解決問題的方法,還要把解法翻譯成計算機能理解執行的動作才算完成。

    用於描述計算方法的形式語言,其核心在於所採用的代數體系。所謂代數體系,簡單說就是一些數據類型和其上的運算規則,比如小學學到的算術,就是整數和加減乘除運算。有了這套東西,我們就能把想做的運算用這個代數體系約定的符號寫出來,也就是代碼,然後計算機就可以執行了。

    如果這個代數體系設計時考慮不周到,提供的數據類型和運算不方便,那就會導致描述演算法非常困難。這時候會發生一個怪現象:翻譯解法到代碼的難度遠遠超過解決問題本身。

    舉個例子,我們從小學慣用阿拉伯數字做日常計算,做加減乘除都很方便,所有人都天經地義認為數值運算就該是這樣的。其實未必!估計很多人都知道還有一種叫做羅馬數字的東西,你知道用羅馬數字該怎麼做加減乘除嗎?古羅馬人又是如何上街買菜的?

    代碼難寫很大程度是代數的問題。

    再看跑不快的原因。

    軟體沒辦法改變硬體的性能,CPU 和硬碟該多快就是多快。不過,我們可以設計出低復雜度的演算法,也就是計算量更小的演算法,這樣計算機執行的動作變少,自然也就會快了。但是,光想出演算法還不夠,還要把這個演算法用某種形式語言寫得出來才行,否則計算機不會執行。而且,寫起來還要比較簡單,都要寫很長很麻煩,也沒有人會去用。所以呢,對於程序來講,跑得快和寫著簡單其實是同一個問題,背後還是這個形式語言採用的代數的問題。如果這個代數不好,就會導致高性能演算法很難實現甚至實現不了,也就沒辦法跑得快了。就象上面說的,用 SQL 寫不出我們期望的小內存單次遍歷演算法,能不能跑得快就只能寄希望於優化器。

    我們再做個類比:

    上過小學的同學大概都知道高斯計算 1+2+3+…+100 的小故事。普通人就是一步步地硬加 100 次,高斯小朋友很聰明,發現 1+100=101、2+99=101、…、50+51=101,結果是 50 乘 101,很快算完回家午飯了。

    聽過這個故事,我們都會感慨高斯很聰明,能想到這么巧妙的辦法,即簡單又迅速。這沒有錯,但是,大家容易忽略一點:在高斯的時代,人類的算術體系(也是一個代數)中已經有了乘法!象前面所說,我們從小學習四則運算,會覺得乘法是理所當然的,然而並不是!乘法是後於加法被發明出來的。如果高斯的年代還沒有乘法,即使有聰明的高斯,也沒辦法快速解決這個問題。

    目前主流資料庫是關系資料庫,之所以這么叫,是因為它的數學基礎被稱為關系代數,SQL 也就是關系代數理論上發展出來的形式語言。

    現在我們能回答,為什麼 SQL 在期望的兩個方面做得不夠好?問題出在關系代數上,關系代數就像一個只有加法還沒發明乘法的算術體系,很多事做不好是必然的。

    關系代數已經發明五十年了,五十年前的應用需求以及硬體環境,和今天比的差異是很巨大了,繼續延用五十年前的理論來解決今天的問題,聽著就感覺太陳舊了?然而現實就是這樣,由於存量用戶太多,而且也還沒有成熟的新技術出現,基於關系代數的 SQL,今天仍然是最重要的資料庫語言。雖然這幾十年來也有一些改進完善,但根子並沒有變,面對當代的復雜需求和硬體環境,SQL 不勝任也是情理之中的事。

    而且,不幸的是,這個問題是理論上的,在工程上無論如何優化也無濟於事,只能有限改善,不能根除。不過,絕大部分的資料庫開發者並不會想到這一層,或者說為了照顧存量用戶的兼容性,也沒打算想到這一層。於是,主流資料庫界一直在這個圈圈裡打轉轉。

    SPL為什麼能行

    那麼該怎樣讓計算寫著更簡單、跑得更快呢?

    發明新的代數!有「乘法」的代數。在其基礎上再設計新的語言。

    這就是 SPL 的由來。它的理論基礎不再是關系代數,稱為離散數據集。基於這個新代數設計的形式語言,起名為SPL(Structured Process Language)。

    SPL 針對 SQL 的不足(更確切地說法是,離散數據集針對關系代數的各種缺陷)進行了革新。SPL 重新定義了並擴展許多結構化數據中的運算,增加了離散性、強化了有序計算、實現了徹底的集合化、支持對象引用、提倡分步運算。

    限於篇幅,這里不能介紹 SPL(離散數據集)的全貌。我們在這里列舉 SPL(離散數據集)針對 SQL(關系代數)的部分差異化改進:

    游離記錄

    離散數據集中的記錄是一種基本數據類型,它可以不依賴於數據表而獨立存在。數據表是記錄構成的集合,而構成某個數據表的記錄還可以用於構成其它數據表。比如過濾運算就是用原數據表中滿足條件的記錄構成新數據表,這樣,無論空間佔用還是運算性能都更有優勢。

    關系代數沒有可運算的數據類型來表示記錄,單記錄實際上是只有一行的數據表,不同數據表中的記錄也不能共享。比如,過濾運算時會復制出新記錄來構成新數據表,空間和時間成本都變大。

    特別地,因為有游離記錄,離散數據集允許記錄的欄位取值是某個記錄,這樣可以更方便地實現外鍵連接。

    有序性

    關系代數是基於無序集合設計的,集合成員沒有序號的概念,也沒有提供定位計算以及相鄰引用的機制。SQL 實踐時在工程上做了一些局部完善,使得現代 SQL 能方便地進行一部分有序運算。

    離散數據集中的集合是有序的,集合成員都有序號的概念,可以用序號訪問成員,並定義了定位運算以返回成員在集合中的序號。離散數據集提供了符號以在集合運算中實現相鄰引用,並支持針對集合中某個序號位置進行計算。

    有序運算很常見,卻一直是 SQL 的困難問題,即使在有了窗口函數後仍然很繁瑣。SPL 則大大改善了這個局面,前面那個股票上漲的例子就能說明問題。

    離散性與集合化

    關系代數中定義了豐富的集合運算,即能將集合作為整體參加運算,比如聚合、分組等。這是 SQL 比 Java 等高級語言更為方便的地方。

    但關系代數的離散性非常差,沒有游離記錄。而 Java 等高級語言在這方面則沒有問題。

    離散數據集則相當於將離散性和集合化結合起來了,既有集合數據類型及相關的運算,也有集合成員游離在集合之外單獨運算或再組成其它集合。可以說 SPL 集中了 SQL 和 Java 兩者的優勢。

    有序運算是典型的離散性與集合化的結合場景。次序的概念只有在集合中才有意義,單個成員無所謂次序,這里體現了集合化;而有序計算又需要針對某個成員及其相鄰成員進行計算,需要離散性。

    在離散性的支持下才能獲得更徹底的集合化,才能解決諸如有序計算類型的問題。

    離散數據集是即有離散性又有集合化的代數體系,關系代數只有集合化。

    分組理解

    分組運算的本意是將一個大集合按某種規則拆成若干個子集合,關系代數中沒有數據類型能夠表示集合的集合,於是強迫在分組後做聚合運算。

    離散數據集中允許集合的集合,可以表示合理的分組運算結果,分組和分組後的聚合被拆分成相互獨立的兩步運算,這樣可以針對分組子集再進行更復雜的運算。

    關系代數中只有一種等值分組,即按分組鍵值劃分集合,等值分組是個完全劃分。

    離散數據集認為任何拆分大集合的方法都是分組運算,除了常規的等值分組外,還提供了與有序性結合的有序分組,以及可能得到不完全劃分結果的對位分組。

    聚合理解

    關系代數中沒有顯式的集合數據類型,聚合計算的結果都是單值,分組後的聚合運算也是這樣,只有 SUM、COUNT、MAX、MIN 等幾種。特別地,關系代數無法把 TOPN 運算看成是聚合,針對全集的 TOPN 只能在輸出結果集時排序後取前 N 條,而針對分組子集則很難做到 TOPN,需要轉變思路拼出序號才能完成。

    離散數據集提倡普遍集合,聚合運算的結果不一定是單值,仍然可能是個集合。在離散數據集中,TOPN 運算和 SUM、COUNT 這些是地位等同的,即可以針對全集也可以針對分組子集。

    SPL 把 TOPN 理解成聚合運算後,在工程實現時還可以避免全量數據的排序,從而獲得高性能。而 SQL 的 TOPN 總是伴隨 ORDER BY 動作,理論上需要大排序才能實現,需要寄希望於資料庫在工程實現時做優化。

    有序支持的高性能

    離散數據集特別強調有序集合,利用有序的特徵可以實施很多高性能演算法。這是基於無序集合的關系代數無能為力的,只能寄希望於工程上的優化。

    下面是部分利用有序特徵後可以實施的低復雜度運算:

    1) 數據表對主鍵有序,相當於天然有一個索引。對鍵欄位的過濾經常可以快速定位,以減少外存遍歷量。隨機按鍵值取數時也可以用二分法定位,在同時針對多個鍵值取數時還能重復利用索引信息。

    2) 通常的分組運算是用 HASH 演算法實現的,如果我們確定地知道數據對分組鍵值有序,則可以只做相鄰對比,避免計算 HASH 值,也不會有 HASH 沖突的問題,而且非常容易並行。

    3) 數據表對鍵有序,兩個大表之間對位連接可以執行更高性能的歸並演算法,只要對數據遍歷一次,不必緩存,對內存佔用很小;而傳統的 HASH 值分堆方法不僅比較復雜度高,需要較大內存並做外部緩存,還可能因 HASH 函數不當而造成二次 HASH 再緩存。

    4) 大表作為外鍵表的連接。事實表小時,可以利用外鍵表有序,快速從中取出關聯鍵值對應的數據實現連接,不需要做 HASH 分堆動作。事實表也很大時,可以將外鍵表用分位點分成多個邏輯段,再將事實表按邏輯段進行分堆,這樣只需要對一個表做分堆,而且分堆過程中不會出現 HASH 分堆時的可能出現的二次分堆,計算復雜度能大幅下降。

    其中 3 和 4 利用了離散數據集對連接運算的改造,如果仍然延用關系代數的定義(可能產生多對多),則很難實現這種低復雜的演算法。

    除了理論上的差異, SPL 還有許多工程層面的優勢,比如更易於編寫並行代碼、大內存預關聯提高外鍵連接性能等、特有的列存機制以支持隨意分段並行等。

    再把前面的問題用 SPL 重寫一遍有個直接感受。

    一支股票最長連續上漲多少天:

  • stock_price.sort(trade_date).group@o(closing_price

  • 計算思路和前面的 SQL 相同,但因為引入了有序性後,表達起來容易多了,不再繞了。

    1 億條數據中取前 10 名:

  • T.groups(;top(-10,x))

  • SPL 有更豐富的集合數據類型,容易描述單次遍歷上實施簡單聚合的高效演算法,不涉及大排序動作。

    這里還有更多 SPL 代碼以體現其思路及大數據演算法:

    重磅!開源SPL交流群成立了

    簡單好用的SPL開源啦!

    為了給感興趣的小夥伴們提供一個相互交流的平台,

    特地開通了交流群(群完全免費,不廣告不賣課)

    需要進群的朋友,可長按掃描下方二維碼

㈡ 跪求!緊急!資料庫原理及應用的試題

一:
(1)select 書名,定價 from 圖書 where 定價 = (select max(定價) from 圖書)
(2)查詢存儲有書名為資料庫系統基礎的圖書管的管名.
二:
(1)select S#,SNAME from S where AGE>22
(2)select CNAME,TEACHER from C where c# in ( select c# from SC where S# = 10001)
(3)select SNAME from S where sex='女' and s# in (select S# from SC where C# in (select C# fron C where teacher = '王老師'))
不能實現的話,留言

㈢ 資料庫原理及應用 判斷題

1 對 2 錯(多表聯合查詢) 3 錯 (包含關系,不是真包含)4 對 5 對 6 錯(不是越多越好) 7 錯(是虛擬表) 8 錯(Count(*) 返回表中所有記錄的總和,包含有可能返回式真的) 9 錯 (可以取空)10 錯

㈣ 資料庫原理及應用基礎的常見類型題

1.B 2.C 3.B 4.C 5.D 6.C 7.C 8.D 9.C 10.A
11.A 12.A 13.A - 不知道14。乙evogue2006 - 10 - 24 11點47分01秒15?16.A 17.B 18.A 19.D 20.C

試述事務的概念和事務的四個特性。
A:
事務是一個用戶定義的資料庫操作序列,這些操作要麼全部做或不做的整體,是一個不可分割的工作單元。
事務有四個特點:原子性(原子性),一致性(一致性),隔離(隔離)和持久性(Durability)。這四個特點也被稱為ACID屬性。
原子性:事務資料庫的邏輯工作單元,該交易包括所有的操作,無論是做還是不做。
一致性:事務執行的結果必須更改資料庫從一個一致狀態轉換到另一個一致的狀態。
隔離:一個事務的執行不能被其他事務的干擾。一個事務內的操作和使用其他並發事務的數據分離出來,並發執行的個別交易不能互相干擾。
持續性:持續性的,也被稱為永久(持久性),指的到交易提交其數據存儲在資料庫中的變化應該是永久性的。接下來的操作或故障不應該有任何影響其執行結果。
2。為什麼事務非正常時間的推移,會影響資料庫中數據的正確性,舉了一個例子。
A:
事務的執行結果必須更改資料庫從一個一致狀態轉換到另一個一致狀態。如果出現故障的資料庫系統的操作,一些尚未完成的交易被迫中斷,這些未完成的交易的一部分已被寫入到物理資料庫對資料庫所做的更改,然後在資料庫中不正確的狀態,或者是不一致的狀態。
如一個工廠的庫存管理系統,它是必要的量Q的某些部分從倉庫1倉庫2個存儲。
你可以定義一個事務T,T包括兩個操作; Q1 = Q1-Q,Q2 = Q2 + Q. T改變的終??止,只有當第一個操作,資料庫是不一致Q庫存沒有理由。

3。資料庫中為什麼要有恢復子系統?它的功能是什麼?
A:
是不可避免的,因為計算機系統的硬體故障,軟體錯誤,操作錯誤和惡意破壞所造成的這些故障從正在運行的事務中發生非正常中斷,影響資料庫中的數據正確性,而破壞了資料庫中,因此,在資料庫中的數據的全部或部分損失,因此必須有一個恢復子系統。功能
恢復子系統:資料庫從錯誤狀態恢復到一個已知的良好狀態(也被稱為一致的狀態或完整狀態)。

4。在資料庫中可能出現的故障運行幾類?什麼故障影響正常執行的交易嗎?什麼故障破壞資料庫中的數據?
A:資料庫系統的各種可能發生的故障大致可分為如下幾類:
(1)內部交易失敗;
(2)系統故障; />(3)介質故障;
(4)計算機病毒。的
交易失敗,系統故障和介質故障影響事務的正常執行;介質故障和計算機病毒破壞的數據
庫。

5。根據回收技術?
A:
數據轉儲和登錄日誌文件是資料庫恢復的基本技術。
當一個故障在系統運行過程中,轉儲資料庫的日誌文件,你可以將資料庫恢復到一致狀態,在發生故障之前的備份副本。

6。資料庫的轉儲的意義是什麼?各種數據轉儲方法的比較。
答案:
數據轉儲是基本的技術,在恢復的資料庫。所謂的轉儲資料庫DBA定期復制到磁帶或其他磁碟保存。可以重新載入資料庫破壞的資料庫的備份副本恢復時的狀態轉儲。
靜態轉儲:轉儲系統操作運行的事務。靜態轉儲,但必須等待用戶交易結束之前運行。同樣,新的事務必須等待執行轉儲結束。顯然,這將減少資料庫的可用性。
動態轉儲:轉儲期間允許資料庫訪問或。動態的轉儲可以克服靜態轉儲的缺點,它並不需要等待正在運行的用戶交易的結束,也不會影響新事務的操作。然而,備份的數據副本結束時的轉儲和不能保證正確和有效的。 ,因為轉儲運行在交易過程中可能會一些數據,備份的數據副本是不符合版本的資料庫。
為此,我們必須活動期間注冊使用mp transaction資料庫,以創建一個日誌文件(日誌文件)。在這樣的日誌文件的備份副本可以得到正確的資料庫狀態的時刻。
轉儲海量轉儲和增量轉儲可以分為兩種方式。
大規模傾倒每一個轉儲所有資料庫。增量轉儲每次更新只轉儲上次轉儲數據。從恢復的角度來看,大量的轉儲的備份副本恢復一般更容易。如果該資料庫,事務處理,是非常頻繁,增量轉儲方式更實用,更有效。

7。日誌文件?為什麼要建立一個日誌文件?
答案:
(1)日誌文件是用來記錄交易文件對資料庫的更新操作。
(2)建立的日誌文件的目的:交易故障恢復系統故障恢復;協助媒體恢復的備份副本。

登記日誌文件為什麼要寫入日誌文件後,寫入到資料庫?
A:
的數據寫入到資料庫中,兩種不同的操作,這個後的日誌記錄被寫入到日誌文件中。這兩個操作之間可能發生了故障,即這兩個寫操作只完成了。
先寫一個資料庫,而不是變化的運行記錄中,小數點後不能被恢復這一。如果你寫的日誌,但沒有資料庫,恢復執行UNDO操作,不影響資料庫的正確性。所以一定要確保你寫的日誌文件,日誌記錄寫入到日誌文件中,然後寫入到資料庫的變化。

9,測試是針對不同的故障恢復策略和方法。 (也就是說,如何進行交易系統故障恢復故障恢復介質恢復?)
A:
交易故障恢復:
事務故??障的恢復是自動完成的DBMS ,是對用戶透明。
DBMS執行恢復步驟:
(1)反向掃描文件日誌(即從最後一次掃描日誌文件),則該事務更新操作。
(2)事務的更新操作執行逆操作。關於日誌記錄更新前值嗎?寫入到資料庫中。
(3)反向掃描日誌文件,做同樣的。
(4)?下去,直到你讀的開始標記本次交易,交易失敗恢復完整。
A:
系統故障恢復:
系統出現故障可能會導致資料庫處於不一致的狀態:
首先,沒有完成的交易資料庫的更新可能已被寫入到資料庫中;
已提交的交易資料庫的更新可能還留在緩沖區中,並沒有寫入到資料庫。
恢復操作(UNDO)的未竟事業出現故障,重做(REDO)已完成的交易。
恢復步驟:
(1)正向掃描日誌文件,以確定該交易已提交在故障發生前隊列中(REDO隊列的)和未完成的事務隊列(UNDO隊列)。
(2)UNDO處理隊列中的個別交易的。
UNDO處理方法是反向掃描日誌文件,更新操作執行相反的操作,每一個UNDO事務迫在眉睫的「價值」(前映像)記錄寫入到資料庫中,然後再更新。
(3)治療重做重做隊列事務。
REDO處理方法:正向掃描日誌文件,每個REDO事務重新執行操作的日誌文件登記。即將推出的日誌記錄寫入到資料庫中的更新值「(後映像)。
解析度:
步驟(1)如何確定的REDO隊列和UNDO隊列,請考慮一下吧。 BR />的演算法如下:
1)創建兩個事務隊列:
·UNDO-LIST:需要執行undo操作的事務集;
·REDO-LIST:需要執行重做操作事務集;
事務隊列最初是空的。
)從日誌文件頭,正向掃描日誌文件
是否有新的開始(遇到BEGIN TRANSACTION)交易鈦,鈦暫時放入UNDO-LIST隊列;
·如果提交的事務(遇到結束事務)TJ TJ從隊列undo-list中的REDO-LIST隊列;

直到最後的日誌文件A:
介質故障恢復:
介質故障是最嚴重的故障。
恢復方法是重裝資料庫,然後重做已完成交易的過程是:
(1 )DBA裝入最新的資料庫備份(從故障時間最近的轉儲副本),將資料庫恢復到一致的狀態轉儲。
(2)DBA的日誌文件的副本載入轉儲結束時間
(3)DBA啟動系統恢復命令來完成還原的DBMS的功能,重做已完成的交易。

解析
1)我們假設靜態轉儲的步驟(1)安裝資料庫的備份副本。
2)如果您使用的是靜態和動態轉儲步驟(1)將資料庫的備份副本是不夠的,需要同時載入的副本日誌文件的轉儲開始治療後的時間,以獲得正確的資料庫的備份副本。
3)(2)步演算法來重做已完成的交易:
正向掃描日誌文件,以找出識別在故障發生之前提交的交易中,計入的重量隊列
B。再次向前掃描日誌文件,重做重做隊列中的所有交易。即將推出的日誌記錄寫入到資料庫中的更新值。
>
10。檢查點恢復技術的優勢是什麼?
A:
測井技術進行資料庫恢復,恢復子系統必須搜索日誌,以確定哪些事務需要重做,哪些事務需要。一般來說,你需要檢查所有的記錄。這樣做有兩個問題:
首先,搜索整個日誌將花費大量的時間。
REDO處理的事務實際上寫的更新操作資料庫恢復子系統又執行這些操作,浪費了大量的時間。
檢查點技術,以解決這些問題。

11。師叔檢查點的恢復步驟。

①從啟動文件的最後一個檢查點記錄在日誌文件中的地址找到最後一個檢查點記錄在日誌文件中找到的地址。
②檢查站的檢查點記錄的建立時間列表中的所有運行的事務ACTIVE-LIST。
創建兩個事務隊列:
·UNDO-LIST:需要執行undo操作的事務集;
·REDO-LIST:集交易需要執行恢復操作;
ACTIVE-LIST暫時到UNDO-LIST隊列,REDO隊列暫時空。
③從檢查點開始正向掃描日誌文件
任何新的起點事務鈦undo-list中的Ti暫時放置在隊列中;
·如果提交事務TJ,TJ移動從UNDO-LIST隊列,REDO-LIST隊列,直到最後的日誌文件;
>④UNDO操作執行undo-list中的每一筆交易REDO-LIST中的每個事務執行REDO操作。

12。資料庫鏡像?使用?
答案:
資料庫鏡像是根據對DBA的要求,自動復制到另一個磁碟上的關鍵數據在整個資料庫或部分。每當主資料庫更新時,DBMS自動復制更新後的數據,在過去,DBMS自動保證鏡像的一致性
使用資料庫鏡像的數據和主數據。:
一個用於資料庫恢復。當介質故障的鏡像磁碟繼續提供使用的資料庫管理系統自動鏡像磁碟數據恢復的資料庫,並且不需要關閉系統並重新安裝該資料庫的副本。
二是要提高無故障,當用戶的數據加排他鎖來其他用戶可以讀取的數據的資料庫的可用性。鏡像資料庫,無需等待用戶釋放該鎖。

㈤ 資料庫原理及應用試題,高手幫忙

答案 (1)4 (2)3 (3)3 (4)4 (5)2 (6)3 (7)2 (8)4 (9)3 (10)4

㈥ 幾個資料庫技術及應用題目

單選題 1.下面哪個不是資料庫技術的主要特點 (D)
A.數據的結構化 B.數據的冗餘度小 C.較高的數據獨立性 D.程序的標准化
2.下列敘述正確的為(B)
A.關系中允許有重復的元組,也允許有重復的屬性名
B.關系中允許有重復的元組,不允許有重復的屬性名
C.關系中不允許有重復的元組,允許有重復的屬性名
D.關系中不允許有重復的元組,也不允許有重復的屬性名
3.如果兩個實體之間的聯系是1:M,則實現l:M聯系的方法是 (C)
A.將兩個實體轉換成一個關系
B.將兩個實體轉換的關系中,分別加入另一個關系的主碼。
C.將「1」端實體轉換的關系的主碼,放入「M」端實體轉換的關系中
D.將「M」端實體轉換的關系的主碼,放入「1」端實體轉換的關系中
4.SQL的標准庫函數COUNT,SUM,AVG,MAX與MIN等,不允許出現在下列語句 (D)中 A.SEIECT
B.HAVING C.GROUP……HAVING D.WHERE
填空題
1、班級和學生之間的聯系是(一對多)聯系,班級和班長之間的聯系是( 一對一 )聯系,學生和課程之間的
聯系是( 多對多 )聯系。
2、在資料庫的三級模式結構中,外模式有( 多個 ),模式和內模式只有( 一個 )。
3、DB的含義是( 資料庫 ),DBS的含義是( 資料庫系統 ),DBMS的含義是( 資料庫管理系統 )。
簡答題:
1、SQL Server中的語句許可權的含義及內容。
語句許可權主要指用戶是否具有許可權來執行某一語句,這些語句通常是一些具有管理性的操作,如創建資料庫、表、存儲過程、觸發器等。
2、SQL Server中資料庫和應用程序的安全機制有哪四種?
用戶標識與鑒別;存取控制;視圖機制;審計機制等
3、事務故障的恢復方法。
反向掃描日誌文件,查找該事務的更新操作;對該事務的更新操作進行逆向操作;繼續反向掃描日誌文件,查找該事務的其他更新操作並逆向操作;繼續處理,直到事務的開始標記。
4、E-R圖設計中,合並分E-R圖時可能產生的沖突及解決辦法。
沖突主要有三種:屬性沖突、命名沖突和結構沖突。屬性沖突需要靠各部門協商討論解決,但也非易事;命名沖突通常也像處理屬性沖突一樣,通過討論協商等行政手段進行解決;結構沖突主要是根據應用的語義對實體聯系
的類型進行綜合或調整。
5、事務的四個性質。
(1)原子性(Atomicity)
事務的原子性是指事務中包含的所有操作要麼全做,要麼全不做(all or none)。
(2) 一致性(Consistency)在事務開始以前,資料庫處於一致性的狀態,事務結束後,資料庫也必須處於一致性狀態。 事務應該把資料庫從一個一致埋運性狀態轉換到另外一個一致性狀態。
(3) 隔離性(Isolation)事務隔離性要求系統必須保證事務不受其他並發執行的事務的影響,也即要達到這樣一種效果:對於任何一對事務T1 和 T2,在事務 T1 看來,T2 要麼在 T1 開始之前已經結束,要麼在 T1 完成之
後才開始執行。這樣,每個事務都感覺不到系統中有其他事務在並發地執行。
(4)持久性(Durability)一個事務一旦成功源液唯完成,它對資料庫的改變必須是永久的,即便是在系統遇雹培到故障的情況下也不會丟失。數據的重要性決定了事務持久性的重要性。
6、有兩個實體集,若它們之間存在著一個M:N聯系、1:M聯系和1:1聯系,根據ER模型轉換成關系資料庫的規則,這個ER結構轉換成表的個數分別是多少?
M:N聯系:三個表,1:M聯系:兩個表,1:1聯系:兩個表
7、舉例說明參照完整性規則中對外碼有何要求。
若屬性F是基本關系R的外碼,它與基本關系S的主碼KS相對應,則對於R中每一元組在F上的值必須為:或者為空,或者等於S中某個元組的主碼值。比如:學生關系中每個元組的專業號屬性只能取下面兩類值:空值,表示未給該
學生分配專業;非空值,這時該值必須是專業關系中某個元組的專業號值。
8、舉例說明SQL Server中有哪3類觸發器。
INSERT觸發器、UPDATE觸發器和DELETE觸發器 (不再舉例)
SQL語言設計題
將借書日期在2006年4月以前的借閱記錄存入臨時的超期借閱表。
select * into #超期借閱表 from 借閱記錄表 where 日期<'2006-04-01'
設有如下三個關系模式,用SQL語句完成:
學生(學號,姓名,性別,年齡,專業)
課程(課程號,課程名,學分,先行課)
選課(學號,課程號,任課教師,成績)
1、創建電子商務專業學生成績視圖,屬性包括學號、姓名、課程名和成績。
create view '電子商務專業學生成績視圖' as
select s.學號,s.姓名,c.課程名,s_c.成績 from table 學生 s,課程 c,選課 s_c where
s.學號=s_c.學號 and s_c.課程號=c.課程號 and s.專業='電子商務'
2、創建計算機應用專業的學生成績統計視圖,屬性包括學號、姓名、總成績和平均成績。
create view 『計算機專業學生成績統計視圖』 as
select s.學號,s.姓名,sum(成績),avg(成績) from 學生 s,選課 s_c
where s.學號=s_c.學號 and 專業='計算機應用'
group by 學號,姓名
3、查詢沒有成績的學生的學號、姓名和課程號。
select distinct s.學號,s.姓名,s_c.課程號 from s,s_c where s.學號=s_c.學號 where s_c.成績=0
4、查詢選修課程號為001且成績為最好的學生的學號、姓名和成績
select s.學號,s.姓名,max(s_c.成績) from 學生 s,選課 s_c where s.學號=s_c.學號 and s_c.課程號=『001』
5、查詢至少選修了二門及二門以上課程的學生的學號
select 學號 from 選課表 group by 學號 having count(*)>=2

㈦ 《資料庫原理應用》簡答題(資料庫原理與應用試題及答案)

1.資料庫:是以某種文件結構存儲的一系列信息表,這種文件結構使您能夠訪問這些脊稿昌表、選擇表中的列、對表進行排序以及根據各種標准選擇行。資料庫通常有多個索引與這些表中的許多列相關聯,所以我們能盡可能快地訪問這些表。資料庫管理系統:隨著計算機在信息處理、情報檢索及各種管理系統的不斷發展,使用計算機時需要處理大量的數據、建立和檢索大量的表格,將這些數據和表格按一定的規律組織起來,以便處理更有效、檢索更迅速、用戶使用更方便,於是就出現了資料庫管理系統。資料庫和資料庫軟體就組成了資料庫管理系統。資料庫管理系統有各種類型,目前許多計算機包括微型機都配有資料庫管理系統,如FoxPro、Oracle、sqlserver等。

2.資料庫系統由資料庫(DB),數據管理系統(DBMS),應用程序,用戶和硬體敬飢組成,其中最關鍵的部分是資料庫.3.主關鍵字(Primarykey):用來唯一辨別表格里記錄的備選關鍵字。外來關鍵字(Foreignkey):表格內匹配同一表格或者另一表格里備選關鍵字的一個列或者一組列。外來鍵允許你將櫻扒一個表格里的記錄和另一個表格里的數據相關聯。有主外鍵關系,進行兩個表或多個表的關聯。

㈧ 資料庫應用題(在線等)

一、select salary from emp where ename = 'AAA';

二、select dname from dept where dno = (select dno from emp where eno = C1);

熱點內容
直播php 發布:2025-03-21 04:55:15 瀏覽:354
我的世界天坑伺服器ip 發布:2025-03-21 04:53:36 瀏覽:27
長虹電視如何查詢配置 發布:2025-03-21 04:51:02 瀏覽:477
平板緩存很慢 發布:2025-03-21 04:45:56 瀏覽:127
雲伺服器ssh 發布:2025-03-21 04:40:22 瀏覽:584
sql語句有if 發布:2025-03-21 04:19:27 瀏覽:975
踩小魚解壓 發布:2025-03-21 04:15:43 瀏覽:44
phpintl安裝 發布:2025-03-21 04:15:39 瀏覽:652
資料庫判斷重復數據 發布:2025-03-21 04:10:11 瀏覽:601
我的世界java電腦版好玩的伺服器 發布:2025-03-21 04:01:42 瀏覽:480