數據庫原理及應用【二】數據模型

層次模型

tree

  • Record and field
  • Parent-Child relationship(PCR)

在這里插入圖片描述

每個記錄類型只有一個父節點

無法表達多對多信息

采用虛記錄解決多對多

網狀數據模型

系:主記錄->屬記錄
主記錄和屬記錄都可以有好多個

在這里插入圖片描述在這里插入圖片描述

關系模型

表:table/relation

  • 擁有更高的抽象級別,可以用數學里面集合論的知識研究

  • 屏蔽底層編程細節,易于理解

  • 可以引入代數系統

  • 非過程化查詢語言

  • 軟鏈接,邏輯指針

  • 屬性和域

  1. 原子數據:要求表的每個屬性是原子的,不能再分。不允許出現表中套表。(一范式)
  2. 允許空值
  • 關系(表)和元組
    屬性的個數稱作目
    屬性,列,字段
    元組,行,記錄

主鍵:一組屬性

  • unique
  • not null
  • 可以決定其他元組的其他屬性
  • 屬性組的子集不滿足上述條件。如果不滿足這個條件就稱作超鍵。
  • 如果多個屬性組滿足上述條件,我們可以指定一個為主鍵,其他的為候補鍵
  • 如果這個屬性組就是元組本身,稱這個屬性組為全鍵

外鍵:一組屬性

  • 來自其他關系,并且是其他關系的主鍵。邏輯指針
  • 且必須在另一個表里面存在這個主鍵

域完整性約束:每個元組的每個屬性的值都必須滿足值域
實體完整性約束:主鍵不允許為空
引用完整性約束:外鍵的值必須在所引用的表中存在

關系代數

基本操作

  • 選擇Selection σ\sigmaσ :選擇一些行
  • 投影Projection π\piπ:選擇一些列。投影操作應該消除可能出現的重復元素。實際的系統不會自動進行消除重復元素,除非用戶要求。
  • 叉乘Cross-product ×\times× : 笛卡爾乘積
  • 集合差Set-difference?-?:集合減法
  • 合并Union∪\cup:將兩個表合并起來

上述五種操作構成了數據庫完備的操作集合。任何其他操作都可以通過這些操作完成。

上面的操作都是封閉的。

后面兩種操作要求參與運算的兩個集合滿足并兼容的條件:

  • 屬性個數一樣
  • 屬性類型一樣

連接操作:先做笛卡爾乘積,再做選擇。實際上可以進行查詢優化,否則效率比較低。

  • 等值連接
  • 自然連接:按照兩個表的共同屬性進行等值連接

除法操作:A/B
在這里插入圖片描述
A/B=πx(A)?πx(πx(A)×B?A)A/B = \pi_x(A)-\pi_x(\pi_x(A)\times B-A) A/B=πx?(A)?πx?(πx?(A)×B?A)

首先先將A中特有的屬性x和B中的屬性y分離開,然后再叉乘,得到的是一個比A大的集合,減去A后剩下的就是那些原本沒有B屬性的元組,將這些x提取出來再減去他們就是正確的x.

外連接:找不到匹配仍然保留元素,用空值填補

  • 左外連接:保留左邊表的所有元素
  • 右外連接:保留右邊表的所有元素
  • 全外連接:保留兩張表中的所有元素

外并:將不滿足并兼容的表并在一起,新表的屬性是原來兩張表的屬性的并,元組加在一起,缺少的元素補空值。

關系演算

基于謂詞邏輯的非過程化的表達

  • 元組關系演算TRC
  • 域關系演算DRC

等價的,區別在于變量的定義不同。域關系演算的變量是屬性。

域關系演算

  • 原子公式
    • <x1,x2,…,xn>屬于表
    • X op Y
    • X op constant
  • 公式
    • 原子公式
    • 邏輯運算
    • 使用量詞

對某個變量使用量詞就稱這個量詞被綁定

不安全的查詢:如果查詢結果是無限的,就說這個查詢是不安全的。

安全的關系演算和關系代數是等價的。

SQL語言建立在關系演算之上。

元組關系演算

變量定義在元組上

ER數據模型

傳統的數據模型擅長表達以記錄為基礎的結構化的數據,支持日常事務型的應用。

不能根據用戶的需求或者應用的需求

不能用一種很自然的方法表達實體之間的關系

語義信息不夠明確

支持的數據類型太少,有時候不能滿足應用的需求

實體Entity:現實世界中可區別的對象,使用一組屬性來描述
實體集Entity Set:實體的集合
允許復合類型,多值屬性

聯系Relationship:實體之間的聯系

E-R圖:對E-R模型的圖形化的展示。

方框:實體
圓圈:屬性
菱形:聯系

基數比例約束:

  • 一對一
  • 一對多
  • 多對多

參與度約束:一個實體參與一個聯系的最少和最多次數
全參與
部分參與

擴展ER模型:
弱實體:不能單獨存在,必須依賴其他實體存在的實體。例如職工的家屬
普遍化和特殊化
聚集:把聯系看作實體集和其他實體發生聯系
范疇:不同類型的實體組成范疇

面向對象數據模型

突破一范式的限制

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

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

相關文章

數據可視化【二】HTML+CSS+SVG+D3

HTML、CSS和SVG學習實現代碼&#xff1a;https://vizhub.com/Edward-Elric233/89185eb96bc64a9d81777873a0ccd0b9 index.html <!DOCTYPE html> <html><head><title>Shapes with SVG and CSS</title><link rel"stylesheet" href&qu…

數據可視化【三】基本概念

Visualization is suitable when there is a need to augment human capabilities rather than replace people with computational decision-making methods. 當可以信賴的智能化的解決方案存在的時候&#xff0c;可視化是不必要的。 當不知道需要分析的問題是什么的時候&…

數據可視化【四】Bar Chart

Make a Bar Chart Representing a data table in JavaScriptCreating rectangles for each rowUsing linear and band scalesThe margin conventionAdding axes 以下學習內容參考博客&#xff1a;傳送門 select()選擇所有指定元素的第一個 selectAll()選擇指定元素的全部 上…

數據庫原理及應用【三】DBMS+SQL

DBMS Query LanguagesInterface and maintaining tools(GUI)APIsClass Library QL 不是圖靈完備的&#xff0c;不是一種編程語言。 QL SQL是一種非過程化的查詢語言。 DDL數據定義語言&#xff1a;表&#xff0c;視圖QL 查詢語言DML 數據操縱語言DCL 數據控制語言 Base t…

數據可視化【五】 Scatter Plot

Scatter Plot vizhub上實現的代碼&#xff1a; https://vizhub.com/Edward-Elric233/53807a1b35d94329b3689081cd2ea945 https://vizhub.com/Edward-Elric233/b9647d50899a4a0e8e917f913cd0a53a https://vizhub.com/Edward-Elric233/8c6b50cd81a04f048f490f48e4fe6264 由前…

數據可視化【六】Line Chart Area Chart

Line Chart vizhub代碼&#xff1a; https://vizhub.com/Edward-Elric233/094396fc7a164c828a4a8c2e13045308 實現效果&#xff1a; 這里先使用d3.line()設置每個點的x坐標和y坐標&#xff0c;然后再用這個東西設置path的d屬性&#xff0c;就可以得到曲線。 const lineGen…

數據可視化【七】 更新模式

Enter 以下面這個簡單的代碼進行分析 const svg d3.select(svg); // svg.style(background-color, red); testconst height svg.attr(height); // equals paresFloat() const width svg.attr(width);const makeFruit type >( {type} ); //這種寫法好像能夠直接得到一個…

數據可視化【八】根據數據類型選擇可視化方式

Marks:Rows PointsLinesAreas Channels:Columns PositionColorShape

數據可視化【九】單向數據流交互

我們使用一下上上篇博客的代碼。 例如我們想要當鼠標點擊水果的時候會出現黑色的框&#xff0c;再點擊一下黑色的框就會消失。 首先&#xff0c;我們應該給組件添加點擊事件&#xff1a; fruitBowl.js gruopAll.on(click, d > onClick(d.id));這個on函數第一個參數是事件…

數據庫原理及應用【四】數據庫管理系統

查詢優化 數據庫管理系統中非常重要的一部分。 代數優化 按照一定的規則將語句變化成關系代數以后進行優化 操作優化 對代數優化后的查詢樹使用比較好的方法進行查詢。 主要是對連接運算進行優化 嵌套循環歸并掃描索引優化哈希連接 恢復機制 備份&#xff08;完整備份差…

數據庫原理及應用【五】安全性和完整性約束

數據庫一致性被破壞&#xff1a; 系統故障許多用戶的并發訪問人為破壞事務本身不正確 保護數據庫一致性的方法&#xff1a; 視圖/查詢修改訪問控制 普通用戶擁有資源特權的用戶DBA 數據庫的安全問題 身份驗證 口令物理設備 GRANT CONNECT TO John IDENTIFIED BY 123456…

遞歸式復雜度求解

代換法 猜測復雜度驗證是否滿足遞歸式&#xff08;使用歸納法&#xff09;找到常數應該滿足的條件針對基本情況&#xff0c;常數足夠大時總是成立的 需要注意的是&#xff0c;我們猜測的復雜度有可能不滿足遞歸式&#xff0c;這個時候就要通過減去一些低階項來使得歸納成立。…

斐波那契數列計算

定義 斐波那契數列&#xff1a; F[n]{0,n01,n1F[n?1]F[n?2],elseF[n] \begin{cases} 0,n0 \\ 1,n1\\ F[n-1]F[n-2],else \end{cases} F[n]??????0,n01,n1F[n?1]F[n?2],else? 樸素計算法 根據遞歸式F[n]F[n?1]F[n?2]F[n]F[n-1]F[n-2]F[n]F[n?1]F[n?2]進行計算…

P、NP、NP完全問題、NP難問題

可以在多項式時間內求解的問題稱為易解的&#xff0c;而不能在多項式時間內求解的問題稱為難解的。 P類問題&#xff1a;多項式類型&#xff0c;是一類能夠用&#xff08;確定性的&#xff09;算法在多項式的時間內求解的判定問題。 只有判定問題才屬于P 不可判定問題&#…

數據可視化【十】繪制地圖

Loading and parsing TOPOJSON 導入Topojson d3文件 地址&#xff1a;https://unpkg.com/topojson3.0.2/dist/topojson.min.js 想要找d3文件的話去unpkg.com好像大部分都能找到的樣子 Rendering geographic features 尋找合適的地圖數據&#xff1a;谷歌搜索world-atlas npm…

數據可視化【十一】樹狀圖

Constructing a node-link tree visualization 首先將節點之間的連線畫出來。 使用json函數讀取文件以后&#xff0c;使用hierarchy等函數得到連線的數組&#xff0c;然后綁定這個數組&#xff0c;給每個元素添加一個path&#xff0c;繪畫使用的是一個函數linkHorizontal&…

數據可視化【十二】 顏色圖例和尺寸圖例

有了前面的知識&#xff0c;制作一個圖例應該不是很難&#xff0c;關鍵是我們想要制作一個可以在其他地方進行使用的圖例&#xff0c;這樣就需要能夠動態地設置圖例的大小&#xff0c;位置&#xff0c;等等。 這里直接上代碼&#xff1a; colorLegend.js export const color…

數據可視化【十三】地區分布圖

在前面的博客中已經介紹了如何繪制地圖&#xff0c;這一節學習如何繪制地區分布圖。如果對繪制地圖還不熟悉的話可以了解一下之前我寫的博客&#xff1a;數據可視化【十】繪制地圖 Intergrating(整合) TopoJSON with tabular data(列表數據) 在前面的博客中沒有使用到tsv文件…

3.01【python正則表達式以及re模塊】

python正則表達式以及re模塊 元字符 正則表達式的語法就由表格中的元字符組成&#xff0c;一般用于搜索、替換、提取文本數據 元字符含義.匹配除換行符以外的任何單個字符*匹配前面的模式0次或1次匹配前面的模式1次或多次?匹配前面的模式0次或1次[]用于定義字符集&#xff…

Linux配置編程環境+云服務器上傳文件

Java環境配置 Ubuntu https://www.cnblogs.com/lfri/p/10437266.html Centos https://blog.csdn.net/qq_21077715/article/details/85536399 Tomcat配置 Centos https://blog.csdn.net/qq_21077715/article/details/85541685 https://www.cnblogs.com/newwind/p/9904561…