Oracle知識梳理(一)理論篇:基本概念和術語整理

来源:https://www.cnblogs.com/TheGCC/archive/2018/04/28/8916573.html
-Advertisement-
Play Games

理論篇:基本概念和術語整理 一、關係資料庫 關係資料庫是目前應用最為廣泛的資料庫系統,它採用關係數據模型作為數據的組織方式,關係數據模型由關係的數據結構,關係的操作集合和關係的完整性約束三部分組成。 二、關係資料庫中的一些基本術語和定義 1、關係數據模型 關係數據模型是建立在嚴格的數學概念的基礎上, ...


理論篇:基本概念和術語整理

一、關係資料庫

          關係資料庫是目前應用最為廣泛的資料庫系統,它採用關係數據模型作為數據的組織方式,關係數據模型由關係的數據結構關係的操作集合關係的完整性約束三部分組成。

二、關係資料庫中的一些基本術語和定義

 

1、關係數據模型  

 

關係數據模型是建立在嚴格的數學概念的基礎上,由一組關係組成,每個關係的數據結構是一張嚴格規範化的二維表,簡單說關係數據模型就是用二維表的形式來表示實體和實體間聯繫的數據模型。

 

 ①二維表

簡單說關係資料庫中數據的主要存儲形式是二維表,這種二維表具有嚴格的規則要求,表中每一列代表著關係資料庫中的一個屬性,每一列的名字就是一個屬性名;每一行代表一個記錄,即對應現實中的一個物理實體。其中,列稱為屬性或者欄位,行被稱為元組或者記錄。

例:用戶表
用戶編號 用戶名 密碼 性別 年齡
001 url123 12345789 34
002 adm336 abcdefg 26

 

關係:一般說某個關係,即是指某張表。一個關係對應一張表。

元組:表中的某一行成為一個元組,一行即對應一個物理實體,元組就是物理實體的抽象。

屬性:表中的一列即為一個屬性,給每一列的命名即為屬性名:如例表中的 用戶名一列。

:即是指某一個屬性的取值範圍,屬性的取值範圍成為該屬性的域,如:性別的取值為男/女;用戶編號的域為一個三位數的整數。

關鍵字或者碼(key):也稱作碼鍵,表中的某個屬性組(多個屬性組成,也可以為單個屬性構成),它可以唯一確定一個元組,例表中用戶編號可以唯一確定一個用戶(即整個表中不存在與這行數據相同的另一行),關係資料庫中通常稱為主碼或者主鍵。有時也會遇到不止一個屬性能唯一確定一個元組的時候,所有可以唯一確定一個元組的屬性統稱為候選碼,而主碼是在候選碼中選出,候選碼包含主碼。

分量:元組中某一個屬性的屬性值

關係模式:              一般的具體書面表示時,一個關係模式的表示形式為  : 關係名(屬性1,屬性2,屬性3……),簡記為:R(U)或者R(A1,A2,A3……)

       R(U,D, dom ,F),R為關係名(表名),U是組成該關係的屬性集合,D為屬性的域,dom為屬性向域的映像的集合。

術語對比
關係術語 表格稱謂
關係名 表格名
關係 二維表(具體的一張)
元組 一條記錄/表中的一行
屬性 表中的列
屬性名 列名
屬性值 列中的取值
分量 一行中某個列的列值
非規範關係 表中表(表的嵌套)

 

2、關係數據模型的特點

①關係必須規範化:關係模式中每個關係都必須滿足一定的要求。

②模型概念單一:關係數據模型的優點就是模型概念單一,無論具體的實體還是實體間的聯繫,都用簡單的二維表來描述和表示,對數據的檢索和操作結果也是關係(表),其數據結構簡單清晰,便於理解  和操作。

 ③操作集合:在關係數據模式中,操作的對象和結果都是元組的集合,即關係(表)

總結:

關係數據模式建立在嚴格的數學概念基礎上,其數據模型的概念單一(即表)。關係數據模型的存取路徑對用戶透明,從而具有更高的數據獨立性、更好的安全保密性,簡化了專業人士的開發建立工作。

3、關係操作

關係操作的對象和結果都是集合,稱為一次一集合的方式,而非關係數據模型的一次一記錄數據操作方式。關係資料庫中常用的數據操作包括:  查詢操作(Query)和插入操作(Insert)、刪除操作(Delete)、修改操作兩大部分。具體見下圖:

  

 

以上關係操作均為邏輯理論操作,在實際的資料庫系統中,為了實現這些關係操作,我們可以使用一種關係代數和關係演算之間的語言SQL(結構化查詢語言),SQL具有豐富的查詢、數據定義、數據控制功能。Oracle中主要使用SQL*plus。

4、關係的完整性

實體完整性:若屬性(一個或者一組)A為關係B的主屬性,則A不能為空。簡單的解釋就是,一個表中的主鍵不能為空值,這裡的主鍵包括單一屬性的主鍵非空,和組合主鍵的屬性組中屬性均不能為空。

實體完整性是針對基本關係的,即一個表中的元組對應現實中的物理實體,而現實中的物理實體是可區分的,每個都是獨立唯一的。而主鍵(主屬性)則作為整個唯一的標識,主鍵為空,則表示存在不可標識的實體,這與理論矛盾,所以主鍵不能為空。

參照完整性:若屬性(或屬性組)F是基本關係R的外鍵,它與基本關係S的主鍵K相對應(即關係R引用關係S的主鍵為外鍵,其中S和R不一定是不同關係),則對於R中每個元組在F上的值必須為如下兩種情況之一:空值(F中所有屬性為空),等於S中某元組的主鍵。

外鍵:現實世界中,實體之間往往存在著某種聯繫,這些聯繫在關係資料庫中都用關係來描述,這就存在著關係與關係間的引用:如果F是基本關係R的一個或一組屬性,但不是R關係的主鍵,而K是基本關係S的主鍵,如果F與K相對應,則稱F是R的外鍵(Foreign Key),並稱基本關係R為參照關係(Referencing Relation),基本關係S被稱為被參照關係或目標關係。

關係S
用戶名(主鍵) 密碼 年齡
GMM123 123456 35
SST789 admin22 45

 

關係R
Id(主鍵) 用戶名 職務
001 GMM123 老師
002 SST789 老師

 

例如上面兩表,關係S中的用戶名為關係S的主鍵,與R中的用戶名屬性對應,則用戶名為關係R的外鍵。

用戶自定義完整性:實體完整性和參照完整性是任何關係資料庫都必須遵守的,除此以外,根據具體不同的情況和問題,往往需要一些額外的約束條件,具體為用戶在定義關係時自己定義的。

5、關係資料庫中的規範化理論

函數依賴:   設R(U)是屬性集合U上的一個關係模式,X,Y是U的子集,若對於R(U)的任意一個可能的關係r,r中不可能存在兩個元組在X上的屬性值相等而在Y上的屬性值不等,則稱X函數確定Y或者Y依 賴於X,記作X→Y。

函數依賴的分類:

平凡函數依賴與非平凡函數依賴

完全函數依賴與部分函數依賴

傳遞函數依賴

範式理論:

 ①第一範式(1NF):如果關係模式R中每一個屬性值都是一個不可分解的數據項,則稱該關係模式滿足第一範式,記為R∈1NF。(不可分割意思為單一屬性,屬性值必須為“原子”的)

 ②第二範式(2NF):在滿足第一範式的前提下(即R∈1NF),且它的所有非主屬性都完全函數依賴與R的任一候選鍵,則稱該關係滿足第二範式,即R∈2NF。

 ③第三範式(3NF):在滿足R∈2NF的前提下,且所有非主屬性,都不傳遞函數依賴於任何候選鍵,則R滿足第三範式,即R∈3NF。

 ④BCNF範式(BCNF):對於一個關係模式R,如果對於每一個函數依賴X→Y,其中的決定因素X都含有鍵,則稱關係模式R滿足BCNF範式,即R∈BCNF。     

 通常認為BC範式是對第三範式的修正和擴展,BCNF的本質意義在於:其中每一個決定因素都是一個主鍵。或者說,在BCNF中除了候選鍵決定其所有屬性或主鍵決定其所有屬性之外,絕不會存在其他的非平凡函數依賴。

 

範式在資料庫的設計中占有很大的比重,通過它可以優化資料庫設計,避免一些問題,例如:減少數據的冗餘,改進資料庫整體組織,增強數據的一致性,增加資料庫設計的靈活性。因此在資料庫設計時,應根據實際情況,使關係模式滿足適當的範式,使資料庫設計更加規範

三、資料庫設計

1、實體 - 關係模型(E - R)

       實際具體設計中,我們需要將現實生活中的實際物體進行抽象化,轉變成數學模型,進而轉化為關係模型。

①實體(Entity):是E—R模型的基本對象,是現實世界中各種事務的抽象。簡單點說就是對應著現實生活中確實存在的事務,例如:張三、李四具體的某個人,也可以是學生這個現實中的群體。

②屬性(Attribute):實體的若幹特征,即為實體的屬性。例如,現實生活中學生會有學號這個特征,轉化為關係中的學號屬性。

③聯繫(Relationship): 實體之間會存在各種各樣的關係與聯繫,例如老師和學生存在師生關係,一個語文老師可能是一個班所有學生的共同語文老師,而對於具體某個學生而言,他們只有一個語文老師,即一對多,和一對一。

一對一聯繫(1:1):對於實體集A和B來說,A中任意一個實體a,B中至多有一個實體b與之聯繫,反過來也是如此,則A與B就是一對一聯繫。

一對多聯繫(1:N):在實體集A中每一個實體a,B中有N個實體與之聯繫,對於實體集B中的每一個實體b,實體集A中至多有一個實體a與之聯繫,則A與B為一對多聯繫。

多對多聯繫(M:N):如果對於實體集A中每一個實體a,B中有N個實體與之對應,而且對於B中每個實體b,A中有M個實體與之對應,則A和B是多對多聯繫。

2、E—R圖繪製

 

 

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 簡介 vim是Linux 系統下類似於Windows的記事本的編輯器。 vim 中經常使用的三種模式 一般模式:瀏覽文件內容。 插入模式:編輯文件內容。 底行模式:進行保存編輯內容,退出等操作。 基本命令操作 vim filename ,打開文件,進入一般模式。 那麼現在如果我想修改文件怎麼辦呢? ...
  • 一開始,坐著上機實驗,一直搞不通為什麼虛擬機上的客戶機可以ping通自己的ip也可以ping通自己本身的ip,但是主機ping不通虛擬機的客戶機,也ping不通虛擬機的網關。 嘗試了各種問題,也追出了一大串問題: 1.宿主上,乙太網屬性什麼都沒有,連接時使用的框+此連接使用下列項目(o)裡面都沒有內 ...
  • 在安裝配置完zabbix_agentd以後,網頁端出現 Get value error: cannot connect to [[192.168.238.139]:10050]: [113] No route to host 錯誤,客戶端主機無法被監聽 解決方法: 首先在服務端ping一下客戶端的I ...
  • 線上箭頭表示畫線的方向。WINDING模式和ALTERNATE模式都會填充三個封閉的L型區域,號碼從1到3。兩個更小的內部區域,號碼為4和5,在ALTERNATE模式下不被填充。但是在WINDING模式下,號碼5的區域會被填充,這是因為區域的內部到達圖形的外部必須穿過兩條相同方向的線。號碼為4的區域 ...
  • 前言:有個問題感覺一直會被問道:進程和線程的區別?也許之前我會回答: 進程:資源分配最小單位 線程:輕量級的進程 是系統調度的最小單位 由進程創建 多個線程共用進程的資源 但是現在我覺得一個比喻回答的更好:程式就像靜止的火車,進程是運行的火車,線程是運行火車的每節車廂。 個人感覺理解遠比背些概念性東 ...
  • 本文收錄在Linux運維企業架構實戰系列 必備條件 硬體條件 硬體條件 ① 一臺安裝好 Jumpserver 系統的可用主機(堡壘機) ② 一臺或多台可用的 Linux、Windows資產設備(被管理的資產) 服務條件 (1)coco服務 ① 鑒於心態檢測存在延遲,也可以直接在 Jumpserver ...
  • 下載zip安裝包: MySQL8.0 For Windows zip包下載地址:https://dev.mysql.com/downloads/file/?id=476233,進入頁面後可以不登錄。後點擊底部“No thanks, just start my download.”即可開始下載。 或直 ...
  • 主從複製 官方文檔:https://redis.io/topics/replication Redis中的主從複製,也就是Master-Slave模型,有以下特點 Master可以擁有多個slave 多個slave不僅可以連接同一個master,還可以連接到其他的slave 主從複製不會阻塞mast ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...