數據庫中的關系、范式、索引


1.關系:是一個已命名的二維數據表。每個關系(表)包含一組已命名的列,以及任意數目的未命名的行。

關系的性質:

(1)數據庫中每個關系(表)的名字是唯一的

(2)任意行的任一列值是原子的(單值)。在關系內,不允許有多值屬性。即行列相交只能對應一個值,不能有幾個值。

(3)每一行是唯一的,同一關系內的任意兩行都不能相同。

(4)表中的每個屬性(列)的名字是唯一的。

(5)關系中行,列的順序都是無關的。

2.規范化

規范化是將含有異常的關系分解為更小的、良構的關系的過程。

規范化可以分為幾個階段來實現和理解,每個階段都對應有一個范式。

范式是根據函數依賴(或是屬性間聯系)對關系應用某些簡單准則后所得到的關系狀態。

第一范式:任何多值屬性都被去除,表中所有行與所有列交叉處都只有一個值

第二范式:所有部分函數依賴都被去除

第三范式:所有傳遞依賴都被去除。

3.相關概念

函數依賴:是存在於兩個屬性或兩個屬性集之間的約束。對任意關系R,當以下條件成立時,我們稱屬性B函數依賴於屬性A:對於任意的有效地屬性A的實例,它的值唯一決定B的值。B對A的函數依賴可以用箭頭表示如下:A->B。

部分函數依賴:是這樣一個函數依賴,關系中的一個或多個非鍵屬性函數依賴於部分主鍵。

傳遞依賴:是在兩個或多個非鍵屬性間的函數依賴

4.索引

索引也是一張表,它包含有兩列,鍵和包含該鍵值的記錄或記錄組的位置。

5.數據庫優化

①調整數據結構的設計。這一部分在開發信息系統之前完成,程序員需要考慮是否使用ORACLE數據庫的分區功能,對於經常訪問的數據庫表是否需要建立索引等。
②調整應用程序結構設計。這一部分也是在開發信息系統之前完成,程序員在這一步需要考慮應用程序使用什么樣的體系結構,是使用傳統的Client/Server兩層體系結構,還是使用Browser/Web/Database的三層體系結構。不同的應用程序體系結構要求的數據庫資源是不同的。
③調整數據庫SQL語句。應用程序的執行最終將歸結為數據庫中的SQL語句執行,因此SQL語句的執行效率最終決定了ORACLE數據庫的性能。ORACLE公司推薦使用ORACLE語句優化器(Oracle Optimizer)和行鎖管理器(row-level manager)來調整優化SQL語句。
④調整服務器內存分配。內存分配是在信息系統運行過程中優化配置的,數據庫管理員可以根據數據庫運行狀況調整數據庫系統全局區(SGA區)的數據緩沖區、日志緩沖區和共享池的大小;還可以調整程序全局區(PGA區)的大小。需要注意的是,SGA區不是越大越好,SGA區過大會占用操作系統使用的內存而引起虛擬內存的頁面交換,這樣反而會降低系統。
⑤調整硬盤I/O,這一步是在信息系統開發之前完成的。數據庫管理員可以將組成同一個表空間的數據文件放在不同的硬盤上,做到硬盤之間I/O負載均衡。
⑥調整操作系統參數,例如:運行在UNIX操作系統上的ORACLE數據庫,可以調整UNIX數據緩沖池的大小,每個進程所能使用的內存大小等參數。 
實際上,上述數據庫優化措施之間是相互聯系的。ORACLE數據庫性能惡化表現基本上都是用戶響應時間比較長,需要用戶長時間的等待。但性能惡化的原因卻是多種多樣的,有時是多個因素共同造成了性能惡化的結果,這就需要數據庫管理員有比較全面的計算機知識,能夠敏感地察覺到影響數據庫性能的主要原因所在。另外,良好的數據庫管理工具對於優化數據庫性能也是很重要的。


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com