iT邦幫忙

0

[學習日誌] ERD (Entity Relationship Diagram)

  • 分享至 

  • xImage
  •  

學習紀錄前言

其實原先是因為工作上有碰到要去了解一下 mariaDB, 但因為完全不熟悉就從 relational DB 開始看起, 結果輾轉看到了 ERD 這個東西... 想說那就留個紀錄好了, 於是就跑來 it 邦幫忙開了個新帳號, 開始寫記錄了, 總之, 很希望有一些夥伴能一起學習, 如果針對內容有誤的地方, 也歡迎討論

參考資料

甚麼是 ERD

ERD ( Entity Relationship diagram ) 常用於設計 relational DB 的資料,透過 ERD 可以看出兩個 entities 之間的關係
ERD 跟 data structure diagrams (DSDs) 息息相關, DSDs 關注於資料內本身的關聯, 而 ERD 則常用於表達資料流 (data flow diagrams (DFDs)),也就是系統對資料的操作

ERD 的用途

  • Database Design: 這應該是最主要的用途之一,ERD 可以協助 Dev 清楚繪製出資料流,以及資料間的關係
  • Database troubleshooting: 透過繪製 ERD,去找出既有設計上的問題或是可以改善的地方
  • Business information systems: 加入商業邏輯後,ERD 可以明確的表現出系統上的程序動作
  • Business process re-engineering (BPR): ERD 可以協助去重構資料結構和設計新的 model
  • Education/Research: 教育/研究會用到許多資料,ERD 可以協助這塊 (我個人是覺得這兩個用途是來混分的啦...)

ERD 內的 components 和 features

主要有四個部分: Entity, Relationship, Attribute, Cardinality

    1. Entity: 可以想成是一個名詞,用來去定義某個物件,譬如: 一個學生、一組顧客或幾輛車等等,通常會用長方形來表示
      https://ithelp.ithome.com.tw/upload/images/20240831/20168969371Xn1r1bP.png
    • Entity type: 代表這個 Entity 的類別,Entity 本身是獨立一筆資料,會有多個 Entities 為某個 Entity type

    • Entity set: 代表多個 Entity 的組合,如果 Entity 本身代表一個人,Entity set 可以說代表了一段時間內在公園裡的人

    • Entity categories: Entity 可以被定義為不同的 category, 譬如: Strong entity, Weak entity, Associative Entity等等

      • Strong entity: 可以獨立作為一個 Entity (有自己的唯一主鍵)
      • Weak entity: 不能獨立作為一個 Entity (依賴其他 Entity 的主鍵加上部分鍵(partical key))
      • associative entity: 透過其他主鍵組成的 Entity

      https://ithelp.ithome.com.tw/upload/images/20240831/20168969A9cGoMOm1k.png

    • Entity key: 這代表了 Entity 中的 key

      • Primary key(主鍵): 這個 Entity 的唯一識別碼,透過這個 key 可以找到唯一一個 Entity
      • Candidate Key(候選鍵): 同樣也是唯一識別碼,所以也可以透過這個 key 找到唯一一個 Entity,可以做為主鍵的所有 key 都是 Candidate key
      • Alternate Key(替代鍵): 不是 primary key 的 candidate key
      • Foreign key(外鍵): 指在其他 Entity 引用另一個 Entity 的 primary key,用來建立兩者之間的連結
      • Super Key(超鍵): 指可以透過這個 key 組合來找到 Entity, primary key 是最小的超鍵
    1. Relationship: 關係是 ERD 的核心概念之一,這描述/代表了一對一、一對多、多對多等等之間的行為,可以把關係視作為動詞,這或許對理解它有一些幫助
      https://ithelp.ithome.com.tw/upload/images/20240831/20168969MEKMRULFUD.png
    • Relationship 實體通常在 ERD 用菱形來表示,稱作 Relationship instance
    1. Attribute: Entity 裡的一個屬性 (A property or characteristic of an entity),譬如一個學生的電話,就是一個 attribute,通常用圓/橢圓形表示
      https://ithelp.ithome.com.tw/upload/images/20240831/20168969HSTy5YgmDb.png
    • Descriptive attribute: Relationship 中的 attribute
    • Attribute categories: attribute 的種類大致有幾種, simple, composite, derived 而 attribute 可以是 single-value 或 multi-value
      • simple: 代表一個不可拆分的 attribute
      • composite: 代表一個複合的 attribute,可以再被拆解,譬如地址,可以再細分為街/巷/號/樓
      • derived: 代表由 attribute 延伸出來,譬如有了生日,就可以算出 derived attribute (現在是幾歲)
      • single-value/ multi-value: 代表這個 attribute 是單/多個值
    1. Cardinality: 代表兩者之間的關係,通常來說有 one-to-one, one-to-many, many-to-many 幾種,以下附圖可以參考
      https://ithelp.ithome.com.tw/upload/images/20240831/20168969LHfFtftULS.png
    • Cardinality views: 可從方向去判斷其表示的意思 (附上原文,我有點不確定有沒有理解錯:Cardinality can be shown as look-across or same-side, depending on where the symbols are shown.)
    • Cardinality constraints: 指 cardinality 的對應數量

小結

ERD 基本的要素先寫到這邊,接下來下一篇會來記錄一下實際上在應用 ERD 是如何應用的,希望不要半途而廢
話說,GPT 一出來真的幫了不少忙,在看這篇的時候有一些地方受限於我的英文水平,實在不能明確理解它想要表達的意思,所以求助了一下 GPT 的幫忙,雖然有些內容我覺得有點怪,但確實很大幅度的增進了我的學習效率


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言