E-R模式與關係模式的轉換
一.概念
E-R(Entity-Relationships)模式的構成成分是實體集、屬性和聯絡集,其表示方法如下:
(1) 實體集用矩形框表示,矩形框內寫上實體名。(2) 實體的屬性用橢圓框表示,框內寫上屬性名,並用無向邊與其實體集相連。
(3) 實體間的聯絡用菱形框表示,聯絡以適當的含義命名,名字寫在菱形框中,用無向連線將參加聯絡的實體矩形框分別與菱形框相連,並在連線上標明聯絡的型別,即1—1、1—N或M—N。
關係模式(Relation Schema)是對關係的描述,它可以形式化地表示為:
R(U,D,dom,F)其中R為關係名,U為組成該關係的屬性名集合,D為屬性組U中屬性所來自的域,dom為屬性向域的映象集合,F為屬性間資料的依賴關係集合。通常簡記為:R(U)或R(A1,A2,…,An)其中R為關係名,U為屬性名集合,A1,A2,…,An為各屬性名。
二.E-R圖轉換為關係模型的轉換規則
1)實體集轉換為關係
–實體集對應於一個關係–關係名:與實體集同名。
–屬性:實體集的所有屬性。
–主碼:實體集的主碼。
2) 聯絡轉換為關係
聯絡轉換成為關係模式。聯絡轉換成為關係模式時,要根據聯絡方式的不同採用不同的轉換方式①1:1聯絡的轉換方法
a) 將1:1聯絡轉換為一個獨立的關係:與該聯絡相連的各實體的碼以及聯絡本身的屬性均轉換為關係的屬性,且每個實體的碼均是該關係的候選碼。b) 將1:1聯絡與某一端實體集所對應的關係合併,則需要在被合併關係中增加屬性,其新增的屬性為聯絡本身的屬性和與聯絡相關的另一個實體集的碼。
第一步:聯絡形成的關係獨立存在:
職工表(職工號,姓名,年齡)主碼:職工號
產品表(產品號,產品名,價格)主碼:產品號
負責(職工號,產品號)主碼:職工號或產品號
合併方案1:“負責”與“職工”兩關係合併:
職工(職工號,姓名,年齡,產品號)
產品(產品號,產品名,價格)
合併方案2:“負責”與“產品”兩關係合併:
職工(職工號,姓名,年齡)
產品(產品號,產品名,價格,職工號)
②1:n聯絡的轉換方法
a)一種方法是將聯絡轉換為一個獨立的關係,其關係的屬性由與該聯絡相連的各實體集的碼以及聯絡本身的屬性組成,而該關係的碼為n端實體集的碼;
b)另一種方法是在n端實體集中增加新屬性,新屬性由聯絡對應的1端實體集的碼和聯絡自身的屬性構成,新增屬性後原關係的碼不變。
步驟一:聯絡形成的關係獨立存在。
倉庫(倉庫號,地點,面積)
主碼:倉庫號
產品(產品號,產品名,價格)
主碼:產品號
倉儲(倉庫號,產品號,數量)主碼:產品號
合併後方案:聯絡形成的關係與n端物件合併。
倉庫(倉庫號,地點,面積)
③m:n聯絡的轉換方法
在向關係模型轉換時,一個m:n聯絡轉換為一個關係。轉換方法為:與該聯絡相連的各實體集的碼以及聯絡本身的屬性均轉換為關係的屬性,新關係的碼為兩個相連實體碼的組合(該碼為多屬性構成的組合碼)。
該模型包含兩個實體集(學生、課程)和一個m:n聯絡
該模型可轉換為三個關係模式:
–學生(學號,姓名,性別,年齡)主碼:學號
-課程(課程號,課程名,學分)主碼:課程號
–選課(學號,課程號,成績)主碼:學號+課程號
二.總結
(1)一個1:1聯絡可以轉換為一個獨立的關係模式,也可以與任意一端對應的關係模式合併。如果轉換為一個獨立的關係模式,則與該聯絡相連的各實體的碼以及聯絡本身的屬性均轉換為關係的屬性,每個實體的碼均是該關係的候選碼。如果與某一端實體對應的關係模式合併,則需要在該關係模式的屬性中加入另一個關係模式的碼和聯絡本身的屬性。
(2)一個1:n聯絡可以轉換為一個獨立的關係模式,也可以與n端對應的關係模式合併。如果轉換為一個獨立的關係模式,則與該聯絡相連的各實體的碼以及聯絡本身的屬性均轉換為關係的屬性,而關係的碼為n端實體的碼。
(3)一個m:n聯絡轉換為一個關係模式。與該聯絡相連的各實體的碼以及聯絡本身的屬性均轉換為關係的屬性,各實體碼的組合組成該關係的碼,或碼的一部分。
(4)三個或三個以上實體間的一個多元聯絡可以轉換為一個關係模式。與該多元聯絡相連的各實體的碼以及聯絡本身的屬性均轉換為關係的屬性,而關係的碼為各實體碼的組合。
(5)具有相同碼的關係模式可合併。
相關推薦
E-R模式與關係模式的轉換
一.概念 E-R(Entity-Relationships)模式的構成成分是實體集、屬性和聯絡集,其表示方法如下: (1) 實體集用矩形框表示,矩形框內寫上實體名。 (2) 實體的屬性用橢圓框表示
AMD模式與CMD模式
提前 角度 處理方式 沒有 全局 div 模塊 多個 amd AMD模式與CMD模式區別 1. 對於依賴的模塊,AMD 是提前執行,CMD 是延遲執行。不過 RequireJS 從 2.0 開始,也改成可以延遲執行(根據寫法不同,處理方式不同)。CMD 推崇 as l
[CentOS 7系列]VIM編輯模式與命令模式
用戶 mtime 一、編輯模式按鍵作用i在當前字符前插入I在光標所在行的行首插入a在當前字符後插入A在光標所在行的行尾插入o在當前行的下一行插入新的一行O在當前的上一行插入新的一行二、命令模式命令作用/word向光標之後查找一個字符word,按n向後繼續搜索?word向光標之前查找一個字符word,按
Linux 修改root密碼 單用戶模式與救援模式
linux 密碼修改 單用戶模式 救援模式單用戶模式重啟Linux進入GRUB界面在系統啟動界面,例如 選擇第一項,並按e鍵,進入edit界面,找到linux16開頭的行,將光標移至ro處,將ro修改為rw init=/sysroot/bin/sh 按Ctrl+X鍵啟動啟動後進入如下所示界面,先
瀏覽器標準模式與怪異模式-CSS1Compat and BackCompat
方法 set code frameset http ctype nal cnblogs 16px 由於歷史的原因,各個瀏覽器在對頁面的渲染上存在差異,甚至同一瀏覽器在不同版本中,對頁面的渲染也不同。在W3C標準出臺以前,瀏覽器在對頁面的渲染上沒有統一規範,產生了差
Outlook 2013連接到Office 365時緩存模式與聯機模式下的流量問題
office 365 outlook 2013 exchange 緩存模式 最近在遷移Office 365時,碰到一個流量居高不下,帶寬不夠用的問題,環境如下:Office 365 E5訂閱國際版,用戶端使用Outlook2013連接O365郵箱,600用戶,50M Office365專用帶寬,當
混雜模式與標準模式總結
mod 默認 內容 也會 XML 使用 聲明 doc 參考 1 區分模式的意義? IE5.5引入了文檔模式的概念,通過使用DOCTYPE實現模式切換,它的主要作用是告訴瀏覽器以哪種模式呈現,如何解析文檔,也就是說兩種模式主要影響CSS內容的呈現,某些情況下也會影響JavaS
實模式與保護模式
虛擬存儲器 有效 偏移 進程 代碼 訪問權限 描述符 兼容 ont 1. 實模式,又叫實地址模式,CPU完全按照8086的實際尋址方法訪問從00000h--FFFFFh(1MB大小)的地址範圍的內存,在這種模式下,CPU只能做單任務運行;尋址公式為:物理地址=左移4位的段
zabbix主動模式與被動模式、添加監控主機、添加自定義模板
Linux學習筆記zabbix主動模式與被動模式 添加監控主機 添加自定義模板 1.將原來的模板下載下來,刪除自己不需要的,導入時要更改名字。 2.創建一個鏈接的模板,取消鏈接後,在刪除模板中不想要的選項。 處理圖形中的亂碼 zabbix主動模式與被動模式、添加監控主機、添加自定義模板
【轉】策略模式與命令模式區別
區別 相同 策略模式 菜單 nbsp 之間 mman 變化 排隊 策略模式 把易於變化的行為分別封裝起來,讓它們之間可以互相替換, 讓這些行為的變化獨立於擁有這些行為的客戶。GoF《設計模式》中說道:定義一系列算法,把它們一個個封裝起來,並且使它們可以相互替換。該模式使得算
孿生兄弟狀態模式與策略模式有什麽區別,究竟該如何選擇
一段 如何解決 影片 工作 設置 飛機 等等 gety 兩種 都說狀態模式和策略模式很像,它們的 UML 類圖一樣。這也說明,單純從代碼角度來講,它們的本質一樣,其實都是多態的應用。但它們實際所代表的的事物特征是有本質區別的,選擇哪個設計模式,代表了你看待業務場景的角度。從
標準模式與混雜模式
DOCTYPE 的一個重要作用就是告訴瀏覽器,它該以何種模式呈現。 我們通過document.compatMode這個屬性來檢測,當前頁面處於何種模式: CSS1Compat:標準模式 BackCompat:混雜模式 那麼,問題來了,什麼情況下頁面會處於混雜模式呢?
JS正則表示式:量詞的貪婪模式與惰性模式的區別
在說明貪婪模式與惰性模式區別之前,說明一下JS正則基礎: 1.寫法法基礎: regexObj.test(str);例如/123/.test(‘123’); 2.基本語法 錨點:匹配一個位置 ^表示起始位置;/^a/.test(‘str’);表示是否以a開頭
單例模式與工廠模式
最近突然想起單例模式及工廠模式這兩個概念,特此整理了一下: 單例模式: 在某一個時刻 某個類只允許被建立一個。 public class single(){ 私有的無參構造方法 private single(){ } 建立私有靜態資源物件 private static s
Python 基礎學習之命令列模式與互動模式的區別
命令列模式:即在win10搜尋框中,直接跳出來的頁面。在此模式下,可以通過執行程式碼"python .py"執行.py檔案。需要注意的是,在此模式下,如果要執行的程式碼檔案不在當前目錄,需要使用cd進行切換,假設我的py檔案在E:\python\demo,那麼需要執行的程式碼指令是“cd /
建造者模式與原型模式
建造者模式與原型模式 一、建造者模式 建造者模式概述 建造者模式分離了物件子元件。子元件單獨構造(由Builder來負責)然後再裝配(由Director負責)。 從而可以構 造出複雜的物件。這個模式適用於:某個物件的構建過程複雜的情況下使用。
備忘錄模式與訪問者模式
備忘錄模式 Memento模式也叫備忘錄模式,是行為模式之一,它的作用是儲存物件(原生物件)的內部狀態到備忘錄,並在需要的時候通過caretaker(儲存了備忘錄)提取備忘錄的內容(undo/rollback)恢復原生物件以前的狀態。 角色及職責 Originator(原生者
責任鏈模式與策略模式
責任鏈模式 Chain of Responsibility(CoR)模式也叫職責鏈模式或者職責連鎖模式,是行為模式之一,該模式構造一系列分別擔當不同的職責的類的物件來共同完成一個任務,這些類的物件之間像鏈條一樣緊密相連,所以被稱作職責鏈模式。 例1:比如客戶Client要完成一個任務,
直譯器模式與狀態模式
直譯器模式 直譯器模式是行為型模式之一,描述瞭如何為簡單的語言定義一套語法,如何在該語言中表示一個句子,以及如何解釋這些句子,然後執行相應的動作和行為! 角色及職責 Context 直譯器上下文環境類。用來儲存直譯器的上下文環境,比如需要解釋的文法等。 AbstractExp
MVC模式與MVVM模式詳解
對於很多程式設計的初學者來說,MVC 的設計理念和 MVVM 的設計理念難以掌握,因為很多在初學階段的人,沒有經歷大型專案開發的經驗,更沒有對程式設計的工程化體系的發展及歷史進行過研究,更是少有人提及程式設計工程化的概念。 MVC模式 MVC設計模式的出現,在一定程度