Oracle学习笔记之一,重温范式
第一范式(1NF)
第一范式是第二和第三范式的基礎(chǔ),是最基本的范式。第一范式包括下列的指導(dǎo)原則:
- 數(shù)據(jù)組的每個(gè)屬性只可以包含一個(gè)值。
- 關(guān)系中的每個(gè)數(shù)組必須只包含相同數(shù)量的值。
- 關(guān)系中的每個(gè)數(shù)組一定不能相同。
?在任何一個(gè)關(guān)系數(shù)據(jù)庫中,第一范式是對關(guān)系模式的基本要求,不滿足第一范式的數(shù)據(jù)庫就不是關(guān)系型數(shù)據(jù)庫。
?表1.1 不符合第一范式的學(xué)生信息表
| 學(xué)號(hào) | 姓名 | 性別 | 年齡 | 班級(jí) |
| 9527 | 東*方 | 男 | 20 | 計(jì)算機(jī)系3班 |
?
?
?
?
因?yàn)樯媳碇械陌嗉?jí)屬性中包含了多個(gè)值,所以它不符合第一范式。改進(jìn)后的結(jié)構(gòu)如下表所示:
表1.2 符合第一范式的學(xué)生信息表
| 學(xué)號(hào) | 姓名 | 性別 | 年齡 | 系別 | 班級(jí) |
| 9527 | 東*方 | 男 | 20 | 計(jì)算機(jī) | 3班 |
?
?
?
第二范式(2NF)
第二范式是第一范式的基礎(chǔ)上建立起來的,即滿足第二范式必先滿足第一范式。第二范式要求數(shù)據(jù)庫中的每個(gè)實(shí)體(即各個(gè)記錄行)必須可以被唯一地區(qū)分。要求實(shí)體的屬性完全依賴于主關(guān)鍵字,即不能存在僅依賴主關(guān)鍵字一部分的屬性。
不符合第二范式的示范(員工工資表):
(員工編號(hào),崗位)-》(決定)(姓名、年齡、學(xué)歷、基本工資、績效工資、資金)
不符合的原因是,在上面的關(guān)系中,還可以進(jìn)一步拆分為如下兩種決定關(guān)系:
(員工編號(hào))-》(決定)(姓名、年齡、學(xué)歷)
(崗位)-》(決定)(基本工資)
?
符合第二范式的示范(將上面的表拆分為三張表):
員工檔案表:EMPLOYEE(員工編號(hào)、姓名、年齡、學(xué)歷)
崗位工資表:QUARTERS(崗位、基本工資)
員工工資表:PAY(員工編號(hào)、崗位、績效工資、獎(jiǎng)金)
第三范式(3NF)
第三范式是在第二范式的基礎(chǔ)上建立起來的,即滿足第三范式必先滿足第二范式。第三范式要求關(guān)系表不存在非關(guān)鍵字列對任意候選關(guān)鍵字列的傳遞函數(shù)依賴,也就是說,第三范式要求一個(gè)關(guān)系表中不包含已在其他表中已包含的非主關(guān)鍵字信息。?
示范:
(員工編號(hào))-》(決定)(員工姓名、年齡、部門編號(hào)、部門經(jīng)理)
上面的這個(gè)關(guān)系是符合第二范式的,但它不符合第三范式,因?yàn)樵撽P(guān)系表內(nèi)部隱含著如下決定關(guān)系:
(員工編號(hào))->(決定)(部門編號(hào))-》(決定)(部門經(jīng)理)
上面的關(guān)系表存在非關(guān)鍵字段“部門經(jīng)理”對關(guān)鍵字“員工編號(hào)”的傳遞函數(shù)依賴。
?
更改為符合第三范式關(guān)系:
員工信息表:EMPLOYEE(員工編號(hào)、員工姓名、年齡、部門編號(hào))
部門信息表:DEPARTMENT(部門編號(hào)、部門經(jīng)理)
?
對于關(guān)系數(shù)據(jù)庫的設(shè)計(jì),理想的設(shè)計(jì)目標(biāo)是按照“規(guī)范化”原則存儲(chǔ)數(shù)據(jù),因?yàn)檫@樣做能夠消除數(shù)據(jù)冗余、更新異常、插入異常和刪除異常。
轉(zhuǎn)載于:https://www.cnblogs.com/nayitian/p/3218026.html
總結(jié)
以上是生活随笔為你收集整理的Oracle学习笔记之一,重温范式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: shell的date
- 下一篇: 无刷新上传文件