數據庫系統概念(第七周 第一堂)(E-R模型)

目錄

前言

基本概念?

觀點與模型

作用與要求?

E-R模型元素?

實體(entity)

實體集(entity set)

屬性(attribute)

域(domain)

碼 (key)

聯系 (relationship)

參與(participation)

角色(role)?

映射基數(?Mapping Cardinalities)

弱實體集(weak entity set)

總結?


前言

本堂課重點來講講E-R模型,然后在下一堂課我們深入來探討如何利用E-R模型進行數據庫設計

E-R模型是1976年由P.P.S.Chen提出的用來描述概念的模型

基本概念?

觀點與模型

觀點:世界是由一組稱作實體的基本對象和這些對象的聯系構成的(世界=實體+實體聯系)

模型:模型就是世界本質的一種反射,能夠突出世界的某方面特征

作用與要求?

作用:幫助澄清用戶的數據需求、數據邏輯模型設計的基礎(用于數據分析、數據庫設計、數據關系研究)

?要求:清晰、易懂、完整、準確、無二義

E-R模型元素?

實體(entity)

定義:客觀存在并且相互可以區分的事物叫實體(唯一標識)

例子:學生張三(具體的)、軟件學院(抽象的)等等

E-R模型:

側重點:實體集下的多個實體(Johnson等)?

實體集(entity set)

定義:具有相同類型及屬性的實體集合

例子:全體學生、全體課程、所有學院等

實體可以認為是實體集的外延(Extension)

?E-R模型:

?側重點:實體集的屬性

屬性(attribute)

定義:實體集中所有實體所具有的描述性的性質

例如:學生的學號、姓名、年齡

1、實體集的屬性是將實體集映射到域的函數(實體可以認為是高維度上的一個點)

2、實體的屬性可以唯一標識一個實體

分類:

1、簡單屬性:不可再分的屬性(性別、年齡等)

2、復合屬性:可以劃分為更小的屬性(電話號碼=區號+本地號碼)

1、單值屬性:?每一個實體在該屬性上的取值唯一

2、多值屬性:每一個實體在該屬性上有多于一個的取值

1、基屬性:除了派生屬性外的所有屬性都是基屬性

2、派生屬性:從基屬性通過計算派生出來的屬性

理論上只存基屬性值,而派生屬性只存其定義或依賴關系,使用時再從基屬性中計算出來

同個框內的分類是對立的,不同框內的分類是可以并存的?

小測試:

name:復合屬性、單值屬性、基屬性

phone_number:復合屬性、多值屬性?、基屬性

age():單值屬性、簡單屬性、派生屬性

域(domain)

定義:屬性的取值范圍

例如:性別的域為(‘0’,‘1’),月份的域為(‘1’-‘12’)

碼 (key)

超碼:能唯一標識實體的屬性或屬性組

候選碼:任意真子集都不能成為超碼的最小超碼

主碼:從所有候選碼中任意選定一個用來區別同一實體集中不同實體的候選碼(候選碼中任意選)

E-R模型:實體集屬性中作為主碼的屬性用下劃線來標明

聯系 (relationship)

定義:實體之間的相互關聯稱為聯系

例如:老師與學生之間的授課關系

聯系有自己的屬性,在E-R模型圖中不要把聯系屬性合并到實體中。但是在表格設計很多情況會把聯系的屬性合并到實體表中!!

?元或度:參與聯系的實體集的個數稱為聯系的元(或者度)

E-R模型:

菱形表示:實體集之間的聯系

參與(participation)

定義:實體集之間的關聯稱為參與(實體與聯系的關系就是參與關系)

例如:王軍選修數據庫=“王軍”、“數據庫”參與了聯系“選修”

分類:全部參與、部分參與

?E-R模型:

實線:實體集與聯系之間的參與

一條實線:部分參與聯系

兩條實線:全部參與聯系

角色(role)?

定義:實體在聯系中的作用稱為實體的角色

E-R模型:?

實體集不止一次參與某種聯系時才需要顯式指明其角色

映射基數(?Mapping Cardinalities)

定義:實體之間聯系的數量,即一個實體通過一個聯系集能與另一個實體集相關聯的實體的數目

例如:一個導師對應多個研究生、一個本科生上多門課程(一門課程同時給多個學生學習)等等

E-R模型:

箭頭指向的實體集是一,線段的實體集是多(上圖反映的是多對一的關系)?

一對一的關系。一個導師對應一個學生,一個學生對應一個導師?

多對多的關系。一個導師對應多個學生,一個學生對應多個導師?

一個實體集內的二元聯系同樣需要指定映射基數?

多個實體集間的聯系情況

注意!絕對不是題目中出現三個實體集與聯系就寫成三元聯系,也有可能是兩個二元聯系。具體要看三者之間是不是都有關系還是只有其中一者和另外兩個有關系!!!

另外一種表示:?

a..b:表示其對應的實體集參與聯系的個數限制?

例如:0..*是0到無上限?(即多);1..1是1到1(即一);20..*是學生參與選修至少20位

弱實體集(weak entity set)

定義:若一個實體所有屬性合在一起都不足以形成主碼,則稱該實體是弱實體

原因:1、聯系必須是實體之間的;2、想要屬性參與聯系則必須將屬性實體化;3、有些場景下,屬性必須參與某種聯系

存在依賴:弱實體集必須存在依賴與一個強實體集,但是存在依賴不會導致一個弱實體集(如:信用卡依賴于客戶實體,但是是一個強實體集)

分辨符:也叫部分碼,能夠與所依賴的強實體集中的主碼共同唯一標識弱實體集(弱實體集主碼=依賴強實體集主碼+弱實體集分辨符

標識性聯系:與一般聯系不同,標識性聯系只存在與強實體集和弱實體集之間。用雙邊框的菱形表示

例如:

關鍵點:

1、實體集的表示與上面不同。這里的屬性是利用圓圈連接實體來表示的。

2、transaction是指交易。交易額和interestRec(利息額)以及銀行柜員必然存在關系?。每一筆交易都由一個柜員完成,都將計入利息額度中。但是這里交易是屬性不能參與聯系,所以這里需要將它實體化為弱實體集。

3、上圖中transaction屬性有兩個圈表示其是多值屬性,還未實體化

1、將交易記錄、利息記錄實體化

2、將這兩個弱實體利用標識性聯系與強實體集聯系

3、弱實體集的分辨符用下劃虛線表示

E-R模型:

?

總結?

本文的所有知識點、圖片均來自《數據庫系統概念》(黑寶書)、山東大學李暉老師PPT。不可用于商業用途轉發。

本篇已經碼了三個多小時了,算是簡單入門E-R模型的文章,下次我們來講講E-R模型向關系模型(可以理解為數據庫中的表)的轉化

如果能幫助到大家,大家可以點點贊、收收藏呀~?

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

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

相關文章

虛擬現實環境下的遠程教育和智能評估系統(五)

查閱相關VR眼動注意力聯合教育學相關論文 1.Exploring Eye Gaze Visualization Techniques for Identifying Distracted Students in Educational VR(IEEE VR 2020) 摘要:我們提出了一種架構,使VR教學代理能夠響應眼動追蹤監控…

Android HIDL接口添加

一.HIDL介紹 HIDL的全稱是HAL interface definition language(硬件抽象層接口定義語言),是Android Framework 與Android HAL之間的接口。HIDL 旨在用于進程間通信 (IPC),進程之間的通信 采用 Binder 機制。 二.HIDL 與AIDL 的對…

JVM之【運行時數據區1】

JVM簡圖 運行時數據區簡圖 一、程序計數器(Program Counter Register) 1.程序計數器是什么? 程序計數器是JVM內存模型中的一部分,它可以看作是一個指針,指向當前線程所執行的字節碼指令的地址。每個線程在執行過程中…

Python魔法之旅-魔法方法(04)

目錄 一、概述 1、定義 2、作用 二、主要應用場景 1、構造和析構 2、操作符重載 3、字符串和表示 4、容器管理 5、可調用對象 6、上下文管理 7、屬性訪問和描述符 8、迭代器和生成器 9、數值類型 10、復制和序列化 11、自定義元類行為 12、自定義類行為 13、類…

Tensorflow入門實戰 P02-彩色圖片分類

目錄 1、序言 2、主要代碼 3、運行結果展示 (1)展示cifar10里面的20張圖片 (2)預測的圖片 (3)模型評估 本文為🔗365天深度學習訓練營 中的學習記錄博客🍖 原作者:K…

postgressql——ReadBuffer_common函數(7)

PostgreSQL中ReadBuffer_common函數 數據結構 BufferDesc 共享緩沖區的共享描述符(狀態)數據 typedef struct BufferDesc {//buffer tagBufferTag tag; /* ID of page contained in buffer *///buffer索引編號(0開始)int buf_id; /* buffers i…

大語言模型(一)OLMo

一、簡介 OLMo 是由AI2 發布的大語言模型以及構建框架,與大多數之前的嘗試只發布模型權重和推理代碼不同,OLMo 開源了整個框架,包括訓練數據、訓練代碼以及模型評估代碼。 OLMo框架包括構建和研究語言模型所需的工具和資源。對于訓練和建模,它包括完整的模型權重、訓練代…

SZJG-離線環境成功安裝Python和pip

在離線環境下安裝Python和pip,可以按照以下步驟進行。假設你已經下載了Python的安裝包 (Python-3.10.13.tgz)。 步驟 1:準備安裝包 將 Python-3.10.13.tgz 拷貝到目標機器上的一個目錄中,例如 /home/user/。 步驟 2:解壓安裝包…

4萬字長文讓人看懂ElementUI面試題及參考答案

ElementUI是什么?請簡述其主要特點。 ElementUI是一個基于Vue.js的桌面端組件庫,由餓了么團隊開發并維護。它旨在為開發人員提供一套用于構建網頁應用程序的高質量UI組件。ElementUI遵循Vue.js的設計思想,使得開發者可以快速地構建出風格統一、功能豐富的界面。 主要特點:…

水經微圖PC版4.3.10發布

讓GIS更簡單高效,讓地圖更豐富及時! 水經微圖(以下簡稱“微圖”)新版已上線,在該版本中主要新增了天地圖歷史影像查看功能,以及其它功能的優化。 當前版本 當前版本號為:4.3.10 如果你發現該…

Pytorch反向傳播算法(Back Propagation)

一:revise 我們在最開始提出一個線性模型。 x為我們的輸入,w為權重。相乘的結果是我們對y的預測值。 那我們在訓練時就是對這個權重w進行更新,就需要用到上一章提到的梯度下降算法,不斷更新w。但是此時注意不是用y的預測值對w進…

linux centos nfs掛載兩臺服務器掛載統一磁盤目錄權限問題

查看用戶id id 用戶名另一臺為 修改uid和gid為相同id,添加附加組 usermod -u500 -Gwheel epms groupmod -g500 epms

網絡協議。

一、流程案例 接下來揭秘我要說的大事情,“雙十一”。這和我們要講的網絡協議有什么關系呢? 在經濟學領域,有個倫納德里德(Leonard E. Read)創作的《鉛筆的故事》。這個故事通過一個鉛筆的誕生過程,來講述…

[代碼復現]Self-Attentive Sequential Recommendation(ing)

參考代碼:SASRec.pytorch 可參考資料:SASRec代碼解析 前言:文中有疑問的地方用?表示了。可以通過ctrlF搜索’?。 環境 conda create -n SASRec python3.9 pip install torch torchvision因為我是mac運行的,所以device是mps 下面…

算法(七)插入排序

文章目錄 插入排序簡介代碼實現 插入排序簡介 插入排序(insertion sort)是從第一個元素開始,該元素就認為已經被排序過了。然后取出下一個元素,從該元素的前一個索引下標開始往前掃描,比該值大的元素往后移動。直到遇到比它小的元…

Caliburn.Micro框架學習筆記——Action的參數傳遞機制

據此篇文章,我們繼續來談談Caliburn.Mirco的Action參數傳遞機制。因此程序結構都是默認MVVM的形式。 基本機制 它的機制是—— Caliburn.Micro 的智能對象參數綁定機制通過約定和反射使得視圖和視圖模型之間的交互變得更加直觀和簡潔。通過 cal:Message.Attach 語…

【C語言】探索文件讀寫函數的全貌

🌈個人主頁:是店小二呀 🌈C語言筆記專欄:C語言筆記 🌈C筆記專欄: C筆記 🌈喜歡的詩句:無人扶我青云志 我自踏雪至山巔 🔥引言 本章將介紹文件讀取函數的相關知識和展示使用場景&am…

vue中如何進行Markdown文檔展示與解析

vue中如何進行Markdown文檔展示與解析 一、安裝插件二、如何使用 需求&#xff1a;接口返回了一個政策詳情頁面&#xff0c;里面有圖片&#xff0c;用v-html展示的是url&#xff0c;所以改用vue-markdown 一、安裝插件 npm install vue-markdown --save二、如何使用 <vue-…

RabbitMQ 如何保證消息不丟失

開啟消息確認機制&#xff1a; 在發布消息時&#xff0c;可以設置deliveryMode為2&#xff08;持久化&#xff09;&#xff0c;以確保消息不會因為RabbitMQ的崩潰而丟失。 使隊列持久化&#xff1a; 通過設置durable為true&#xff0c;可以確保隊列在RabbitMQ重啟后依然存在。…

Python 實戰:打造智能進銷存系統

想象一下&#xff0c;在繁忙的商店里&#xff0c;每天都有數以百計的商品進進出出&#xff0c;庫存在不斷變化&#xff0c;銷售數據涌入&#xff0c;而你卻能輕松應對一切。是的&#xff0c;Python 可以幫你實現這一切。本文將教你如何使用 Python 構建一個智能的進銷存系統&am…