Database-Design

如何將 ERD 中描述的實體類型表示為與屬性名稱的關係?

  • May 3, 2018

我創建瞭如下所示的實體關係圖(ERD)(為簡潔起見,每個單獨的氣泡形框都描繪了多個屬性):

ERD

考慮到這樣的 ERD,我必須那裡描述的每個實體類型關聯實體類型轉換為與其對應的屬性名稱的**關係,但我遇到了一些問題。

我通常表示如下關係:

  • X = (a, b, c)*

  • 其中X關係名稱,和是其屬性名稱a``b``c

然後,在我正在處理的業務領域中,aCourse依賴於零對多 (0:M) 其他Courses(如 ERD 中所示)。這意味著 aCourse應該以某種方式連接到Courses它所依賴的。

那麼,我如何將這種情況表示為(數學)關係

選項1

我嘗試了以下方法:

  • Course = (course_number, course_name, **course_dependencies?**)

選項 2

我認為可以用另一種方​​式描述所需的方面,例如:

  • Depends = (course_name)

然後

  • Course = (course_number, course_name, **depends**)

選項 3

但我想,也許,將元素安排如下:

  • Course = (course_number, course_name)
  • Depends = (course_name_depender, course_name_dependee)

這樣,被呼叫的關係中的每一對屬性名稱Depends代表了名為 的關係的兩次出現之間的關聯(或關係)Course

問題

這些選項中哪一個是正確的方法?也許有更好的方法?

考慮到您描述的Course實體類型,我做了以下假設:

  • 課程主要由其CourseNumber標識
  • 課程由其**名稱交替標識
  • 課程CreatedDateTime註冊

所以我把情況改寫如下:

  • 課程是零一或多課程依賴中的依賴
  • 課程是零一或多課程依賴的決定因素

然後,我認為:

  • CourseDependence主要由其DependentCourseNumberDeterminantCourseNumber**標識
  • CourseDependence在CreatedDateTime**註冊

是的,這意味著存在一個概念級別的多對多 (M:N) 關聯(或關係),它可能涉及實體類型的不同實例,稱為Course。這種關聯意味著存在關聯實體類型,如前所述,我將其命名為CourseDependence

因此,從上面描述的一組公式中,我得出瞭如圖 1所示的 IDEF1X 1圖:

圖 1 - 課程關聯 IDEF1X 圖

這樣,使用您用來表達關係的符號及其對應的屬性名稱,我將通過以下方式將 (a) Course實體類型和 (b) CourseDependence關聯實體類型表示為兩個不同的關係:

  • Course = (CourseNumber, Name, CreatedDateTime)
  • CourseDependence = (DependentCourseNumber, DeterminantCourseNumber, CreatedDateTime)

因此,您的問題中暴露的選項 3將非常接近表達相關方面的準確可能性。


尾註

1. 資訊建模集成定義( IDEF1X ) 是一種高度推薦的數據建模技術,於 1993 年 12 月由美國國家標準與技術研究院(NIST)確立為*標準。*它牢固地基於 (a) 由關係模型的唯一創始人,即EF Codd 博士撰寫的早期理論工作;(b)由PP Chen 博士開發的實體關係視圖;以及 (c) Robert G. Brown 創建的邏輯數據庫設計技術。

引用自:https://dba.stackexchange.com/questions/154898