關系模型之基本概念


關系模型簡述

提出

  • 最早由E.F.Cod在1970年提出
  • 是從表( Table)及表的處理方式中抽象出來的,是在對傳統表及其操作進行
    數學化嚴格定義基礎上,引入集合理論與邏輯學理論提出的
    *是數據庫的三大經典數據模型之一,也是現在大多數商品化數據庫系統所
    仍然使用的數據模型
  • 標准的數據庫語言(SQL語言)是建立在關系模型基礎之上的,數據庫領域
    的眾多理論也都是建立在關系模型基礎之上的

研究內容

  • 形象地說,一個關系( relation)就是一個 Table
  • 關系模型就是處理 Tablel的,它由三個部分組成
    • 描述DB各種數據的基本結構形式( Table/ Relation
    • 描述 Table與 Table之間所可能發生的各種操作(關系運算)
    • 描述這些操作所應遵循的約束條件(完整性約束)
      就是要學習: Table1如何描述,有哪些操作、結果是什么、有哪些約束等?

三要素

  • 基本結構:Realtion/Table
  • 基本操作:Relation Operator
  • 完整性約束:實體完整性,參照完整性和用戶自定義完整性

關系模型與數據庫語言的關系

  • 關系運算:關系代數和關系演算;關系演算:元組演算和與域演算.
  • 關系代數示例:
  • 元組演算示例:
  • 域演算示例:

關系的定義

表的基本要素構成

  1. 列的取值范圍"域(Domain)"
    • 一組值的集合,這組值具有相同的數據類型
    • 如整數的集合、字符串的集合、全體學生的集合
    • 再如,由8位數字組成的數字串的集合,由0到100組成的整數集合
    • 集合中元素的個數稱為域的基數( Cardinality)
  2. 元組及所有可能的元組:笛卡兒積
  • 一組域D1×D2×...×Dn ={(d1,d2,...dn|di∈Di,i=1,...,n)}
  • 笛卡爾積的每個元素(d1,d2,...dn稱作一個n-元組(n-tuple)
  • 元組(d1,d2,...dn)的每一個值di叫做一個分量(component)
  • 元組(d1,d2,...dn)是從每一個域任取一個值的一種組合,笛卡爾積是所有這種可能組合的集合,即:笛卡爾積是由n個域形成的所有可能的n-元組的集合
  • 若Di的基數為mi,則笛卡爾積的基數,即元組的個數為
        m1</sub.× m2 ×...× mn

關系

  • 一組域D1,D2,...,Dn的笛卡爾積的子集
  • 笛卡爾積中具有某一方面意義的那些元組被稱作一個關系( Relation)
  • 由於關系的不同列可能來自同一個域,為區分,需要為每一列起一個名
    字,該名字即為屬性名。
  • 關系模式:

關系模式與關系

  • 同一關系模式下,可有很多的關系
  • 關系模式是關系的結構,關系是關系模式在某一時刻的數據
  • 關系模式是穩定的;而關系是某一時刻的值,是隨時間可能變化的

關系特性

列是同質:即每一列中的分量來自同一域,是同一類型的數據

不同的列可來自同一個域,稱其中的每一列為一個屬性,不同的屬性要給予
不同的屬性名。

  • 關系模式RA:D1,A2:D2,…An:Dn)中,A(=1,n)必須是不同的,而
    D(=1,n)可以是相同的
  • 例,我們定義一個域為 Person=所有男人、女人和兒童的集合={李基,張
    鵬,王芳,劉玉,李健,張睿,張崢},則下述“家庭”關系的三個列將來自同
    一個域 Person,因此需要不同的屬性名“丈夫”“妻子"“子女”以示區分
  • 列位置互換性:區分哪一列是靠列名
  • 行位置互換性:區分哪一行是靠某一或某幾列的值(關鍵字/鍵字/碼字)
    關系是以內容(名字或值)來區分的,而不是屬性在關系的位置來區分
  • 如下面兩個關系是完全相同的關系

元組

*理論上,關系的任意兩個元組不能完全相同。(集合的要求:集合內不能有
相同的兩個元素);現實應用中,表( Table)可能並不完全違守此特性。

  • 元組相同是指兩個元組的每個分量都相同。

屬性

  • 屬性不可再分性:有被稱為關系第一范式
  • 主屬性與非主屬性
    • 包含在任何一個候選碼中的屬性被稱作主屬性,而其他屬性被稱作非主屬性
    • 如“選課”中的S#,C#為主屬性,而 Sname, Cname, Grade!則為非
      主屬性
    • 最簡單的,候選碼只包含一個屬性
    • 最極端的,所有屬性構成這個關系的候選碼,稱為全碼(AlI-Key).
      • 比如:關系“教師授課”(T#,C#)中的候選碼(「T,C護就是全碼。

  • 候選碼/候選鍵
    • 關系中的一個屬性組,其值能唯一標識一個元組,若從該屬性組中去掉任何一個屬性,它就不具有這一性質了,這樣的屬性組稱作候選碼。
    • 例如:“學生(S, Sname,Sage, Sclass)”,S#就是一個候選碼,在此關系中,任何兩個元組的S#是一定不同的,而這兩個元組的 Sname,Sage, Sclass都可能相同(同名、同齡、同班),所以S#是候選碼。
    • 再如:“選課(S#,C, Sname, Cname, Grade)”,(S#,C胡)聯合起來是一
      個候選碼
  • 主碼/主鍵
    *當有多個候選碼時,可以選定一個作為主碼。
    *DBMS以主碼為主要線索管理關系中的各個元組。
    *例如可選定屬性S作為“學生”表的主碼,也可以選定屬性組( Sname,Address)作為“學生”表的主碼。選定 EMPID為 Employee的主碼。
  • 外碼/外鍵
    • 關系R中的一個屬性組,它不是R的候選碼,但它與另一個關系S的候選碼相對應,則稱這個屬性組為R的外碼或外鍵。
    • 例如“合同”關系中的客戶號不是候選碼,但卻是外碼。因它與“客戶”關系中的候選碼“客戶號”相對應。
    • 兩個關系通常是靠外碼連接起來的。

小結

關系完整性

實體完整性

  • 關系的主碼中的屬性值不能為空值;
  • 空值:不知道或無意義的值;
  • 意義;關系中的元組對應到現實世界相互之間可區分的一個個個體,這些個體是通過主碼來唯一標識的;若主碼為空,則出現不可標識的個體,這是不容許的。

參照完整性

用戶自定義完整性

  • 用戶針對具體的應用環境定義的完整性約束條件
  • 如S#要求是10位整數,其中前四位為年度,當前年度與他們的
    差必須在4以內
  • 再如:

DBMS對關系完整性的支持

  • 實體完整性和參照完整性由DBMS系統自動支持
  • DBMS系統通常提供了如下機制:
    • (1)它使用戶可以自行定義有關的完整性約束條件
    • (2)當有更新操作發生時,DBMS將自動按照完整性約束條件檢驗更新操作的正確性,即是否符合用戶自定義的完整性

回顧


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM