實體 聯系 模型mysql_數據庫系統概念讀書筆記――實體-聯系模型_MySQL

bitsCN.com

數據庫系統概念讀書筆記——實體-聯系模型

前言

為了重新回顧我寫的消息系統架構,我需要重新讀一下數據庫系統概念的前三章,這里簡單的做一個筆記,方便自己回顧

基本概念

實體-聯系(E-R)數據模型基于對現實世界的這樣一種認識:世界由一組稱為實體的基本對象及這些對象間的聯系組成。E-R數據模型所采用的三個主要概念是:實體集、聯系集和屬性

實體集

實體是現實世界中可區別于其他對象的“事件”或“物體”

實體集是具有相同類型及共享相同性質(或屬性)的實體集合

實體通過一組屬性來表示。屬性是實體集中每個成員具有的描述性質。將一個屬性賦予某實體集表明數據庫為實體集中每個實體存儲相似的信息,但每個實體在自己的每個屬性上都有各自的值。屬性類型劃分:

簡單屬性和符合屬性

單值屬性和多值屬性

派生屬性

聯系集

聯系是多個實體間的相互關聯

聯系集是同類型聯系的集合。規范的說,聯系集是n(n >= 2)個實體集上的數學關系,這些實體集不必互異。如果E1, E2, ..., En為n個實體集,那么聯系集R是{(e1,e2,e3,..,en)|e1 (- E1, e2 (-E2, ..., en (- En}的一個子集,其中(e1, e2, e3,...,en)是一個聯系

約束

有了實體集合,有了聯系集合,自然而然的就產生出來約束,約束描述的是實體集和實體集之間的關系,而這種關系具現為一個聯系集。我們要討論的是映射基數和參與約束

映射基數

映射基數,或基數比例,指明通過一個聯系集能同時與另一個實體相聯系的實體數目

對于實體集A和B之間的二元聯系集R來說,映射基數必然是以下情況之一:

一對一

一對多

多對一

多對多

參與約束

如果實體集E中的每一個實體都參與到聯系集R的至少一個聯系中,我們稱實體集E全部參與聯系集R

如果實體集E中只有部分實體參與到聯系集R的聯系中,我們稱實體集E部分參與聯系集R

我們必須有一個能區分一個實體集中的所有實體的方法。概念上來說,各個實體是互異的;但從數據庫的觀點來看,它們的區別必須用其屬性來表明

碼概念使得我們可以區別實體,碼同樣可以唯一地標識聯系,并將聯系互相區分開來

超碼:一個或多個屬性的集合,這些屬性的組合可以使我們在一個實體集中唯一地標識一個實體

候選碼:任意真子集都不能稱為超碼的超碼,也就是最小的超碼

主碼:數據庫設計者選定的候選碼

設計問題

實體集和聯系集的概念并不精確,而且定義一組實體及它們的相互聯系可以有多種不同的方式

用實體集還是屬性

書里的電話號碼和姓名的例子很清楚,哪個為屬性哪個為實體集,注意兩點常見的錯誤:

一個常見的錯誤是用實體集的主碼作為另一個實體集的屬性,而不是用聯系

另一個常見的錯誤是將有關系的實體集的主碼屬性作為聯系集的屬性

用實體集還是聯系集

用聯系集可能產生的兩個問題:

數據多次存儲,浪費存儲空間

更新可能使數據處于不一致的狀態,即兩個聯系中應該具有相同值的屬性具有了不同的值

二元聯系集與n元聯系集

n元關系可以分解成為二元關系,但是會出現關系描述不準確的情況

實體-聯系圖

E-R圖包括如下幾個主要組件:

矩形:實體集

橢圓:屬性

菱形:聯系集

線段:將屬性連接到實體集或將實體集連接到屬性集

雙橢圓:多值屬性

虛橢圓:派生屬性

雙矩形:弱實體集

舉個書上的例子:

1405LF14U940-1B25.jpg

后記

純粹為了回顧E-R模型和E-R圖的畫法,比較水,高手可以直接跳過了!bitsCN.com

本條技術文章來源于互聯網,如果無意侵犯您的權益請點擊此處反饋版權投訴

本文系統來源:php中文網

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

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

相關文章

使用Twitter Bootstrap,WebSocket,Akka和OpenLayers玩(2.0)

原始帖子可以在ekito網站上找到。 對于我們的一位客戶,我們需要顯示一張具有實時更新的車輛位置的地圖。 因此,我開始使用Play制作原型! 框架及其最新發布的版本2.0,使用Java API。 我從Play的網絡聊天室開始! 2.0個樣…

同步時間

同步時間 [rootlocalhost 03]# ntpdate 0.centos.pool.ntp.org 轉載于:https://www.cnblogs.com/cglWorkBook/p/5556920.html

mysql 5.6.23免安裝_mysql5.6.23免安裝配置

1.官網下載,并解壓2.環境變量,path下,追加mysql的bin路徑D:\Program Files\mysql\bin;3.mysql目錄下的my-default.ini重命名為my.ini,并添加下面的代碼basedirD:/Program Files/mysql #mysql路徑datadirD:/Program Files/mysql/d…

在Intellij IDEA中運行Vaadin應用

在本文中,我將向您展示如何使用Intellij IDEA運行vaadin應用程序。 Vaadin提供了一些用于Eclipse和Netbeans的插件。 但是對于Intellij IDEA來說,還沒有插件。 但是部署vaadin應用程序比其他兩個IDE容易。 這是您要遵循的步驟。 1.首先創建一個新項目&am…

mysql主從數據庫

Mysql主從配置,實現讀寫分離 大型網站為了軟解大量的并發訪問,除了在網站實現分布式負載均衡,遠遠不夠。到了數據業務層、數據訪問層,如果還是傳統的數據結構,或者只是單單靠一臺服務器扛,如此多的數據庫連…

安裝openstack時遇到的錯誤

學習opensatck的第一步是安裝DevStack來進行本機操作 1. 下面命令沒有權限,解決辦法:切換到root用戶下執行sudo -s echo "stack ALL(ALL) NOPASSWD: ALL" >> /etc/sudoers2. 執行下面命令提示沒有git,解決辦法:su…

Java EE 6示例– Galleria –第3部分

關于Galleria示例的先前文章( 第1 部分 | 第2部分 | 第3部分 | 第4部分 )指導您完成基礎知識以及對GlassFish和WebLogic的初始部署。 從今天開始,我嘗試在其中添加一些企業級功能,因為我發現他們在自己的項目中提出了很多要求。 我…

在 Windows 上測試 Redis Cluster的集群填坑筆記

redis 集群實現的原理請參考http://www.tuicool.com/articles/VvIZje集群環境至少需要3個節點。推薦使用6個節點配置,即3個主節點,3個從節點。新建6個文件夾 分別是 7000/7001/7002/7003/7004/7005將redis.windows.conf 復制一份然后修改配置文件中的下面…

不成為編程天才的5種貢獻方式

安迪萊斯特(Andy Lester)早在三月發布了原始指南,其中介紹了14種不成為編程天才或搖滾明星的貢獻開源的方法 ,我真的很喜歡這個想法。 這就是為什么我決定稍微采納一下這篇文章,并告訴您如何以及可以做什么來支持自己喜…

mysql數據庫設計與應用答案智慧樹_智慧樹_MySQL數據庫設計與應用_完整免費答案...

單位工程施工組織設計的技術經濟指標體系包括有()。A.工期指標B.勞動指標C.臺班利用率D.成本降低大跨徑橋梁采用()將會取得良好的技術經濟效益。A.橫移法施工B.頂推法施工C.轉體法施工D&#xf…

拓撲排序最長鏈-P3119 [USACO15JAN]草鑒定Grass Cownoisseur

https://www.luogu.org/problem/show?pid3119 本來我是來練習tarjan的,結果tarjan部分直接copy了,反而拓撲排序部分想了好久; 這道題SZB大神兩次就AC; 但我等到AC,寫好題解就只能洗洗睡了; 唉~ 差距怎…

談談父類和子類的隔離性

以前寫代碼知道要給類外設置訪問接口, 例如下例: 1 class Money2 {3 public:4 Money(int money) : m_curValue(money){}5 6 void store(int money) { m_curValue money;}7 void spent(int money){ m_curValue - money;}8 private:9 int m_curValue…

用于數據庫測試的DBUnit,Spring和注釋

如果您曾經嘗試用Java編寫數據庫測試&#xff0c;則可能會碰到DBUnit 。 DBUnit允許您設置和拆除數據庫&#xff0c;以便它包含可針對其編寫測試的一致行。 通常&#xff0c;您可以通過編寫一個簡單的XML文檔來指定要DBUnit插入的行&#xff0c;例如&#xff1a; <?xml ve…

阿里云centos 7.6安裝mysql_阿里云Centos7上安裝MySQL教程

1 基本安裝過程1.查看系統是否安裝了mysql軟件# rpm -qa|grep -i mysql2.將已經安裝過的軟件卸載掉。注意&#xff1a;這樣的卸載是不徹底&#xff0c;不過這里夠用了# yum remove 軟件名3.CentOS 7的yum源中默認是沒有mysql的。所以&#xff0c;為了解決這個問題我們首先下載安…

Struts2中數據封裝方式

一、通過ActionContext類獲取 public class ActionContextDemo extends ActionSupport { Override public String execute() throws Exception { //獲取ActionContext對象 ActionContext context ActionContext.getContext(); //調用getParameters…

第五章、搭建S3C6410開發板的測試環境

通過對本章的學習&#xff0c;我對s3c6410開發板的測試環境有了一定的認識&#xff0c;并掌握了如下的知識點&#xff1a;一、對于s3c6410這款開發板&#xff0c;它是一款低功耗、高性價比的處理器&#xff0c;它是基于ARM11的內核。二、不同開發板的區別主要在燒錄嵌入式系統的…

IBM JVM調整– gencon GC策略

本文將向您詳細介紹從Java虛擬機&#xff08;例如HotSpot或JRockit&#xff09;遷移到IBM JVM時重要的Java堆空間調整注意事項。 該調整建議基于我為我的一個IT客戶端執行的最新故障排除和調整任務。 IBM JVM概述 正如您可能從其他文章中看到的那樣&#xff0c;IBM JVM在某些方…

mysql主從配置錯誤_mysql主從配置失敗,主從通訊失敗

配置mysql主從的時候&#xff0c;檢查slave狀態&#xff0c;發現報錯信息&#xff0c;Error The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement on query.mysql> show slave status\G*************************** 1. r…

echarts如何顯示在頁面上

echarts如何顯示在頁面上 1.引入echarts的相關.js文件 <script src"js/echarts.min.js"></script> 2.新建一個div&#xff0c;style自己定&#xff0c;但必須要有width和height <div id"history_state" style"width: 400px;height: 20…