(数据库系统概论|王珊)第六章关系数据理论-第一节:为什么要研究关系数据理论
文章目錄
- 一:概念回顧:關系模式
- 二:數據依賴
- 三:一個例子:不遵循關系數據理論導致的問題
一句話,研究關系數據庫理論就是為了設計出合適的關系模式,也即合適、高效的表
一:概念回顧:關系模式
- 相關文章:(數據庫系統概論|王珊)第二章關系數據庫-第一節:關系數據結構及其形式化定義
關系模式:關系模式就是對關系的描述,可以表示為
R(U,D,DOM,F)R(U,D,DOM,F)R(U,D,DOM,F)
- RRR:關系名
- UUU:組成該關系的屬性名集合
- DDD:UUU中屬性所來自的域
- DOMDOMDOM:屬性向域的映像集合
- FFF:屬性間數據的依賴關系集合(此部分屬于第六章:關系數據理論的內容)
由于DDD、DOMDOMDOM與模式設計關系不大,所以在本章中把關系模式看作一個三元組
R<U,F>R<U,F>R<U,F>
- 并且僅當UUU上的一個關系rrr滿足FFF時,rrr稱為關系模式R<U,F>R<U,F>R<U,F>的一個關系
二:數據依賴
數據依賴:數據依賴是一個關系內部屬性與屬性之間的一種約束關系。 這種約束關系是通過屬性間值的相等與否體現出來的數據間相關聯系。它是現實世界屬性間相互聯系的抽象,是數據內在的性質,是語義的體現。主要有兩種類型的數據依賴
-
函數依賴(FD):屬性間的這種依賴關系類似于數學中的函數y=f(x),自變量x確定之后,相應的函數值y也就唯一地確定了。比如描述一個學生的關系,可以有學號(Sno)、姓名(Sname)、 系名(Sdept) 等幾個屬性,由于一個學號只對應一個學生,一個學生只在一個系學習。因而當“學號”值確定之后,學生的姓名及所在系的值也就被唯一地確定了。記作Sno→Sname, Sno-> Sdept
-
多值依賴(MVD):后面會說
三:一個例子:不遵循關系數據理論導致的問題
【例】建立一個描述學校教務的數據庫,該數據庫涉及的對象包括學生的學號
(Sno)、所在系(Sdept)、 系主任姓名(Mname)、課程號(Cno)和成績(Grade)。假設用一個單一的關系模式Student來表示,則該關系模式的屬性集合為
U=(Sno,Sdept,Mname,Cno,Grade)U=({Sno,Sdept,Mname,Cno,Grade})U=(Sno,Sdept,Mname,Cno,Grade)
根據現實世界我們所熟知的,會有以下事實
- 一個系有若干學生,但一個學生只屬于一個系
- 一個系只有一名(正職)負責人
- 一個學生可以選修多門課程,每門課程有若干學生選修
- 每個學生學習每一門課程有一個成績
這樣的語義限制,將會導致屬性上的函數依賴
記作:
F=(Sno?>Sdept,Sdept?>Mname,(Sno,Cno)?>Grade)F=(Sno->Sdept,Sdept->Mname,(Sno,Cno)->Grade)F=(Sno?>Sdept,Sdept?>Mname,(Sno,Cno)?>Grade)
下表是關系模式Student某一時刻的一個實例
我們說,這樣的關系模式是失敗的,因為它存在以下問題
- 數據冗余:比如,每一個系的系主任姓名重復出現,重復次數與該系所有學生的所有課程成績出現次數相同,這將浪費大量的存儲空間
- 更新異常:比如,某系更換系主任后,必須修改與該系學生有關的每一個元組
- 插入異常:如果一個系剛成立,尚無學生,則無法把這個系及其系主任的信息存入數據庫
- 刪除異常:如果某個系的學生全部畢業了,則在刪除該系學生信息的同時,這個系及其系主任的信息也丟掉了
而如何解決這些問題,就是下一節:規范化所要討論的內容了
總結
以上是生活随笔為你收集整理的(数据库系统概论|王珊)第六章关系数据理论-第一节:为什么要研究关系数据理论的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python 解析 配置文件
- 下一篇: (软件工程复习核心重点)第十二章软件项目