關系數據庫——關系數據語言

關系

  1. 域:一組具有相同數據類型的值的集合(即取值范圍)

  2. 笛卡爾積:域上的一種集合運算。結果為一個集合,集合的每一個元素是一個元組,元組的每一個分量來自不同的域。

  3. 基數:一個域允許的不同取值個數。

  4. 笛卡爾積的基數:每個域不同取值的個數的乘積,或者說元組的個數

  5. 關系:域的笛卡爾積的子集叫做在域上的關系,域的個數叫做關系的目或度。(即列數,屬性的數目),注意廣義上的笛卡爾積一般不能稱為關系,因為存在無效的數據。

  6. 關系:表

    列:屬性

    行:元組

  7. 候選碼:某一屬性組的值能唯一地標示一個元組,而其子集不能,則稱該屬性組為候選碼

  8. 主屬性:候選碼中的屬性都稱為主屬性,注意:主屬性非空。

  9. 非主屬性:候選碼之外的屬性稱為非主屬性

  10. 全碼:關系模式的所有屬性是這個關系模式的候選碼

  11. 主碼:從候選碼中選取一組能唯一確定一個元組的屬性組作為主碼。

  12. 三類關系:

    1)基本關系:實際存在的表,是實際存儲數據的邏輯表示

    2)查詢表:查詢結果對應的表

    3)視圖表:由基本表或其他視圖表導出的表,是虛表,不對應實際存儲的數據。

    注意:關系數據模型中的關系必須是有限集合。

    關系的每一個列必須附加一個屬性名,屬性名不能重名,這種方法取消了關系屬性的有序性。

  13. ① 列是同質的(Homogeneous):每一列中的分量來自同一個域,是同一類型的數據

    ② 不同的列可出自同一個域

    • 其中的每一列稱為一個屬性

    • 不同的屬性要給予不同的屬性名

    ③ 列的順序無所謂, 列的次序可以任意交換

    ④ 任意兩個元組的候選碼不能相同:相同就不是候選碼了

    ⑤ 行的順序無所謂,行的次序可以任意交換

    ⑥ 分量必須取原子值(不允許表中套表)

關系模式

?

  1. 關系模式:對關系的描述,是靜態的、穩定的

  2. 關系:是關系模式在某一時刻的狀態或內容,是動態的、隨時間不斷變化的,指后邊的那個關系

  3. 關系模式的形式化表示:

//關系模式
R(U, D, DOM, F)
R       關系名
U       組成該關系的屬性名集合
D       屬性組U中屬性所來自的域
DOM  	屬性向域的映象集合
F       屬性間的數據依賴關系集合//可以簡記為
R (U)    或    R (A1,A2,…,An)
R: 關系名
A1,A2,…,An  : 屬性名
注:域名及屬性向域的映象常常直接說明為屬性的類型、長度

關系數據庫

  1. 在一個給定的應用領域中,所有關系的集合構成一個關系數據庫

  2. 關系數據庫的型與值,不是關系的型與值

    1)關系數據庫的型也稱關系數據庫模式,是對關系數據庫的描述

    2)關系數據庫的值是關系模式在某一時刻對應的關系的集合,簡稱為關系數據庫

基本的關系操作

  1. 常用的基本操作:

    **查詢:**選擇、投影、連接、除、并、交、差

    **數據更新:**插入、刪除、修改

  2. **5種基本操作:**選擇、投影、并、差、笛卡爾積?注意:不算交

  3. 關系操作的特點:

    集合操作方式:操作的對象和結果都是集合,一次一集合的方式,操作對象是集合,操作結果亦為集合。

?

關系的完整性

實體完整性(即主屬性非空)

  1. 若屬性A是基本關系R的主屬性,則屬性A不能取空值

參照完整性

  1. 關系間的引用:關系與關系之間存在著聯系

  2. 外碼:設F是基本關系R的一個或一組屬性,但不是關系R的主碼Ks是基本關系S的主碼。如果F與Ks相對應,則稱F是基本關系R的外碼,外碼所在的基本關系叫做參照關系,Ks所在的關系叫做被參照關系。

    注:

    1)R、S不一定是不同的關系。

    2)目標關系S的主碼Ks 和參照關系的外碼F必須定義在同一個(或一組)域上

    3)外碼并不一定要與相應的主碼同名,當外碼與相應的主碼屬于不同關系時,往往取相同的名字,以便于識別

    4)外碼的取值:如果外碼是參照關系的主屬性,則不能為空(實體完整性),只能為被參照關系中主碼的取值。如果外碼不是參照關系的主屬性,則可以取空或者被參照關系主碼的取值

  3. 兩個不變性:指實體完整性和參照完整性

用戶定義完整性

  1. 針對某一具體關系數據庫的約束條件,反映某一具體應用所涉及的數據必須滿足的語義要求

  2. 關系模型應提供定義和檢驗這類完整性的機制,以便用統一的系統的方法處理它們,而不要由應用程序承擔這一功能

關系代數

傳統的集合運算

  1. 傳統的關系運算:

    并、交、差、笛卡爾積

  1. 操作對象關系:

    操作方式:同數學中的并、交、差、笛卡爾積。只不過操作對象的元素是元組。另外需要注意能進行運算所需要滿足的條件。

    對于并、交、差需要滿足的關系:1)屬性的數目相同;2)相應的屬性取自同一個域

專門的關系運算

常見的關系運算有選擇、投影、連接、除

選擇:

在關系R中選擇滿足給定條件的諸元組。

表達式:$\sigma_F(R) = {t | t \in R \and F(t) = ''true''}$

F:為選擇條件,是一個邏輯表達式,基本形式為:$X_1 \theta Y_1$,其中$\theta$為大于、小于、等于、不等于等。

舉例:

選擇:$\sigma_{Sdept = "IS"}(Student)$

???????

投影:

從R中選擇出若干屬性列組成新的關系

表達式:$\prod_{A} (R)= {t[A] | t\in R}$

A為屬性列,即從R中選擇A中屬性列的元組,當然選擇之后可能會刪掉一些元組,因為避免重復。

舉例:還是上方的關系,經過投影$\prod_{Sname, Sdept}(Student)$,結果如下:

?1

連接

?

1)**一般連接:**從兩個關系的笛卡爾積中選取屬性間滿足一定條件的元組

(1)表達式:$R\bowtie_ {A \theta B} S = {t_r^ \frown t_s | t_r \in R \and t_s \in S \and t_r[A] \theta t_s[B] }$

(2)A和B:分別為R和S上度數相等且可比的屬性組

(3)$\theta$表示比較運算符,

(4)連接運算從R和S的廣義笛卡爾積R×S中選取(R關系)在A屬性組上的值與(S關系)在B屬性組上值滿足比較關系θ的元組

2)**等值連接:**當上述的運算符為等于號的時候

(1)含義:從關系R與S的廣義笛卡爾積中選取A、B屬性值相等的那些元組,即等值連接為:

(2)表達式:$R\bowtie_ {A = B} S = {t_r^ \frown t_s | t_r \in R \and t_s \in S \and t_r[A] = t_s[B] }$

(3)仍然是從行的角度進行運算,而不涉及列

(4)屬性組可以不同

3)**自然連接:**一種特殊的等值連接

(1)與等值連接的不同:兩個關系R和S必須具有相同的屬性組

(2)將結果中相同的屬性列去掉

(3)表達式:$R\bowtie S = {t_r^ \frown t_s | t_r \in R \and t_s \in S \and t_r[A] = t_s[B] }$

4)由自然連接所引發的一系列問題:

(1)懸浮元組:在做自然連接的時候被舍棄的元組

(2)外連接:如果把舍棄的元組也保存在結果關系中,而在其他屬性上填空值(Null),這種連接就叫做外連接,外連接 = 左外連接 + 右外連接

(3)左外連接:如果只把左邊關系R中要舍棄的元組保留就叫做左外連接

(4)右外連接:如果只把右邊關系S中要舍棄的元組保留就叫做右外連接

1)除運算的意義:

(1)假設關系R,S,RS,R關系擁有的屬性是姓名,S關系擁有的屬性是課程,RS關系擁有的屬性是姓名和課程的聯系,則RS/S表示選出所有至少選了表S中所列課程的學生的元組。

(2)如下圖:

注:RS/S得到的關系:張三和李四構成的表,表示選修了全部課程的同學的集合。

舉例:

R:

ABC
a1b1c2
a2b3c7
a3b4c6
a1b2c3
a4b6c6
a2b2c3
a1b2c1

S:

BCD
b1c2d1
b2c1d1
b2c3d2

R÷S

A
a1

(1) 找S與R的共同屬性,即公式中的Y屬性

(2)計算R中每個X屬性的象集,如果某個象集包含S在Y屬性上的投影,則該屬為R/S結果中的一個值。

解答如下:

在關系R中,A可以取四個值{a1,a2,a3,a4},其中:

a1的象集為:{(b1,c2),(b2,c3),(b2,c1)}

a2的象集為:{(b3,c7),(b2,c3)}

a3的象集為:{(b4,c6)}

a4的象集為:{(b6,c6)}

S在(B,C)上的投影為{(b1,c2),(b2,c3),(b2,c1)}。

顯然只有R的象集a1包含S在(B,C)屬性組上的投影,所以R÷S={a1}。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/445207.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/445207.shtml
英文地址,請注明出處:http://en.pswp.cn/news/445207.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Python模塊(2)-Numpy 簡易使用教程

Numpy模塊 簡易使用教程1.數組創建2.數組基本屬性-維度、尺寸、數據類型3.數組訪問-索引、切片、迭代4.數組的算術運算-加減乘除、轉置求逆、極大極小5.通用函數-sin,cos,exp,sqrtnp.dot與np.matmul的區別6.數組的合并和分割6.1 np.vstack(),np.hstack()6.2 np.stack()7.list與…

機器學習問題總結(01)

文章目錄1.請描述推薦系統中協同過濾算法CF的原理2.請描述決策樹的原理、過程、終止條件,以及如何防止過擬合2.1決策樹生成算法2.2 剪枝處理(防止過擬合)2.3 停止條件2.4 棵決策樹的生成過程2.5 決策樹的損失函數3.請描述K-means的原理&#…

pthread_attr_init線程屬性

1.線程屬性 線程具有屬性,用pthread_attr_t表示,在對該結構進行處理之前必須進行初始化,在使用后需要對其去除初始化。我們用pthread_attr_init函數對其初始化,用pthread_attr_destroy對其去除初始化。 1. …

Python實例講解 -- 解析xml

Xml代碼 <?xml version"1.0" encoding"utf-8"?> <info> <intro>信息</intro> <list id001> <head>auto_userone</head> <name>Jordy</name> <number&g…

springboot3——Email

maven導入包&#xff1a; <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId><version>2.1.6.RELEASE</version></dependency> 參數配置&#xff1a; # MailPrope…

python(22)--面向對象1-封裝

python面向對象1面向過程/面向對象2面向對象核心概念-類3類的設計3.1類三要素-類名、屬性、方法3.2面向對象基礎語法3.2.1查看對象的常用方法3.2.2類定義3.2.3創建類對象3.2.4__init__()方法3.2.5 self參數3.2.6類內置方法和屬性_del_()方法--銷毀對象_str_()方法--定制化輸出對…

機器學習問題總結(02)

文章目錄1.stacking模型以及做模型融合的知識1.1 從提交結果中融合1.2 stacking1.3 blending2. 怎樣去優化SVM算法模型的&#xff1f;2.1 SMO優化算法2.2 libsvm 和 Liblinear3.現有底層是tensorflow的keras框架&#xff0c;如果現在有一個tensorflow訓練好的模型&#xff0c;k…

python對操作系統的目錄和文件操作

一、獲取當前目錄下的特定文件列表>>>import glob,os>>>curdir os.getcwd() #獲取當前目錄>>>os.chdir(workdir) #設置當前目錄>>>dir glob.glob(*.dat) #獲取當前目錄的dat文件列表>>>os.chdir(curdir) #…

常見漏洞

Cookie without HttpOnly flag set 如果在Cookie上設置了HttpOnly屬性&#xff0c;則客戶端JavaScript無法讀取或設置Cookie的值。 這種措施通過阻止某些客戶端攻擊&#xff08;例如跨站點腳本&#xff09;&#xff0c;通過阻止它們通過注入的腳本來簡單地捕獲cookie的值&…

python函數星號參數

2011-09-01 17:35 2人閱讀 評論(0) 收藏 編輯 刪除 今天有個工作是導出一個函數給腳本用 我自已先要測一下 先要客戶端發送一個消息給服務器 看了下C部分的代碼,如下 "def onNetMessage(self,playerID, msgName,msgParam):\n" //客戶端調用服務器腳本 " …

MachineLearning(3)-流型

流型-manifold在很多機器學習的文章中會見到“嵌入在高維空間的低維流型”這樣的字眼&#xff0c;下記錄一些重要概念。參考資料&#xff1a;https://blog.csdn.net/sinat_32043495/article/details/789977581.流型 局部具有歐幾里得空間性質的空間&#xff08;流型就是一個空間…

C/C++常見面試題(四)

C/C面試題集合四 目錄 1、什么是C中的類&#xff1f;如何定義和實例化一個類&#xff1f; 2、請解釋C中的繼承和多態性。 3、什么是虛函數&#xff1f;為什么在基類中使用虛函數&#xff1f; 4、解釋封裝、繼承和多態的概念&#xff0c;并提供相應的代碼示例 5、如何處理內…

機器學習問題總結(03)

文章目錄1.struct和class區別&#xff0c;你更傾向用哪個2.kNN&#xff0c;樸素貝葉斯&#xff0c;SVM的優缺點&#xff0c;各種算法優缺點2.1 KNN算法2.2 樸素貝葉斯2.3SVM算法2.4 ANN算法2.5 DT算法3. 10億個整數&#xff0c;1G內存&#xff0c;O(n)算法&#xff0c;統計只出…

python源代碼現成重用大全

Nullege is a search engine for Python source code. http://nullege.com/

redis——新版復制

sync雖然解決了數據同步問題&#xff0c;但是在數據量比較大情況下&#xff0c;從庫斷線從來依然采用全量復制機制&#xff0c;無論是從數據恢復、寬帶占用來說&#xff0c;sync所帶來的問題還是很多的。于是redis從2.8開始&#xff0c;引入新的命令psync。 psync有兩種模式&a…

Python(23)-面向對象2-繼承,多態

面向對象基本概念2--繼承、多態1.繼承基本概念2.子類重寫父類方法2.1完全重寫2.2擴展父類方法--super()3.多繼承4.新式類和舊式類5.多態基本概念6.類屬性、類方法-classmethod6.1類屬性6.2類方法classmethod7.靜態方法staticmethod8.案例分析本系列博文來自學習《Python基礎視頻…

Linux Linux 集群

Linux 集群 Page navigation 什么是集群?集群分類基于 Linux 的集群Linux 服務器集群系統Linux 高性能計算集群集群系統 MOSIX構建 Linux 集群IBM 與 Linux 集群 本專題收集了 Linux 集群相關的文章和教程。 什么是集群? 簡單的說&#xff0c;集群&#xff08;cluster&#x…

機器學習問題總結(04)

文章目錄1、MLP的BP過程2、maxpool層BP怎么做的2.1 **mean pooling**2.2 max pooling3、opencv遍歷像素的方式&#xff0c;講兩種&#xff1f;4、傳統圖像處理有了解過嗎&#xff0c;比如去噪 特征提取5、問在linux下寫過代碼嗎&#xff1f; 問用了什么軟件工具6、LDA&#xff…

持續更新的Zookeeper知識總結

簡介 Zookeeper為分布式應用 提供了高效且可靠的分布式協調服務&#xff0c;提供了諸如統一命名服務、發布訂閱、負載均衡、配置管理和分布式鎖等分布式的基礎服務。 設計目標是將那些復雜且容易出錯的分布式一致性服務封裝起來&#xff0c;構成一個高效可靠的原語集&#xf…

Python(24)-面向對象3-可迭代類對象Pokemon

面向對象3-Pokemon demo1.可迭代類對象1.可迭代類對象 想要實現類對象中某些屬性/數值的迭代訪問&#xff0c;需要在類中定義一個__iter__()方法&#xff0c;和__next__() 的方法(python 2 中為next()方法)。 _iter_()返回值是self&#xff0c; _next_()中遍歷完所有的元素后發…