資料庫範式的題目
① 鏁版嵁搴撳叧緋誨垎瑙d負BCNF鑼冨紡
鏍囧噯絳旀堟槸錛欰C錛孊C錛孋D銆
鍒嗘瀽濡備笅錛歊錛圓錛孊錛孋錛孌錛夊嚱鏁頒緷璧栦簬AB錛100c錛孋錛綝鍜孌錛続錛屾壘鍒拌繚鍙岯CNF鐨勪緷璧栭」錛堜笉闇瑕佹壘鍒板彸渚у氫釜灞炴х殑搴︽暟錛夊苟灝嗗叾鍒嗚В涓築CNF鍏崇郴鐨勮仛鍚堛
鍏崇郴錛欳鈫扐錛岀増鏈珻鈫扗錛孌鈫扐錛孉B鈫扗錛孉B鈫扖錛孉C鈫扗錛孊C鈫扗錛孊C鈫扐錛孊C鈫扗錛孊D鈫扐錛孊D鈫扖錛孋D鈫扐錛孉BC鈫扗錛孉BD鈫扖錛屾潈鍊糂CD鈫扐銆
榪濆弽BCNF錛欳鍒癆錛孋鍒癉錛孌鍒癆錛孉C鍒癉錛孋D鍒癆銆
鎵╁睍璧勬枡錛
BCNF鑼冨紡鍦3NF鐨勫熀紜涓婃秷闄や簡瀵逛富浠g爜瀛愰泦鐨勪緷璧栥
浠ヤ粨搴撶$悊鍏崇郴琛ㄤ負渚嬶細浠撳簱緙栧彿銆佸瓨鍌ㄩ」緙栧彿銆佺$悊鍛樼紪鍙峰拰鏁伴噺銆傞栧厛錛岃ヨ〃婊¤凍絎涓夌嶆爣鍑嗗艦寮忥紝榪欐剰鍛崇潃綆$悊鍛樺彧鍦ㄤ竴涓浠撳簱涓宸ヤ綔錛岃屼竴涓浠撳簱鍙浠ュ瓨鍌ㄥ氫釜欏圭洰銆傝〃涓鏈変互涓嬩緷璧栭」錛
(浠撳簱緙栧彿銆佸瓨鍌ㄩ」鐩緙栧彿)鈥斺>(綆$悊鍛樼紪鍙楓佹暟閲)
(綆$悊鍛樼紪鍙楓佸瓨鍌ㄩ」鐩緙栧彿)鈥斺>(浠撳簱緙栧彿銆佹暟閲)
浠庝笂闈㈢殑渚濊禆鍏崇郴涓錛屾垜浠鍙浠ョ煡閬擄紙浠撳簱鍙楓佸瓨鍌ㄩ」鍙鳳級鍜岋紙綆$悊鍛樺彿銆佸瓨鍌ㄩ」鍙鳳級鏄琛ㄥ叧緋諱腑鐨勫欓変唬鐮併
琛ㄤ腑鍞涓鐨勯潪閿瀛楁墊槸number錛屽畠絎﹀悎絎涓夌嶈寖寮忋備絾鐢變簬瀛樺湪浠ヤ笅鍐沖畾鍏崇郴錛
(浠撳簱鍙)鈥斺>(綆$悊鍛樺彿)
(綆$悊鍛樼紪鍙)鈥斺>(浠撳簱緙栧彿)
涔熷氨鏄璇達紝鏈変竴涓鍏抽敭瀛楁墊潵紜瀹氬叧閿瀛楁碉紝鎵浠ュ畠涓嶇﹀悎BCNF銆
瑙e喅鏂規堬細灝嗕粨搴撶$悊鍏崇郴琛ㄦ媶鍒嗘垚涓や釜鍏崇郴浠撳簱綆$悊琛錛堜粨搴撳彿銆佺$悊鍛樺彿錛夊拰浠撳簱琛錛堜粨搴撳彿銆佸瓨鍌ㄩ」鍙楓佹暟閲忥級浣挎暟鎹搴撹〃絎﹀悎BCNF錛屾秷闄ゅ垹闄ゅ紓甯搞佹彃鍏ュ紓甯稿拰鏇存柊寮傚父銆
(1) 試說明R不是2NF模式的理由。
存在部分依賴,所以R不是2NF
(2) 試把R分解成2NF模式集。
R1(ABC),R2(AD) 說明:消除部分依賴關系
2.(1)R存在傳遞依賴。
(2)R1(CB),R2(BA) 說明:消除傳遞依賴關系
③ 資料庫範式習題
下面是關於oracle的題目:===========================1. 解釋冷備份和熱備份的不同點以及各自的優點
解答:熱備份針對歸檔模式的資料庫,在資料庫仍舊處於工作狀態時進行備份。而冷備份指在資料庫關閉後,進行備份,適用於所有模式的資料庫。熱備份的優點在於當備份時,資料庫仍舊可以被使用並且可以將資料庫恢復到任意一個時間點。冷備份的優點在於它的備份和恢復操作相當簡單,並且由於冷備份的資料庫可以工作在非歸檔模式下,資料庫性能會比歸檔模式稍好。(因為不必將archive log寫入硬碟) 2. 你必須利用備份恢復資料庫,但是你沒有控制文件,該如何解決問題呢?
解答:重建控制文件,用帶backup control file 子句的recover 命令恢復資料庫。 3. 如何轉換init.ora到spfile?解答:使用create spfile from pfile 命令. 4. 解釋data block , extent 和 segment的區別(這里建議用英文術語)
解答:data block是資料庫中最小的邏輯存儲單元。當資料庫的對象需要更多的物理存儲空間時,連續的data block就組成了extent . 一個資料庫對象擁有的所有extents被稱為該對象的segment. 5. 給出兩個檢查表結構的方法
解答:1.DESCRIBE命令
2.DBMS_METADATA.GET_DDL 包 6. 怎樣查看資料庫引擎的報錯
解答:alert log. 7. 比較truncate和delete 命令
解答:兩者都可以用來刪除表中所有的記錄。區別在於:truncate是DDL操作,它移動HWK,不需要 rollback segment .而Delete是DML操作, 需要rollback segment 且花費較長時間. 8. 使用索引的理由
解答:快速訪問表中的data block 9. 給出在STAR SCHEMA中的兩種表及它們分別含有的數據
解答:Fact tables 和dimension tables. fact table 包含大量的主要的信息而 dimension tables 存放對fact table 某些屬性描述的信息 10. FACT Table上需要建立何種索引?
解答:點陣圖索引 (bitmap index) 11. 給出兩種相關約束?
解答:主鍵和外鍵 12. 如何在不影響子表的前提下,重建一個母表
解答:子表的外鍵強制實效,重建母表,激活外鍵 13. 解釋歸檔和非歸檔模式之間的不同和它們各自的優缺點
解答:歸檔模式是指你可以備份所有的資料庫 transactions並恢復到任意一個時間點。非歸檔模式則相反,不能恢復到任意一個時間點。但是非歸檔模式可以帶來資料庫性能上的少許提高. 14. 如何建立一個備份控制文件?
解答:Alter database backup control file to trace. 15. 給出資料庫正常啟動所經歷的幾種狀態 ?
解答:STARTUP NOMOUNT 資料庫實例啟動
STARTUP MOUNT 資料庫裝載
STARTUP OPEN 資料庫打開 16. 哪個column可以用來區別V$視圖和GV$視圖?
解答: INST_ID 指明集群環境中具體的 某個instance 。 17. 如何生成explain plan?
解答:運行utlxplan.sql. 建立plan 表
針對特定SQL語句,使用 explain plan set statement_id = 'tst1' into plan_table
運行utlxplp.sql 或 utlxpls.sql察看explain plan 18. 如何增加buffer cache的命中率?
解答:在資料庫較繁忙時,適用buffer cache advisory 工具,查詢v$db_cache_advice . 如果有必要更改,可以使用 alter system set db_cache_size 命令 19. ORA-01555的應對方法?
解答:具體的出錯信息是snapshot too old within rollback seg , 通常可以通過增大rollback seg來解決問題。當然也需要察看一下具體造成錯誤的SQL文本 20. 解釋$ORACLE_HOME和$ORACLE_BASE的區別?
解答:ORACLE_BASE是oracle的根目錄,ORACLE_HOME是oracle產品的目錄。
21. 如何判斷資料庫的時區?
解答:SELECT DBTIMEZONE FROM DUAL;22. 解釋GLOBAL_NAMES設為TRUE的用途
解答:GLOBAL_NAMES指明聯接資料庫的方式。如果這個參數設置為TRUE,在建立資料庫鏈接時就必須用相同的名字連結遠程資料庫23。如何加密PL/SQL程序?
解答:WRAP24. 解釋FUNCTION,PROCEDURE和PACKAGE區別
解答:function 和procere是PL/SQL代碼的集合,通常為了完成一個任務。procere 不需要返回任何值而function將返回一個值在另一方面,Package是為了完成一個商業功能的一組function和proceudre的集合25. 解釋TABLE Function的用途
解答:TABLE Function是通過PL/SQL邏輯返回一組紀錄,用於普通的表/視圖。他們也用於pipeline和ETL過程。26. 舉出3種可以收集three advisory statistics
解答:Buffer Cache Advice, Segment Level Statistics, Timed Statistics27. Audit trace 存放在哪個oracle目錄結構中?
解答:unix $ORACLE_HOME/rdbms/audit Windows the event viewer28. 解釋materialized views的作用
解答:Materialized views 用於減少那些匯總,集合和分組的信息的集合數量。它們通常適合於數據倉庫和DSS系統。29. 當用戶進程出錯,哪個後台進程負責清理它
解答: PMON30. 哪個後台進程刷新materialized views?
解答:The Job Queue Processes.31. 如何判斷哪個session正在連結以及它們等待的資源?
解答:V$SESSION / V$SESSION_WAIT32. 描述什麼是 redo logs
解答:Redo Logs 是用於存放資料庫數據改動狀況的物理和邏輯結構。可以用來修復資料庫.
33. 如何進行強制LOG SWITCH?
解答:ALTER SYSTEM SWITCH LOGFILE;34. 舉出兩個判斷DDL改動的方法?
解答:你可以使用 Logminer 或 Streams35. Coalescing做了什麼?
解答:Coalescing針對於字典管理的tablespace進行碎片整理,將臨近的小extents合並成單個的大extent.36. TEMPORARY tablespace和PERMANENT tablespace 的區別是?
解答:A temporary tablespace 用於臨時對象例如排序結構而 permanent tablespaces用來存儲那些'真實'的對象(例如表,回滾段等)37. 創建資料庫時自動建立的tablespace名稱?
解答:SYSTEM tablespace.38. 創建用戶時,需要賦予新用戶什麼許可權才能使它聯上資料庫。
解答:CONNECT39. 如何在tablespace里增加數據文件?
解答:ALTER TABLESPACE <tablespace_name> ADD DATAFILE <datafile_name> SIZE <size>40. 如何變動數據文件的大小?
解答:ALTER DATABASE DATAFILE <datafile_name> RESIZE <new_size>;41. 哪個VIEW用來檢查數據文件的大小?
解答: DBA_DATA_FILES42. 哪個VIEW用來判斷tablespace的剩餘空間
解答:DBA_FREE_SPACE43. 如何判斷誰往表裡增加了一條紀錄?
解答:auditing 44. 如何重構索引?
解答: ALTER INDEX <index_name> REBUILD;45. 解釋什麼是Partitioning(分區)以及它的優點。
解答:Partition將大表和索引分割成更小,易於管理的分區。46. 你剛剛編譯了一個PL/SQL Package但是有錯誤報道,如何顯示出錯信息?
解答:SHOW ERRORS47. 如何搜集表的各種狀態數據?
解答: ANALYZE
The ANALYZE command.48. 如何啟動SESSION級別的TRACE
解答: DBMS_SESSION.SET_SQL_TRACE
ALTER SESSION SET SQL_TRACE = TRUE;49. IMPORT和SQL*LOADER 這2個工具的不同點
解答:這兩個ORACLE工具都是用來將數據導入資料庫的。
區別是:IMPORT工具只能處理由另一個ORACLE工具EXPORT生成
的數據。而SQL*LOADER可以導入不同的ASCII格式的數據源50。用於網路連接的2個文件?
解答: TNSNAMES.ORA and SQLNET.ORA=======================================================================
④ SQL Server 資料庫 範式問題
第一範式(1NF)無重復的列
第二範式(2NF)屬性
完全依賴於主鍵[消除非主屬性對主碼的部分函數依賴]
第三範式(3NF)屬性
不依賴於其它非主屬性[消除傳遞依賴]
兩個屬性組成的關系必為2NF,因為兩個屬性組成 的關系的碼只有三種情況:全碼;兩個分別為碼; 的關系的碼只有三種情況:全碼;兩個分別為碼; 其中一個是碼 關系模式R<U,F> 關系模式R<U,F> 其中:U={A,B,C,D},分別討論關系模式R 其中:U={A,B,C,D},分別討論關系模式R是否滿足 2NF。 2NF。
1)F={A→B,B→C,C→D,D→A} 2NF,因為沒有非主屬性 因為沒有非主屬性;
R是2NF,因為沒有非主屬性;
2)F=Φ 2)F=Φ 2NF,因為沒有非主屬性 因為沒有非主屬性;
R是2NF,因為沒有非主屬性;
5.2.4 2NF 3)F={A→B,B→A,A→C} 候選碼為(A,D),(B,D) 因為存在非主屬性C (A,D),(B,D)。 候選碼為(A,D),(B,D)。
因為存在非主屬性C對碼 A,D)的部分函數依賴 所以R不是2NF 的部分函數依賴, 2NF。
(A,D)的部分函數依賴,所以R不是2NF。
規范化:由於A→C造成R不是2NF 所以分解為: A→C造成 2NF, 規范化:由於A→C造成R不是2NF,所以分解為: R1(A,C)和R2(A,B,D)均為 均為2NF. R1(A,C)和R2(A,B,D)均為2NF.
4)F={(A,B)→C,D→A} 候選碼為(B,D), 因為存在非主屬性A對碼( 候選碼為(B,D), 因為存在非主屬性A對碼(B,D) 的部分函數依賴,所以R不是2NF
2NF的部分函數依賴,所以R不是2NF;
規范化:由於D→A造成R不是2NF 所以分解為: D→A造成 2NF, 規范化:由於D→A造成R不是2NF,所以分解為: R1(A,D)和R2(B,C,D)均為 均為2NF. R1(A,D)和R2(B,C,D)均為2NF.
另解: (A,B,C),R (A,B,D)進一步 分解為 (A,B,C),R』』(A,B,D)進一步R 另解:R』(A,B,C),R (A,B,D)進一步R』』分解為 R1」(A,D),R2 (A,D),R2」(B,D) R1 (A,D),R2 (B,D) 5.2.4 2NF 5)F={(A,B)→C,C→A} 候選碼為(A,B,D) (B,C,D),因為沒有非主 (A,B,D)和 候選碼為(A,B,D)和(B,C,D),因為沒有非主 屬性, 所以, 2NF。
屬性, 所以,R是2NF。 結論: 結論: 單個屬性組成候選碼的關系一定是2NF; 單個屬性組成候選碼的關系一定是2NF; 兩個屬性組成的關系一定是2NF;
沒有非主屬性的關系一定是2NF; 沒有非主屬性的關系一定是2NF; All-Key的關系一定是 的關系一定是2NF. All-Key的關系一定是2NF. 5.2.5 3NF 定義5.7 關系模式R U,F〉中若不存在這樣的碼X, 定義5.7 關系模式R〈U,F〉中若不存在這樣的碼X, 屬性組Y及非主屬性Z(Z Y)使得X→Y,(Y→X) Z(Z? 使得X→Y, 屬性組Y及非主屬性Z(Z?Y)使得X→Y,(Y→X) Y→Z,成立 則稱R 成立, ∈3NF。
Y→Z,成立,則稱R〈U,F〉∈3NF。 由定義5.7可以證明, R∈3NF, 5.7可以證明 由定義5.7可以證明,若R∈3NF,則每一個非主屬 性既不部分依賴函數於碼也不傳遞函數依賴於碼。
性既不部分依賴函數於碼也不傳遞函數依賴於碼 等價定義:關系模式R U,F〉∈2NF, 等價定義:關系模式R〈U,F〉∈2NF,且每一個非 主屬性都不傳遞函數依賴於碼,則稱R 主屬性都不傳遞函數依賴於碼,則稱R〈U,F〉 ∈3NF。 ∈3NF。
判斷3NF的方法是先判斷2NF,然後檢查有無非主屬 3NF的方法是先判斷2NF, 判斷3NF的方法是先判斷2NF,然後檢查有無非主屬 性對碼的傳遞函數依賴 5.2.5 3NF 關系模式SC(SNO,CNO,G) (SNO,CNO)→G沒 關系模式SC(SNO,CNO,G) (SNO,CNO)→G沒 有非主屬性對碼的傳遞依賴, SC∈3NF; 有非主屬性對碼的傳遞依賴,故SC∈3NF;