概念數據模型到邏輯數據模型的轉化(轉)


  前面的兩篇博客分別介紹了概念數據模型、邏輯數據模型以及物理數據模型和邏輯數據模型經常使用的三種數據模型,這篇博客介紹在數據庫的設計過程中將概念數據模型轉化為邏輯數據模型的方法,以及涉及的一些基本的概念。本篇文章所介紹的主要是針對關系數據庫中概念數據模型和邏輯數據模型之間的轉換。

  一、碼

  首先,說明一下數據庫中經常用到的用於標示一條記錄(元組)的碼的概念,碼又分為超碼、候選碼、主碼。

  超碼:在一個關系中,可以用來唯一標識一個元組的屬性的集合稱之為超碼。

  候選碼:在一個關系中,能夠用來唯一標識一個元組的最少屬性集合稱之為候選碼。

  主碼:在一個關系中,如果用來唯一標識一個元組的候選碼中只有一個屬性,則這個屬性稱之為主碼。

  三者之間的關系如下:超碼是候選碼的超集,候選碼是主碼的超集。下面以一個講解清楚。假設一個關於學生信息的表格student,其中的屬性有,stu_id(學號),name(姓名),age(年齡),address(地址)。那么超碼可以由所有的屬性組成的集合構成,例如(stu_id,name,age,adress)、(stu_id,name)、(stu_id,age)等都可以叫做student的超碼;候選碼為(stu_id);因為候選碼只是由其中的一個屬性組成,因此這個候選碼又可以稱之為主碼。

  二、概念數據模型到邏輯數據模型的轉化(以關系數據模型為例)

  前面博文討論過,概念數據模型是用E-R圖表示的,其中的三要素是實體、屬性、聯系。將概念數據模型轉化為邏輯數據模型的步驟其實就是將E-R圖中的各個部分轉化為邏輯數據模型中使用的具體數據模型的各個部分。如果沒有特別的交代,下面所說的邏輯數據模型指代的是關系數據模型。將概念數據模型轉化為邏輯數據模型的大體規則如下:概念數據模型中的實體轉化為邏輯數據模型中的關系,對應的實體的屬性轉化為關系數據模型關系的屬性(也就是列);根據實體之間聯系的不同具有不同的處置策略。

  實體之間的聯系分為1:1、1:n、和m:n。下面分別對這三種聯系轉化為關系的步驟做討論。

  1:1:這種關系是最好理解,同時也是最容易處理的關系。實體之間存在着一一對應的關系。在這種聯系中,可以創建新的關系描述這種聯系,這事將兩個實體的主碼作為新的關系的候選碼;當然也可以不必創建新的關系,將一方關系的主碼作為另一方關系的外鍵。例如兩個關系A和B存在1:1聯系,那么可以將A的主碼作為B的外鍵,同時將B的主碼作為A的外鍵,具體情況依據於具體的環境。以所做的紅包的小練習為例,注冊用戶和賬戶之間存在着1:1的聯系,用戶管理者賬戶。E-R圖如下:

                                         

                                                  圖 1 用戶與賬戶的E-R圖

  用戶與賬戶之間存在一一對應關系,但是創建賬戶的時候需要用戶已經存在,因此這種情況下需要將用戶的"uid"作為賬戶的外鍵,那么對應的關系如下:

                              

                                               圖 2 用戶和賬戶的關系

  因為,在這個例子中額外的創建關系會導致不必要的額外存儲空間的增加,因此不再重新創建額外的關系。

  1:n:一個實體可以對應額外的多個實體。這種聯系中可以不必創建額外的關系表示二者之間的1:n的聯系,此時只需要將“1”方的關系的主碼放入到“n”方的關系的屬性中作為其外鍵即可,同時將聯系的屬性加入到“n”方的關系中;當然也可以創建額外的關系表示二者之間的聯系,那么“1”和“n”方的關系的主碼作為候選碼,同時將聯系的屬性加入到新建立的關系中。但是,這種情況下額外的創建新的關系顯得冗余。還是以所練習的紅包項目為例,一個大的紅包根據指定的數值可以派生出很多的小紅包。這兩個實體分別對應着一個關系,其E-R圖如下:

                                   

                                                圖 3 小紅包的大紅包的E-R圖

  由圖3得知,小紅包必須依賴大紅包存在,因此在小紅包中將大紅包的bid作為小紅包的外鍵即可,這樣就不必建立額外的關系了。對應的關系如下:

               

                                              圖 4 大紅包和小紅包對應的關系

  m:n:對於這種多對多的聯系,必須建立新的關系以描述這種聯系。“聯系”對應的關系的屬性中至少包含他說關聯的雙方實體的“主鍵”,若聯系也有自身的屬性,那么該屬性一樣納入新建立的關系的屬性中。由於紅包項目中沒有遇到類似的聯系,因此以最經典的學生選課系統為例。很明顯學生選課系統中的實體對應有學生和課程,一個學生可以選修多門課程,一門可能可被多個學生選修,因此兩個實體之間是一種多對多的關系,對應的E-R圖如下:

                                       

                                             圖 5 學生與課程多對多關系圖 

                        

                                          圖 6 學生與課程對應關系

  在上例中,學生與課程之間存在着多對多的聯系,因此建立起新的選課關系來描述這種聯系。在新的關系中將學生的主碼和課程的主碼作為選課的候選碼,學生的主碼和選課的主碼的組合會出現在對應的選課關系中。如果此時要查詢一個學生的成績,需要使用聯合查詢的方式。

轉載自:https://blog.csdn.net/GDJ0001/article/details/80137399


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM