关系模型和关系代数
2019獨角獸企業重金招聘Python工程師標準>>>
關系模型
基本術語:
關系模型:用二維表格表示實體集,用關鍵碼表示實體之間聯系的數據模型稱為關鍵模型。
在關系模型中,字段稱為屬性,字段值稱為屬性值,記錄類型稱為關系模式。記錄稱為元組,元組的集合稱為關系或實例。一般用大寫字母A、B、C...表示單個屬性,用大寫字母...X、Y、Z表示屬性集,用小寫字母表示屬性值,元組為行(Row), 屬性為列(Column)。
關系中的屬性的個數稱為“元組”,元組個數稱為“基數”。
關鍵碼(Key,鍵)由一個或多個屬性組成。在實際使用中,有下列幾種鍵。
- 超鍵:在關系中能唯一標識元組的屬性或屬性集稱為關系模式的超鍵;
- 候選鍵:不含多余屬性的超鍵稱為候選鍵;
- 主鍵:用戶選作元組標識的候選鍵稱為主鍵。一般不加說明鍵指主鍵;
- 外鍵:如果模式R中屬性K是其他模式的主鍵,那么K在模式R中稱為外鍵。
關系中每一個屬性都有一個取值范圍,稱為屬性的值域(Domain),屬性A的取值范圍用DOM(A)表示。
關系的定義和性質
關系是一個屬性數目相同的元組的集合。
在關系模型中,對關系做了下列規范性限制:
- 不可分解:關系中每個屬性值都是不可分解的;
- 不重復:關系中不允許出現重復元組;
- 無行序:由于關系是一個集合,因此不考慮元組間的順序;
- 無列序:元組中的屬性理論上也是無序的,但使用時按習慣考慮列的順序。
三類完整性原則
實體完整性原則:
這條規則要求關系中元組在組成主鍵的屬性上不能有空值。如果出現空值,那么主鍵值就起不到唯一標識元組的作用。
參照完整性規則:
這條規則的實質是“不允許引用不存在的實體”。該規則在具體使用時有三點可變通:
用戶定義的完整性原則:
建立關系模型時對屬性定義了數據類型可能還滿足不了用戶的需求。用戶應該可以根據具體數據約束,設置完整性原則,設置完整性規則,由系統來檢查實施,以統一的方法處理它們,不再由應用程序承擔這份工作。
關系模型的三層體系結構
關系模式:
記錄類型稱為關系模式,而關系模式的集合就是數據庫的概念模式。
子模式:
用戶所用到的那部分數據的描述。
存儲模式:
在DBMS中,關系存儲時是作為文件看待的,每個元組就是一條記錄。由于關系模式有鍵,因此存儲一個關系可以用散列的方法或索引方法實現。
關系模型的形式定義和優點
關系模型有三個重要的組成部分:數據結構、數據操縱和數據完整性控制。
- 數據結構:數據庫中全部數據及其相互聯系都被組織成“關系”的形式。關系模型的基本數據類型是關系。
- 數據操縱:關系模型提供一組完備的高級關系運算,以支持對數據庫的各種操作;
- 數據完整性原則:數據庫中的數據必須滿足實體完整性、參照完整性和用戶定義完整性原則。
關系模式優點:
關系代數
關系代數的五個基本操作:
- 并(Union):設關系R和S具有相同的關系模式,R和S的并是由屬于R或屬于S的元組構成的集合,記為R∪S。
- 差(Difference):設關系R和S具有相同的關系模式,R和S的差是由屬于R但不屬于S的元組構成的集合,記為R-S。
- 笛卡兒積(Cartesian Product):設關系R和S的元組數分別為r和s,R和S的笛卡兒積是一個(r+s)的元組集合,每個元組的前r個分量(屬性值)來自R的一個元組,后s個分量來自S的一個元組,記為R×S。
- 投影(Projection):對一個關系進行垂直分割,消去某些列,并重新安排列的排序,用π表示。
- 選擇(Selection):根據某些條件對關系進行水平分割,即選取符合條件的元組,用σ表示。
關系代數的四個組合操作:
- 交(Intersection):由即屬于R又屬于S的元組構成的集合,記為R∩S。這里要求R和S定義在相同的關系模式上。
- 連接(Join):從關系R和S的笛卡兒積中選取屬性值滿足某一操作θ的元組。
- 自然連接(Natural Join):第一步,計算R和S的笛卡兒積;第二步,挑選公共屬性相同的元組;第三步,去掉S中的相關列。
- 除/逆笛卡兒積(Division):R÷S是一個(r-s)元的元組集合,滿足下列條件的最大關系:其中每個元組t與S中的每個元組u組成的新元組<t,u>必在關系R中。
關系代數的七個擴充操作:
- 改名:改名運算符用ρS(A1,A2,...An)(R)表示。表示把關系R改名為S,S中的元組和R中一樣,屬性順序為A1,A2,...An。如果只需要改名不需要重新排列屬性,可以簡寫為ρS(R)。
- 廣義投影:廣義投影允許在投影列表中使用算術函數來對投影進行拓展。
- 賦值:賦值運算符“←”,通過把臨時變量賦值,可以把關系代數分開寫,以把復雜的表達式化整為零,成為簡單的表達式。注意:賦值操作不執行關系操作,僅僅是保存關系形式,該表達式可以重復使用。
- 外連接:如果在做R和S的自然連接時,把原本該舍棄的元組也保留在新關系中,同時在這些元組新增的屬性上填上空值,這種操作稱為“外連接”。同樣的,如果只保留R中該舍棄的元組,稱為“左外連接”,只保存S中該舍棄的元組,稱為“右外連接”。
- 外部并:上面定義R和S的并操作時,規定兩者需要有兩桶的關系模式。如果關系模式不同,構成的新關系的屬性由兩者的所有屬性組成(公共屬性只取一次),新關系的元組由屬于R或S的元組組成,同時在元組新增加的屬性上填上空值,這種操作稱為“外部并”。
- 半連接:定義為R和S的自然連接在關系R的屬性集上的投影。半連接主要用于分布式數據庫中。
- 聚集操作:指輸入一個值的集合,根據該集合得到一個單一值作為結果。常用的聚集函數包括求最大值max,最小值min,平均值avg,總和值sum和計數值count等。
轉載于:https://my.oschina.net/HuoQibin/blog/1678207
總結
- 上一篇: 给初学编程的人的干货
- 下一篇: 实验吧_NSCTF web200FALS